// 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  S3222C4_nt  {
  int s3222c4f0[2];
  void  mf3222c4(); // _ZN10S3222C4_nt8mf3222c4Ev
};
//SIG(-1 S3222C4_nt) C1{ m Fi[2]}


void  S3222C4_nt ::mf3222c4(){}

//skip512 S3222C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3222C4_nt[];
VTBL_ENTRY *P__ZTI10S3222C4_nt = _ZTI10S3222C4_nt; 
Class_Descriptor cd_S3222C4_nt = {  "S3222C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  8, // object size
  NSPAIRA(_ZTI10S3222C4_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  S3222C3_nt  {
  int s3222c3f0;
  __tsi64 s3222c3f1;
  void *s3222c3f2[4];
  int s3222c3f3[2];
  void *s3222c3f4;
  ::S3222C4_nt s3222c3f5;
  void *s3222c3f6[2];
  virtual  ~S3222C3_nt(); // _ZN10S3222C3_ntD1Ev
  virtual void  v4(); // _ZN10S3222C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3222C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3222C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3222C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3222C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3222C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3222C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3222C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3222C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3222C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3222C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3222C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3222C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3222C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3222C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3222C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3222C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3222C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3222C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3222C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3222C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3222C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3222C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3222C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3222C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3222C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3222C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3222C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3222C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3222C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3222C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3222C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3222C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3222C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3222C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3222C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3222C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3222C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3222C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3222C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3222C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3222C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3222C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3222C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3222C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3222C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3222C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3222C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3222C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3222C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3222C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3222C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3222C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3222C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3222C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3222C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3222C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3222C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3222C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3222C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3222C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3222C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3222C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3222C3_nt3v67Ev
  S3222C3_nt(); // tgen
};
//SIG(-1 S3222C3_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]}


 S3222C3_nt ::~S3222C3_nt(){ note_dtor("S3222C3_nt", this);}
void  S3222C3_nt ::v4(){vfunc_called(this, "_ZN10S3222C3_nt2v4Ev");}
void  S3222C3_nt ::v5(){vfunc_called(this, "_ZN10S3222C3_nt2v5Ev");}
void  S3222C3_nt ::v6(){vfunc_called(this, "_ZN10S3222C3_nt2v6Ev");}
void  S3222C3_nt ::v7(){vfunc_called(this, "_ZN10S3222C3_nt2v7Ev");}
void  S3222C3_nt ::v8(){vfunc_called(this, "_ZN10S3222C3_nt2v8Ev");}
void  S3222C3_nt ::v9(){vfunc_called(this, "_ZN10S3222C3_nt2v9Ev");}
void  S3222C3_nt ::v10(){vfunc_called(this, "_ZN10S3222C3_nt3v10Ev");}
void  S3222C3_nt ::v11(){vfunc_called(this, "_ZN10S3222C3_nt3v11Ev");}
void  S3222C3_nt ::v12(){vfunc_called(this, "_ZN10S3222C3_nt3v12Ev");}
void  S3222C3_nt ::v13(){vfunc_called(this, "_ZN10S3222C3_nt3v13Ev");}
void  S3222C3_nt ::v14(){vfunc_called(this, "_ZN10S3222C3_nt3v14Ev");}
void  S3222C3_nt ::v15(){vfunc_called(this, "_ZN10S3222C3_nt3v15Ev");}
void  S3222C3_nt ::v16(){vfunc_called(this, "_ZN10S3222C3_nt3v16Ev");}
void  S3222C3_nt ::v17(){vfunc_called(this, "_ZN10S3222C3_nt3v17Ev");}
void  S3222C3_nt ::v18(){vfunc_called(this, "_ZN10S3222C3_nt3v18Ev");}
void  S3222C3_nt ::v19(){vfunc_called(this, "_ZN10S3222C3_nt3v19Ev");}
void  S3222C3_nt ::v20(){vfunc_called(this, "_ZN10S3222C3_nt3v20Ev");}
void  S3222C3_nt ::v21(){vfunc_called(this, "_ZN10S3222C3_nt3v21Ev");}
void  S3222C3_nt ::v22(){vfunc_called(this, "_ZN10S3222C3_nt3v22Ev");}
void  S3222C3_nt ::v23(){vfunc_called(this, "_ZN10S3222C3_nt3v23Ev");}
void  S3222C3_nt ::v24(){vfunc_called(this, "_ZN10S3222C3_nt3v24Ev");}
void  S3222C3_nt ::v25(){vfunc_called(this, "_ZN10S3222C3_nt3v25Ev");}
void  S3222C3_nt ::v26(){vfunc_called(this, "_ZN10S3222C3_nt3v26Ev");}
void  S3222C3_nt ::v27(){vfunc_called(this, "_ZN10S3222C3_nt3v27Ev");}
void  S3222C3_nt ::v28(){vfunc_called(this, "_ZN10S3222C3_nt3v28Ev");}
void  S3222C3_nt ::v29(){vfunc_called(this, "_ZN10S3222C3_nt3v29Ev");}
void  S3222C3_nt ::v30(){vfunc_called(this, "_ZN10S3222C3_nt3v30Ev");}
void  S3222C3_nt ::v31(){vfunc_called(this, "_ZN10S3222C3_nt3v31Ev");}
void  S3222C3_nt ::v32(){vfunc_called(this, "_ZN10S3222C3_nt3v32Ev");}
void  S3222C3_nt ::v33(){vfunc_called(this, "_ZN10S3222C3_nt3v33Ev");}
void  S3222C3_nt ::v34(){vfunc_called(this, "_ZN10S3222C3_nt3v34Ev");}
void  S3222C3_nt ::v35(){vfunc_called(this, "_ZN10S3222C3_nt3v35Ev");}
void  S3222C3_nt ::v36(){vfunc_called(this, "_ZN10S3222C3_nt3v36Ev");}
void  S3222C3_nt ::v37(){vfunc_called(this, "_ZN10S3222C3_nt3v37Ev");}
void  S3222C3_nt ::v38(){vfunc_called(this, "_ZN10S3222C3_nt3v38Ev");}
void  S3222C3_nt ::v39(){vfunc_called(this, "_ZN10S3222C3_nt3v39Ev");}
void  S3222C3_nt ::v40(){vfunc_called(this, "_ZN10S3222C3_nt3v40Ev");}
void  S3222C3_nt ::v41(){vfunc_called(this, "_ZN10S3222C3_nt3v41Ev");}
void  S3222C3_nt ::v42(){vfunc_called(this, "_ZN10S3222C3_nt3v42Ev");}
void  S3222C3_nt ::v43(){vfunc_called(this, "_ZN10S3222C3_nt3v43Ev");}
void  S3222C3_nt ::v44(){vfunc_called(this, "_ZN10S3222C3_nt3v44Ev");}
void  S3222C3_nt ::v45(){vfunc_called(this, "_ZN10S3222C3_nt3v45Ev");}
void  S3222C3_nt ::v46(){vfunc_called(this, "_ZN10S3222C3_nt3v46Ev");}
void  S3222C3_nt ::v47(){vfunc_called(this, "_ZN10S3222C3_nt3v47Ev");}
void  S3222C3_nt ::v48(){vfunc_called(this, "_ZN10S3222C3_nt3v48Ev");}
void  S3222C3_nt ::v49(){vfunc_called(this, "_ZN10S3222C3_nt3v49Ev");}
void  S3222C3_nt ::v50(){vfunc_called(this, "_ZN10S3222C3_nt3v50Ev");}
void  S3222C3_nt ::v51(){vfunc_called(this, "_ZN10S3222C3_nt3v51Ev");}
void  S3222C3_nt ::v52(){vfunc_called(this, "_ZN10S3222C3_nt3v52Ev");}
void  S3222C3_nt ::v53(){vfunc_called(this, "_ZN10S3222C3_nt3v53Ev");}
void  S3222C3_nt ::v54(){vfunc_called(this, "_ZN10S3222C3_nt3v54Ev");}
void  S3222C3_nt ::v55(){vfunc_called(this, "_ZN10S3222C3_nt3v55Ev");}
void  S3222C3_nt ::v56(){vfunc_called(this, "_ZN10S3222C3_nt3v56Ev");}
void  S3222C3_nt ::v57(){vfunc_called(this, "_ZN10S3222C3_nt3v57Ev");}
void  S3222C3_nt ::v58(){vfunc_called(this, "_ZN10S3222C3_nt3v58Ev");}
void  S3222C3_nt ::v59(){vfunc_called(this, "_ZN10S3222C3_nt3v59Ev");}
void  S3222C3_nt ::v60(){vfunc_called(this, "_ZN10S3222C3_nt3v60Ev");}
void  S3222C3_nt ::v61(){vfunc_called(this, "_ZN10S3222C3_nt3v61Ev");}
void  S3222C3_nt ::v62(){vfunc_called(this, "_ZN10S3222C3_nt3v62Ev");}
void  S3222C3_nt ::v63(){vfunc_called(this, "_ZN10S3222C3_nt3v63Ev");}
void  S3222C3_nt ::v64(){vfunc_called(this, "_ZN10S3222C3_nt3v64Ev");}
void  S3222C3_nt ::v65(){vfunc_called(this, "_ZN10S3222C3_nt3v65Ev");}
void  S3222C3_nt ::v66(){vfunc_called(this, "_ZN10S3222C3_nt3v66Ev");}
void  S3222C3_nt ::v67(){vfunc_called(this, "_ZN10S3222C3_nt3v67Ev");}
S3222C3_nt ::S3222C3_nt(){ note_ctor("S3222C3_nt", this);} // tgen

//skip512 S3222C3_nt

#else // __cplusplus

extern void _ZN10S3222C3_ntC1Ev();
extern void _ZN10S3222C3_ntD1Ev();
Name_Map name_map_S3222C3_nt[] = {
  NSPAIR(_ZN10S3222C3_ntC1Ev),
  NSPAIR(_ZN10S3222C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3222C3_nt[];
extern void _ZN10S3222C3_ntD1Ev();
extern void _ZN10S3222C3_ntD0Ev();
extern void _ZN10S3222C3_nt2v4Ev();
extern void _ZN10S3222C3_nt2v5Ev();
extern void _ZN10S3222C3_nt2v6Ev();
extern void _ZN10S3222C3_nt2v7Ev();
extern void _ZN10S3222C3_nt2v8Ev();
extern void _ZN10S3222C3_nt2v9Ev();
extern void _ZN10S3222C3_nt3v10Ev();
extern void _ZN10S3222C3_nt3v11Ev();
extern void _ZN10S3222C3_nt3v12Ev();
extern void _ZN10S3222C3_nt3v13Ev();
extern void _ZN10S3222C3_nt3v14Ev();
extern void _ZN10S3222C3_nt3v15Ev();
extern void _ZN10S3222C3_nt3v16Ev();
extern void _ZN10S3222C3_nt3v17Ev();
extern void _ZN10S3222C3_nt3v18Ev();
extern void _ZN10S3222C3_nt3v19Ev();
extern void _ZN10S3222C3_nt3v20Ev();
extern void _ZN10S3222C3_nt3v21Ev();
extern void _ZN10S3222C3_nt3v22Ev();
extern void _ZN10S3222C3_nt3v23Ev();
extern void _ZN10S3222C3_nt3v24Ev();
extern void _ZN10S3222C3_nt3v25Ev();
extern void _ZN10S3222C3_nt3v26Ev();
extern void _ZN10S3222C3_nt3v27Ev();
extern void _ZN10S3222C3_nt3v28Ev();
extern void _ZN10S3222C3_nt3v29Ev();
extern void _ZN10S3222C3_nt3v30Ev();
extern void _ZN10S3222C3_nt3v31Ev();
extern void _ZN10S3222C3_nt3v32Ev();
extern void _ZN10S3222C3_nt3v33Ev();
extern void _ZN10S3222C3_nt3v34Ev();
extern void _ZN10S3222C3_nt3v35Ev();
extern void _ZN10S3222C3_nt3v36Ev();
extern void _ZN10S3222C3_nt3v37Ev();
extern void _ZN10S3222C3_nt3v38Ev();
extern void _ZN10S3222C3_nt3v39Ev();
extern void _ZN10S3222C3_nt3v40Ev();
extern void _ZN10S3222C3_nt3v41Ev();
extern void _ZN10S3222C3_nt3v42Ev();
extern void _ZN10S3222C3_nt3v43Ev();
extern void _ZN10S3222C3_nt3v44Ev();
extern void _ZN10S3222C3_nt3v45Ev();
extern void _ZN10S3222C3_nt3v46Ev();
extern void _ZN10S3222C3_nt3v47Ev();
extern void _ZN10S3222C3_nt3v48Ev();
extern void _ZN10S3222C3_nt3v49Ev();
extern void _ZN10S3222C3_nt3v50Ev();
extern void _ZN10S3222C3_nt3v51Ev();
extern void _ZN10S3222C3_nt3v52Ev();
extern void _ZN10S3222C3_nt3v53Ev();
extern void _ZN10S3222C3_nt3v54Ev();
extern void _ZN10S3222C3_nt3v55Ev();
extern void _ZN10S3222C3_nt3v56Ev();
extern void _ZN10S3222C3_nt3v57Ev();
extern void _ZN10S3222C3_nt3v58Ev();
extern void _ZN10S3222C3_nt3v59Ev();
extern void _ZN10S3222C3_nt3v60Ev();
extern void _ZN10S3222C3_nt3v61Ev();
extern void _ZN10S3222C3_nt3v62Ev();
extern void _ZN10S3222C3_nt3v63Ev();
extern void _ZN10S3222C3_nt3v64Ev();
extern void _ZN10S3222C3_nt3v65Ev();
extern void _ZN10S3222C3_nt3v66Ev();
extern void _ZN10S3222C3_nt3v67Ev();
static  VTBL_ENTRY vtc_S3222C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3222C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3222C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI10S3222C3_nt[];
VTBL_ENTRY *P__ZTI10S3222C3_nt = _ZTI10S3222C3_nt; 
extern  VTBL_ENTRY _ZTV10S3222C3_nt[];
Class_Descriptor cd_S3222C3_nt = {  "S3222C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3222C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3222C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3222C3_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  S3222C7_nt  {
  void *s3222c7f0;
  int s3222c7f1[2];
  void  mf3222c7(); // _ZN10S3222C7_nt8mf3222c7Ev
};
//SIG(-1 S3222C7_nt) C1{ m Fp Fi[2]}


void  S3222C7_nt ::mf3222c7(){}

//skip512 S3222C7_nt

#else // __cplusplus

Class_Descriptor cd_S3222C7_nt = {  "S3222C7_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  S3222C6_nt  : S3222C7_nt {
};
//SIG(-1 S3222C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3222C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
static Base_Class bases_S3222C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C6_nt = {  "S3222C6_nt", // class name
  bases_S3222C6_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  S3222C5_nt  : S3222C6_nt {
};
//SIG(-1 S3222C5_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S3222C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S3222C6_nt;
static Base_Class bases_S3222C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C6_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  S3222C8_nt  {
  int s3222c8f0;
  void  mf3222c8(); // _ZN10S3222C8_nt8mf3222c8Ev
};
//SIG(-1 S3222C8_nt) C1{ m Fi}


void  S3222C8_nt ::mf3222c8(){}

//skip512 S3222C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3222C8_nt[];
VTBL_ENTRY *P__ZTI10S3222C8_nt = _ZTI10S3222C8_nt; 
Class_Descriptor cd_S3222C8_nt = {  "S3222C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3222C8_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  S3222C12  : S3222C7_nt {
};
//SIG(-1 S3222C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3222C12()
{
  extern Class_Descriptor cd_S3222C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3222C12, buf);
    S3222C12 &lv = *(new (buf) S3222C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3222C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3222C12)");
    check_base_class_offset(lv, (S3222C7_nt*), 0, "S3222C12");
    test_class_info(&lv, &cd_S3222C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3222C12(Test_S3222C12, "S3222C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
static Base_Class bases_S3222C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C12 = {  "S3222C12", // class name
  bases_S3222C12, 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  S3222C11  : S3222C12 {
};
//SIG(-1 S3222C11) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3222C11()
{
  extern Class_Descriptor cd_S3222C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3222C11, buf);
    S3222C11 &lv = *(new (buf) S3222C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3222C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3222C11)");
    check_base_class_offset(lv, (S3222C7_nt*)(S3222C12*), 0, "S3222C11");
    check_base_class_offset(lv, (S3222C12*), 0, "S3222C11");
    test_class_info(&lv, &cd_S3222C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3222C11(Test_S3222C11, "S3222C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S3222C12;
static Base_Class bases_S3222C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C11 = {  "S3222C11", // class name
  bases_S3222C11, 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  S3222C13_nt  {
  int s3222c13f0[3];
  void  mf3222c13(); // _ZN11S3222C13_nt9mf3222c13Ev
};
//SIG(-1 S3222C13_nt) C1{ m Fi[3]}


void  S3222C13_nt ::mf3222c13(){}

//skip512 S3222C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3222C18  : S3222C7_nt {
};
//SIG(-1 S3222C18) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3222C18()
{
  extern Class_Descriptor cd_S3222C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3222C18, buf);
    S3222C18 &lv = *(new (buf) S3222C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3222C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3222C18)");
    check_base_class_offset(lv, (S3222C7_nt*), 0, "S3222C18");
    test_class_info(&lv, &cd_S3222C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3222C18(Test_S3222C18, "S3222C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
static Base_Class bases_S3222C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C18 = {  "S3222C18", // class name
  bases_S3222C18, 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  S3222C17  : S3222C18 {
};
//SIG(-1 S3222C17) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3222C17()
{
  extern Class_Descriptor cd_S3222C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3222C17, buf);
    S3222C17 &lv = *(new (buf) S3222C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3222C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3222C17)");
    check_base_class_offset(lv, (S3222C7_nt*)(S3222C18*), 0, "S3222C17");
    check_base_class_offset(lv, (S3222C18*), 0, "S3222C17");
    test_class_info(&lv, &cd_S3222C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3222C17(Test_S3222C17, "S3222C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S3222C18;
static Base_Class bases_S3222C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S3222C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C17 = {  "S3222C17", // class name
  bases_S3222C17, 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  S3222C2_nt  : S3222C3_nt {
  ::S3222C5_nt s3222c2f0;
  ::S3222C5_nt s3222c2f1;
  ::S3222C8_nt s3222c2f2;
  int s3222c2f3;
  char s3222c2f4[4];
  void *s3222c2f5[2];
  ::S3222C5_nt s3222c2f6;
  unsigned int s3222c2f7:1;
  unsigned int s3222c2f8:1;
  unsigned int s3222c2f9:1;
  unsigned int s3222c2f10:1;
  unsigned int s3222c2f11:1;
  unsigned int s3222c2f12:1;
  unsigned int s3222c2f13:1;
  unsigned int s3222c2f14:1;
  unsigned int s3222c2f15:1;
  unsigned int s3222c2f16:1;
  unsigned int s3222c2f17:1;
  unsigned int s3222c2f18:1;
  unsigned int s3222c2f19:1;
  unsigned int s3222c2f20:1;
  unsigned int s3222c2f21:1;
  unsigned int s3222c2f22:1;
  unsigned int s3222c2f23:1;
  unsigned int s3222c2f24:1;
  unsigned int s3222c2f25:1;
  unsigned int s3222c2f26:1;
  unsigned int s3222c2f27:1;
  unsigned int s3222c2f28:1;
  unsigned int s3222c2f29:1;
  unsigned int s3222c2f30:1;
  unsigned int s3222c2f31:1;
  unsigned int s3222c2f32:1;
  unsigned int s3222c2f33:1;
  unsigned int s3222c2f34:1;
  unsigned int s3222c2f35:1;
  unsigned int s3222c2f36:1;
  unsigned int s3222c2f37:1;
  unsigned int s3222c2f38:1;
  unsigned int s3222c2f39:1;
  unsigned int s3222c2f40:1;
  unsigned int s3222c2f41:1;
  unsigned int s3222c2f42:1;
  unsigned int s3222c2f43:1;
  unsigned int s3222c2f44:1;
  unsigned int s3222c2f45:1;
  unsigned int s3222c2f46:1;
  unsigned int s3222c2f47:1;
  unsigned int s3222c2f48:1;
  unsigned int s3222c2f49:1;
  unsigned int s3222c2f50:1;
  unsigned int s3222c2f51:1;
  unsigned int s3222c2f52:1;
  unsigned int s3222c2f53:1;
  unsigned int s3222c2f54:1;
  unsigned int s3222c2f55:1;
  unsigned int s3222c2f56:1;
  unsigned int s3222c2f57:1;
  unsigned int s3222c2f58:1;
  unsigned int s3222c2f59:1;
  unsigned int s3222c2f60:1;
  unsigned int s3222c2f61:1;
  unsigned int s3222c2f62:1;
  unsigned int s3222c2f63:1;
  unsigned int s3222c2f64:1;
  unsigned int s3222c2f65:1;
  unsigned int s3222c2f66:1;
  unsigned int s3222c2f67:1;
  unsigned int s3222c2f68:1;
  unsigned int s3222c2f69:1;
  unsigned int s3222c2f70:1;
  unsigned int s3222c2f71:1;
  unsigned int s3222c2f72:1;
  unsigned int s3222c2f73:1;
  unsigned int s3222c2f74:1;
  unsigned int s3222c2f75:1;
  unsigned int s3222c2f76:1;
  unsigned int s3222c2f77:1;
  unsigned int s3222c2f78:1;
  unsigned int s3222c2f79:1;
  unsigned int s3222c2f80:1;
  unsigned int s3222c2f81:1;
  unsigned int s3222c2f82:1;
  unsigned int s3222c2f83:1;
  int s3222c2f84[5];
  void *s3222c2f85[2];
  int s3222c2f86[3];
  ::S3222C4_nt s3222c2f87;
  ::S3222C4_nt s3222c2f88;
  ::S3222C4_nt s3222c2f89;
  ::S3222C11 s3222c2f90;
  ::S3222C11 s3222c2f91;
  int s3222c2f92;
  void *s3222c2f93[2];
  ::S3222C13_nt s3222c2f94;
  ::S3222C13_nt s3222c2f95;
  ::S3222C13_nt s3222c2f96;
  ::S3222C13_nt s3222c2f97;
  void *s3222c2f98;
  ::S3222C4_nt s3222c2f99;
  ::S3222C11 s3222c2f100;
  ::S3222C13_nt s3222c2f101;
  ::S3222C13_nt s3222c2f102;
  int s3222c2f103;
  ::S3222C13_nt s3222c2f104;
  ::S3222C13_nt s3222c2f105;
  void *s3222c2f106;
  int s3222c2f107;
  char s3222c2f108;
  ::S3222C13_nt s3222c2f109;
  ::S3222C13_nt s3222c2f110;
  void *s3222c2f111;
  int s3222c2f112;
  void *s3222c2f113;
  ::S3222C11 s3222c2f114;
  ::S3222C17 s3222c2f115;
  ::S3222C17 s3222c2f116;
  virtual  ~S3222C2_nt(); // _ZN10S3222C2_ntD1Ev
  virtual void  v68(); // _ZN10S3222C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3222C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3222C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3222C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3222C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3222C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3222C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3222C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3222C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3222C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3222C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3222C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3222C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3222C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3222C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3222C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3222C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3222C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3222C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3222C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3222C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3222C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3222C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3222C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3222C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3222C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3222C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3222C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3222C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3222C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3222C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3222C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3222C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3222C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3222C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3222C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3222C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3222C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3222C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3222C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3222C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3222C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3222C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3222C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3222C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3222C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3222C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3222C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3222C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3222C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3222C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3222C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3222C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3222C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3222C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3222C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3222C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3222C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3222C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3222C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3222C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3222C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3222C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3222C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3222C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3222C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3222C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3222C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3222C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3222C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3222C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3222C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3222C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3222C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3222C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3222C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3222C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3222C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3222C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3222C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3222C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3222C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3222C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3222C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3222C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3222C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3222C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3222C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3222C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3222C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3222C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3222C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3222C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3222C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3222C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3222C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3222C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3222C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3222C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3222C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3222C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3222C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3222C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3222C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3222C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3222C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3222C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3222C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3222C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3222C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3222C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3222C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3222C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3222C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3222C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3222C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3222C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3222C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3222C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3222C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3222C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3222C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3222C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3222C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3222C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3222C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3222C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3222C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3222C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3222C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3222C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3222C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3222C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3222C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3222C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3222C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3222C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3222C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3222C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3222C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3222C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3222C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3222C2_nt4v210Ev
  S3222C2_nt(); // tgen
};
//SIG(-1 S3222C2_nt) C1{ BC2{ vd 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 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} 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 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 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC4 FC7{ m Fi} Fi Fc[4] Fp[2] FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC3 FC3 FC3 FC8{ BC9{ BC6}} FC8 Fi Fp[2] FC10{ m Fi[3]} FC10 FC10 FC10 Fp FC3 FC8 FC10 FC10 Fi FC10 FC10 Fp Fi Fc FC10 FC10 Fp Fi Fp FC8 FC11{ BC12{ BC6}} FC11}


 S3222C2_nt ::~S3222C2_nt(){ note_dtor("S3222C2_nt", this);}
void  S3222C2_nt ::v68(){vfunc_called(this, "_ZN10S3222C2_nt3v68Ev");}
void  S3222C2_nt ::v69(){vfunc_called(this, "_ZN10S3222C2_nt3v69Ev");}
void  S3222C2_nt ::v70(){vfunc_called(this, "_ZN10S3222C2_nt3v70Ev");}
void  S3222C2_nt ::v71(){vfunc_called(this, "_ZN10S3222C2_nt3v71Ev");}
void  S3222C2_nt ::v72(){vfunc_called(this, "_ZN10S3222C2_nt3v72Ev");}
void  S3222C2_nt ::v73(){vfunc_called(this, "_ZN10S3222C2_nt3v73Ev");}
void  S3222C2_nt ::v74(){vfunc_called(this, "_ZN10S3222C2_nt3v74Ev");}
void  S3222C2_nt ::v75(){vfunc_called(this, "_ZN10S3222C2_nt3v75Ev");}
void  S3222C2_nt ::v76(){vfunc_called(this, "_ZN10S3222C2_nt3v76Ev");}
void  S3222C2_nt ::v77(){vfunc_called(this, "_ZN10S3222C2_nt3v77Ev");}
void  S3222C2_nt ::v78(){vfunc_called(this, "_ZN10S3222C2_nt3v78Ev");}
void  S3222C2_nt ::v79(){vfunc_called(this, "_ZN10S3222C2_nt3v79Ev");}
void  S3222C2_nt ::v80(){vfunc_called(this, "_ZN10S3222C2_nt3v80Ev");}
void  S3222C2_nt ::v81(){vfunc_called(this, "_ZN10S3222C2_nt3v81Ev");}
void  S3222C2_nt ::v82(){vfunc_called(this, "_ZN10S3222C2_nt3v82Ev");}
void  S3222C2_nt ::v83(){vfunc_called(this, "_ZN10S3222C2_nt3v83Ev");}
void  S3222C2_nt ::v84(){vfunc_called(this, "_ZN10S3222C2_nt3v84Ev");}
void  S3222C2_nt ::v85(){vfunc_called(this, "_ZN10S3222C2_nt3v85Ev");}
void  S3222C2_nt ::v86(){vfunc_called(this, "_ZN10S3222C2_nt3v86Ev");}
void  S3222C2_nt ::v87(){vfunc_called(this, "_ZN10S3222C2_nt3v87Ev");}
void  S3222C2_nt ::v88(){vfunc_called(this, "_ZN10S3222C2_nt3v88Ev");}
void  S3222C2_nt ::v89(){vfunc_called(this, "_ZN10S3222C2_nt3v89Ev");}
void  S3222C2_nt ::v90(){vfunc_called(this, "_ZN10S3222C2_nt3v90Ev");}
void  S3222C2_nt ::v91(){vfunc_called(this, "_ZN10S3222C2_nt3v91Ev");}
void  S3222C2_nt ::v92(){vfunc_called(this, "_ZN10S3222C2_nt3v92Ev");}
void  S3222C2_nt ::v93(){vfunc_called(this, "_ZN10S3222C2_nt3v93Ev");}
void  S3222C2_nt ::v94(){vfunc_called(this, "_ZN10S3222C2_nt3v94Ev");}
void  S3222C2_nt ::v95(){vfunc_called(this, "_ZN10S3222C2_nt3v95Ev");}
void  S3222C2_nt ::v96(){vfunc_called(this, "_ZN10S3222C2_nt3v96Ev");}
void  S3222C2_nt ::v97(){vfunc_called(this, "_ZN10S3222C2_nt3v97Ev");}
void  S3222C2_nt ::v98(){vfunc_called(this, "_ZN10S3222C2_nt3v98Ev");}
void  S3222C2_nt ::v99(){vfunc_called(this, "_ZN10S3222C2_nt3v99Ev");}
void  S3222C2_nt ::v100(){vfunc_called(this, "_ZN10S3222C2_nt4v100Ev");}
void  S3222C2_nt ::v101(){vfunc_called(this, "_ZN10S3222C2_nt4v101Ev");}
void  S3222C2_nt ::v102(){vfunc_called(this, "_ZN10S3222C2_nt4v102Ev");}
void  S3222C2_nt ::v103(){vfunc_called(this, "_ZN10S3222C2_nt4v103Ev");}
void  S3222C2_nt ::v104(){vfunc_called(this, "_ZN10S3222C2_nt4v104Ev");}
void  S3222C2_nt ::v105(){vfunc_called(this, "_ZN10S3222C2_nt4v105Ev");}
void  S3222C2_nt ::v106(){vfunc_called(this, "_ZN10S3222C2_nt4v106Ev");}
void  S3222C2_nt ::v107(){vfunc_called(this, "_ZN10S3222C2_nt4v107Ev");}
void  S3222C2_nt ::v108(){vfunc_called(this, "_ZN10S3222C2_nt4v108Ev");}
void  S3222C2_nt ::v109(){vfunc_called(this, "_ZN10S3222C2_nt4v109Ev");}
void  S3222C2_nt ::v110(){vfunc_called(this, "_ZN10S3222C2_nt4v110Ev");}
void  S3222C2_nt ::v111(){vfunc_called(this, "_ZN10S3222C2_nt4v111Ev");}
void  S3222C2_nt ::v112(){vfunc_called(this, "_ZN10S3222C2_nt4v112Ev");}
void  S3222C2_nt ::v113(){vfunc_called(this, "_ZN10S3222C2_nt4v113Ev");}
void  S3222C2_nt ::v114(){vfunc_called(this, "_ZN10S3222C2_nt4v114Ev");}
void  S3222C2_nt ::v115(){vfunc_called(this, "_ZN10S3222C2_nt4v115Ev");}
void  S3222C2_nt ::v116(){vfunc_called(this, "_ZN10S3222C2_nt4v116Ev");}
void  S3222C2_nt ::v117(){vfunc_called(this, "_ZN10S3222C2_nt4v117Ev");}
void  S3222C2_nt ::v118(){vfunc_called(this, "_ZN10S3222C2_nt4v118Ev");}
void  S3222C2_nt ::v119(){vfunc_called(this, "_ZN10S3222C2_nt4v119Ev");}
void  S3222C2_nt ::v120(){vfunc_called(this, "_ZN10S3222C2_nt4v120Ev");}
void  S3222C2_nt ::v121(){vfunc_called(this, "_ZN10S3222C2_nt4v121Ev");}
void  S3222C2_nt ::v122(){vfunc_called(this, "_ZN10S3222C2_nt4v122Ev");}
void  S3222C2_nt ::v123(){vfunc_called(this, "_ZN10S3222C2_nt4v123Ev");}
void  S3222C2_nt ::v124(){vfunc_called(this, "_ZN10S3222C2_nt4v124Ev");}
void  S3222C2_nt ::v125(){vfunc_called(this, "_ZN10S3222C2_nt4v125Ev");}
void  S3222C2_nt ::v126(){vfunc_called(this, "_ZN10S3222C2_nt4v126Ev");}
void  S3222C2_nt ::v127(){vfunc_called(this, "_ZN10S3222C2_nt4v127Ev");}
void  S3222C2_nt ::v128(){vfunc_called(this, "_ZN10S3222C2_nt4v128Ev");}
void  S3222C2_nt ::v129(){vfunc_called(this, "_ZN10S3222C2_nt4v129Ev");}
void  S3222C2_nt ::v130(){vfunc_called(this, "_ZN10S3222C2_nt4v130Ev");}
void  S3222C2_nt ::v131(){vfunc_called(this, "_ZN10S3222C2_nt4v131Ev");}
void  S3222C2_nt ::v132(){vfunc_called(this, "_ZN10S3222C2_nt4v132Ev");}
void  S3222C2_nt ::v133(){vfunc_called(this, "_ZN10S3222C2_nt4v133Ev");}
void  S3222C2_nt ::v134(){vfunc_called(this, "_ZN10S3222C2_nt4v134Ev");}
void  S3222C2_nt ::v135(){vfunc_called(this, "_ZN10S3222C2_nt4v135Ev");}
void  S3222C2_nt ::v136(){vfunc_called(this, "_ZN10S3222C2_nt4v136Ev");}
void  S3222C2_nt ::v137(){vfunc_called(this, "_ZN10S3222C2_nt4v137Ev");}
void  S3222C2_nt ::v138(){vfunc_called(this, "_ZN10S3222C2_nt4v138Ev");}
void  S3222C2_nt ::v139(){vfunc_called(this, "_ZN10S3222C2_nt4v139Ev");}
void  S3222C2_nt ::v140(){vfunc_called(this, "_ZN10S3222C2_nt4v140Ev");}
void  S3222C2_nt ::v141(){vfunc_called(this, "_ZN10S3222C2_nt4v141Ev");}
void  S3222C2_nt ::v142(){vfunc_called(this, "_ZN10S3222C2_nt4v142Ev");}
void  S3222C2_nt ::v143(){vfunc_called(this, "_ZN10S3222C2_nt4v143Ev");}
void  S3222C2_nt ::v144(){vfunc_called(this, "_ZN10S3222C2_nt4v144Ev");}
void  S3222C2_nt ::v145(){vfunc_called(this, "_ZN10S3222C2_nt4v145Ev");}
void  S3222C2_nt ::v146(){vfunc_called(this, "_ZN10S3222C2_nt4v146Ev");}
void  S3222C2_nt ::v147(){vfunc_called(this, "_ZN10S3222C2_nt4v147Ev");}
void  S3222C2_nt ::v148(){vfunc_called(this, "_ZN10S3222C2_nt4v148Ev");}
void  S3222C2_nt ::v149(){vfunc_called(this, "_ZN10S3222C2_nt4v149Ev");}
void  S3222C2_nt ::v150(){vfunc_called(this, "_ZN10S3222C2_nt4v150Ev");}
void  S3222C2_nt ::v151(){vfunc_called(this, "_ZN10S3222C2_nt4v151Ev");}
void  S3222C2_nt ::v152(){vfunc_called(this, "_ZN10S3222C2_nt4v152Ev");}
void  S3222C2_nt ::v153(){vfunc_called(this, "_ZN10S3222C2_nt4v153Ev");}
void  S3222C2_nt ::v154(){vfunc_called(this, "_ZN10S3222C2_nt4v154Ev");}
void  S3222C2_nt ::v155(){vfunc_called(this, "_ZN10S3222C2_nt4v155Ev");}
void  S3222C2_nt ::v156(){vfunc_called(this, "_ZN10S3222C2_nt4v156Ev");}
void  S3222C2_nt ::v157(){vfunc_called(this, "_ZN10S3222C2_nt4v157Ev");}
void  S3222C2_nt ::v158(){vfunc_called(this, "_ZN10S3222C2_nt4v158Ev");}
void  S3222C2_nt ::v159(){vfunc_called(this, "_ZN10S3222C2_nt4v159Ev");}
void  S3222C2_nt ::v160(){vfunc_called(this, "_ZN10S3222C2_nt4v160Ev");}
void  S3222C2_nt ::v161(){vfunc_called(this, "_ZN10S3222C2_nt4v161Ev");}
void  S3222C2_nt ::v162(){vfunc_called(this, "_ZN10S3222C2_nt4v162Ev");}
void  S3222C2_nt ::v163(){vfunc_called(this, "_ZN10S3222C2_nt4v163Ev");}
void  S3222C2_nt ::v164(){vfunc_called(this, "_ZN10S3222C2_nt4v164Ev");}
void  S3222C2_nt ::v165(){vfunc_called(this, "_ZN10S3222C2_nt4v165Ev");}
void  S3222C2_nt ::v166(){vfunc_called(this, "_ZN10S3222C2_nt4v166Ev");}
void  S3222C2_nt ::v167(){vfunc_called(this, "_ZN10S3222C2_nt4v167Ev");}
void  S3222C2_nt ::v168(){vfunc_called(this, "_ZN10S3222C2_nt4v168Ev");}
void  S3222C2_nt ::v169(){vfunc_called(this, "_ZN10S3222C2_nt4v169Ev");}
void  S3222C2_nt ::v170(){vfunc_called(this, "_ZN10S3222C2_nt4v170Ev");}
void  S3222C2_nt ::v171(){vfunc_called(this, "_ZN10S3222C2_nt4v171Ev");}
void  S3222C2_nt ::v172(){vfunc_called(this, "_ZN10S3222C2_nt4v172Ev");}
void  S3222C2_nt ::v173(){vfunc_called(this, "_ZN10S3222C2_nt4v173Ev");}
void  S3222C2_nt ::v174(){vfunc_called(this, "_ZN10S3222C2_nt4v174Ev");}
void  S3222C2_nt ::v175(){vfunc_called(this, "_ZN10S3222C2_nt4v175Ev");}
void  S3222C2_nt ::v176(){vfunc_called(this, "_ZN10S3222C2_nt4v176Ev");}
void  S3222C2_nt ::v177(){vfunc_called(this, "_ZN10S3222C2_nt4v177Ev");}
void  S3222C2_nt ::v178(){vfunc_called(this, "_ZN10S3222C2_nt4v178Ev");}
void  S3222C2_nt ::v179(){vfunc_called(this, "_ZN10S3222C2_nt4v179Ev");}
void  S3222C2_nt ::v180(){vfunc_called(this, "_ZN10S3222C2_nt4v180Ev");}
void  S3222C2_nt ::v181(){vfunc_called(this, "_ZN10S3222C2_nt4v181Ev");}
void  S3222C2_nt ::v182(){vfunc_called(this, "_ZN10S3222C2_nt4v182Ev");}
void  S3222C2_nt ::v183(){vfunc_called(this, "_ZN10S3222C2_nt4v183Ev");}
void  S3222C2_nt ::v184(){vfunc_called(this, "_ZN10S3222C2_nt4v184Ev");}
void  S3222C2_nt ::v185(){vfunc_called(this, "_ZN10S3222C2_nt4v185Ev");}
void  S3222C2_nt ::v186(){vfunc_called(this, "_ZN10S3222C2_nt4v186Ev");}
void  S3222C2_nt ::v187(){vfunc_called(this, "_ZN10S3222C2_nt4v187Ev");}
void  S3222C2_nt ::v188(){vfunc_called(this, "_ZN10S3222C2_nt4v188Ev");}
void  S3222C2_nt ::v189(){vfunc_called(this, "_ZN10S3222C2_nt4v189Ev");}
void  S3222C2_nt ::v190(){vfunc_called(this, "_ZN10S3222C2_nt4v190Ev");}
void  S3222C2_nt ::v191(){vfunc_called(this, "_ZN10S3222C2_nt4v191Ev");}
void  S3222C2_nt ::v192(){vfunc_called(this, "_ZN10S3222C2_nt4v192Ev");}
void  S3222C2_nt ::v193(){vfunc_called(this, "_ZN10S3222C2_nt4v193Ev");}
void  S3222C2_nt ::v194(){vfunc_called(this, "_ZN10S3222C2_nt4v194Ev");}
void  S3222C2_nt ::v195(){vfunc_called(this, "_ZN10S3222C2_nt4v195Ev");}
void  S3222C2_nt ::v196(){vfunc_called(this, "_ZN10S3222C2_nt4v196Ev");}
void  S3222C2_nt ::v197(){vfunc_called(this, "_ZN10S3222C2_nt4v197Ev");}
void  S3222C2_nt ::v198(){vfunc_called(this, "_ZN10S3222C2_nt4v198Ev");}
void  S3222C2_nt ::v199(){vfunc_called(this, "_ZN10S3222C2_nt4v199Ev");}
void  S3222C2_nt ::v200(){vfunc_called(this, "_ZN10S3222C2_nt4v200Ev");}
void  S3222C2_nt ::v201(){vfunc_called(this, "_ZN10S3222C2_nt4v201Ev");}
void  S3222C2_nt ::v202(){vfunc_called(this, "_ZN10S3222C2_nt4v202Ev");}
void  S3222C2_nt ::v203(){vfunc_called(this, "_ZN10S3222C2_nt4v203Ev");}
void  S3222C2_nt ::v204(){vfunc_called(this, "_ZN10S3222C2_nt4v204Ev");}
void  S3222C2_nt ::v205(){vfunc_called(this, "_ZN10S3222C2_nt4v205Ev");}
void  S3222C2_nt ::v206(){vfunc_called(this, "_ZN10S3222C2_nt4v206Ev");}
void  S3222C2_nt ::v207(){vfunc_called(this, "_ZN10S3222C2_nt4v207Ev");}
void  S3222C2_nt ::v208(){vfunc_called(this, "_ZN10S3222C2_nt4v208Ev");}
void  S3222C2_nt ::v209(){vfunc_called(this, "_ZN10S3222C2_nt4v209Ev");}
void  S3222C2_nt ::v210(){vfunc_called(this, "_ZN10S3222C2_nt4v210Ev");}
S3222C2_nt ::S3222C2_nt(){ note_ctor("S3222C2_nt", this);} // tgen

//skip512 S3222C2_nt

#else // __cplusplus

extern void _ZN10S3222C2_ntC1Ev();
extern void _ZN10S3222C2_ntD1Ev();
Name_Map name_map_S3222C2_nt[] = {
  NSPAIR(_ZN10S3222C2_ntC1Ev),
  NSPAIR(_ZN10S3222C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3222C3_nt;
extern VTBL_ENTRY _ZTI10S3222C3_nt[];
extern  VTBL_ENTRY _ZTV10S3222C3_nt[];
static Base_Class bases_S3222C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C3_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 _ZTI10S3222C2_nt[];
extern void _ZN10S3222C2_ntD1Ev();
extern void _ZN10S3222C2_ntD0Ev();
extern void _ZN10S3222C3_nt2v4Ev();
extern void _ZN10S3222C3_nt2v5Ev();
extern void _ZN10S3222C3_nt2v6Ev();
extern void _ZN10S3222C3_nt2v7Ev();
extern void _ZN10S3222C3_nt2v8Ev();
extern void _ZN10S3222C3_nt2v9Ev();
extern void _ZN10S3222C3_nt3v10Ev();
extern void _ZN10S3222C3_nt3v11Ev();
extern void _ZN10S3222C3_nt3v12Ev();
extern void _ZN10S3222C3_nt3v13Ev();
extern void _ZN10S3222C3_nt3v14Ev();
extern void _ZN10S3222C3_nt3v15Ev();
extern void _ZN10S3222C3_nt3v16Ev();
extern void _ZN10S3222C3_nt3v17Ev();
extern void _ZN10S3222C3_nt3v18Ev();
extern void _ZN10S3222C3_nt3v19Ev();
extern void _ZN10S3222C3_nt3v20Ev();
extern void _ZN10S3222C3_nt3v21Ev();
extern void _ZN10S3222C3_nt3v22Ev();
extern void _ZN10S3222C3_nt3v23Ev();
extern void _ZN10S3222C3_nt3v24Ev();
extern void _ZN10S3222C3_nt3v25Ev();
extern void _ZN10S3222C3_nt3v26Ev();
extern void _ZN10S3222C3_nt3v27Ev();
extern void _ZN10S3222C3_nt3v28Ev();
extern void _ZN10S3222C3_nt3v29Ev();
extern void _ZN10S3222C3_nt3v30Ev();
extern void _ZN10S3222C3_nt3v31Ev();
extern void _ZN10S3222C3_nt3v32Ev();
extern void _ZN10S3222C3_nt3v33Ev();
extern void _ZN10S3222C3_nt3v34Ev();
extern void _ZN10S3222C3_nt3v35Ev();
extern void _ZN10S3222C3_nt3v36Ev();
extern void _ZN10S3222C3_nt3v37Ev();
extern void _ZN10S3222C3_nt3v38Ev();
extern void _ZN10S3222C3_nt3v39Ev();
extern void _ZN10S3222C3_nt3v40Ev();
extern void _ZN10S3222C3_nt3v41Ev();
extern void _ZN10S3222C3_nt3v42Ev();
extern void _ZN10S3222C3_nt3v43Ev();
extern void _ZN10S3222C3_nt3v44Ev();
extern void _ZN10S3222C3_nt3v45Ev();
extern void _ZN10S3222C3_nt3v46Ev();
extern void _ZN10S3222C3_nt3v47Ev();
extern void _ZN10S3222C3_nt3v48Ev();
extern void _ZN10S3222C3_nt3v49Ev();
extern void _ZN10S3222C3_nt3v50Ev();
extern void _ZN10S3222C3_nt3v51Ev();
extern void _ZN10S3222C3_nt3v52Ev();
extern void _ZN10S3222C3_nt3v53Ev();
extern void _ZN10S3222C3_nt3v54Ev();
extern void _ZN10S3222C3_nt3v55Ev();
extern void _ZN10S3222C3_nt3v56Ev();
extern void _ZN10S3222C3_nt3v57Ev();
extern void _ZN10S3222C3_nt3v58Ev();
extern void _ZN10S3222C3_nt3v59Ev();
extern void _ZN10S3222C3_nt3v60Ev();
extern void _ZN10S3222C3_nt3v61Ev();
extern void _ZN10S3222C3_nt3v62Ev();
extern void _ZN10S3222C3_nt3v63Ev();
extern void _ZN10S3222C3_nt3v64Ev();
extern void _ZN10S3222C3_nt3v65Ev();
extern void _ZN10S3222C3_nt3v66Ev();
extern void _ZN10S3222C3_nt3v67Ev();
extern void _ZN10S3222C2_nt3v68Ev();
extern void _ZN10S3222C2_nt3v69Ev();
extern void _ZN10S3222C2_nt3v70Ev();
extern void _ZN10S3222C2_nt3v71Ev();
extern void _ZN10S3222C2_nt3v72Ev();
extern void _ZN10S3222C2_nt3v73Ev();
extern void _ZN10S3222C2_nt3v74Ev();
extern void _ZN10S3222C2_nt3v75Ev();
extern void _ZN10S3222C2_nt3v76Ev();
extern void _ZN10S3222C2_nt3v77Ev();
extern void _ZN10S3222C2_nt3v78Ev();
extern void _ZN10S3222C2_nt3v79Ev();
extern void _ZN10S3222C2_nt3v80Ev();
extern void _ZN10S3222C2_nt3v81Ev();
extern void _ZN10S3222C2_nt3v82Ev();
extern void _ZN10S3222C2_nt3v83Ev();
extern void _ZN10S3222C2_nt3v84Ev();
extern void _ZN10S3222C2_nt3v85Ev();
extern void _ZN10S3222C2_nt3v86Ev();
extern void _ZN10S3222C2_nt3v87Ev();
extern void _ZN10S3222C2_nt3v88Ev();
extern void _ZN10S3222C2_nt3v89Ev();
extern void _ZN10S3222C2_nt3v90Ev();
extern void _ZN10S3222C2_nt3v91Ev();
extern void _ZN10S3222C2_nt3v92Ev();
extern void _ZN10S3222C2_nt3v93Ev();
extern void _ZN10S3222C2_nt3v94Ev();
extern void _ZN10S3222C2_nt3v95Ev();
extern void _ZN10S3222C2_nt3v96Ev();
extern void _ZN10S3222C2_nt3v97Ev();
extern void _ZN10S3222C2_nt3v98Ev();
extern void _ZN10S3222C2_nt3v99Ev();
extern void _ZN10S3222C2_nt4v100Ev();
extern void _ZN10S3222C2_nt4v101Ev();
extern void _ZN10S3222C2_nt4v102Ev();
extern void _ZN10S3222C2_nt4v103Ev();
extern void _ZN10S3222C2_nt4v104Ev();
extern void _ZN10S3222C2_nt4v105Ev();
extern void _ZN10S3222C2_nt4v106Ev();
extern void _ZN10S3222C2_nt4v107Ev();
extern void _ZN10S3222C2_nt4v108Ev();
extern void _ZN10S3222C2_nt4v109Ev();
extern void _ZN10S3222C2_nt4v110Ev();
extern void _ZN10S3222C2_nt4v111Ev();
extern void _ZN10S3222C2_nt4v112Ev();
extern void _ZN10S3222C2_nt4v113Ev();
extern void _ZN10S3222C2_nt4v114Ev();
extern void _ZN10S3222C2_nt4v115Ev();
extern void _ZN10S3222C2_nt4v116Ev();
extern void _ZN10S3222C2_nt4v117Ev();
extern void _ZN10S3222C2_nt4v118Ev();
extern void _ZN10S3222C2_nt4v119Ev();
extern void _ZN10S3222C2_nt4v120Ev();
extern void _ZN10S3222C2_nt4v121Ev();
extern void _ZN10S3222C2_nt4v122Ev();
extern void _ZN10S3222C2_nt4v123Ev();
extern void _ZN10S3222C2_nt4v124Ev();
extern void _ZN10S3222C2_nt4v125Ev();
extern void _ZN10S3222C2_nt4v126Ev();
extern void _ZN10S3222C2_nt4v127Ev();
extern void _ZN10S3222C2_nt4v128Ev();
extern void _ZN10S3222C2_nt4v129Ev();
extern void _ZN10S3222C2_nt4v130Ev();
extern void _ZN10S3222C2_nt4v131Ev();
extern void _ZN10S3222C2_nt4v132Ev();
extern void _ZN10S3222C2_nt4v133Ev();
extern void _ZN10S3222C2_nt4v134Ev();
extern void _ZN10S3222C2_nt4v135Ev();
extern void _ZN10S3222C2_nt4v136Ev();
extern void _ZN10S3222C2_nt4v137Ev();
extern void _ZN10S3222C2_nt4v138Ev();
extern void _ZN10S3222C2_nt4v139Ev();
extern void _ZN10S3222C2_nt4v140Ev();
extern void _ZN10S3222C2_nt4v141Ev();
extern void _ZN10S3222C2_nt4v142Ev();
extern void _ZN10S3222C2_nt4v143Ev();
extern void _ZN10S3222C2_nt4v144Ev();
extern void _ZN10S3222C2_nt4v145Ev();
extern void _ZN10S3222C2_nt4v146Ev();
extern void _ZN10S3222C2_nt4v147Ev();
extern void _ZN10S3222C2_nt4v148Ev();
extern void _ZN10S3222C2_nt4v149Ev();
extern void _ZN10S3222C2_nt4v150Ev();
extern void _ZN10S3222C2_nt4v151Ev();
extern void _ZN10S3222C2_nt4v152Ev();
extern void _ZN10S3222C2_nt4v153Ev();
extern void _ZN10S3222C2_nt4v154Ev();
extern void _ZN10S3222C2_nt4v155Ev();
extern void _ZN10S3222C2_nt4v156Ev();
extern void _ZN10S3222C2_nt4v157Ev();
extern void _ZN10S3222C2_nt4v158Ev();
extern void _ZN10S3222C2_nt4v159Ev();
extern void _ZN10S3222C2_nt4v160Ev();
extern void _ZN10S3222C2_nt4v161Ev();
extern void _ZN10S3222C2_nt4v162Ev();
extern void _ZN10S3222C2_nt4v163Ev();
extern void _ZN10S3222C2_nt4v164Ev();
extern void _ZN10S3222C2_nt4v165Ev();
extern void _ZN10S3222C2_nt4v166Ev();
extern void _ZN10S3222C2_nt4v167Ev();
extern void _ZN10S3222C2_nt4v168Ev();
extern void _ZN10S3222C2_nt4v169Ev();
extern void _ZN10S3222C2_nt4v170Ev();
extern void _ZN10S3222C2_nt4v171Ev();
extern void _ZN10S3222C2_nt4v172Ev();
extern void _ZN10S3222C2_nt4v173Ev();
extern void _ZN10S3222C2_nt4v174Ev();
extern void _ZN10S3222C2_nt4v175Ev();
extern void _ZN10S3222C2_nt4v176Ev();
extern void _ZN10S3222C2_nt4v177Ev();
extern void _ZN10S3222C2_nt4v178Ev();
extern void _ZN10S3222C2_nt4v179Ev();
extern void _ZN10S3222C2_nt4v180Ev();
extern void _ZN10S3222C2_nt4v181Ev();
extern void _ZN10S3222C2_nt4v182Ev();
extern void _ZN10S3222C2_nt4v183Ev();
extern void _ZN10S3222C2_nt4v184Ev();
extern void _ZN10S3222C2_nt4v185Ev();
extern void _ZN10S3222C2_nt4v186Ev();
extern void _ZN10S3222C2_nt4v187Ev();
extern void _ZN10S3222C2_nt4v188Ev();
extern void _ZN10S3222C2_nt4v189Ev();
extern void _ZN10S3222C2_nt4v190Ev();
extern void _ZN10S3222C2_nt4v191Ev();
extern void _ZN10S3222C2_nt4v192Ev();
extern void _ZN10S3222C2_nt4v193Ev();
extern void _ZN10S3222C2_nt4v194Ev();
extern void _ZN10S3222C2_nt4v195Ev();
extern void _ZN10S3222C2_nt4v196Ev();
extern void _ZN10S3222C2_nt4v197Ev();
extern void _ZN10S3222C2_nt4v198Ev();
extern void _ZN10S3222C2_nt4v199Ev();
extern void _ZN10S3222C2_nt4v200Ev();
extern void _ZN10S3222C2_nt4v201Ev();
extern void _ZN10S3222C2_nt4v202Ev();
extern void _ZN10S3222C2_nt4v203Ev();
extern void _ZN10S3222C2_nt4v204Ev();
extern void _ZN10S3222C2_nt4v205Ev();
extern void _ZN10S3222C2_nt4v206Ev();
extern void _ZN10S3222C2_nt4v207Ev();
extern void _ZN10S3222C2_nt4v208Ev();
extern void _ZN10S3222C2_nt4v209Ev();
extern void _ZN10S3222C2_nt4v210Ev();
static  VTBL_ENTRY vtc_S3222C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3222C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3222C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v210Ev,
};
extern VTBL_ENTRY _ZTI10S3222C2_nt[];
VTBL_ENTRY *P__ZTI10S3222C2_nt = _ZTI10S3222C2_nt; 
extern  VTBL_ENTRY _ZTV10S3222C2_nt[];
Class_Descriptor cd_S3222C2_nt = {  "S3222C2_nt", // class name
  bases_S3222C2_nt, 1,
  &(vtc_S3222C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3222C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3222C2_nt),211, //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  S3222C1  : S3222C2_nt {
  void *s3222c1f0;
  int s3222c1f1[2];
  ::S3222C4_nt s3222c1f2;
  int s3222c1f3[2];
  virtual  ~S3222C1(); // _ZN7S3222C1D1Ev
  virtual void  v1(); // _ZN7S3222C12v1Ev
  virtual void  v2(); // _ZN7S3222C12v2Ev
  virtual void  v3(); // _ZN7S3222C12v3Ev
  S3222C1(); // tgen
};
//SIG(1 S3222C1) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd 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 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 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 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 Fp Fi[2] FC4 Fi[2]}


 S3222C1 ::~S3222C1(){ note_dtor("S3222C1", this);}
void  S3222C1 ::v1(){vfunc_called(this, "_ZN7S3222C12v1Ev");}
void  S3222C1 ::v2(){vfunc_called(this, "_ZN7S3222C12v2Ev");}
void  S3222C1 ::v3(){vfunc_called(this, "_ZN7S3222C12v3Ev");}
S3222C1 ::S3222C1(){ note_ctor("S3222C1", this);} // tgen

static void Test_S3222C1()
{
  extern Class_Descriptor cd_S3222C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(76,117)];
    init_test(&cd_S3222C1, buf);
    S3222C1 *dp, &lv = *(dp=new (buf) S3222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(600,464), "sizeof(S3222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3222C1)");
    check_base_class_offset(lv, (S3222C3_nt*)(S3222C2_nt*), 0, "S3222C1");
    check_base_class_offset(lv, (S3222C2_nt*), 0, "S3222C1");
    check_field_offset(lv, s3222c1f0, ABISELECT(568,436), "S3222C1.s3222c1f0");
    check_field_offset(lv, s3222c1f1, ABISELECT(576,440), "S3222C1.s3222c1f1");
    check_field_offset(lv, s3222c1f2, ABISELECT(584,448), "S3222C1.s3222c1f2");
    check_field_offset(lv, s3222c1f3, ABISELECT(592,456), "S3222C1.s3222c1f3");
    test_class_info(&lv, &cd_S3222C1);
    dp->~S3222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3222C1(Test_S3222C1, "S3222C1", ABISELECT(600,464));

#else // __cplusplus

extern void _ZN7S3222C1C1Ev();
extern void _ZN7S3222C1D1Ev();
Name_Map name_map_S3222C1[] = {
  NSPAIR(_ZN7S3222C1C1Ev),
  NSPAIR(_ZN7S3222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3222C3_nt;
extern VTBL_ENTRY _ZTI10S3222C3_nt[];
extern  VTBL_ENTRY _ZTV10S3222C3_nt[];
extern Class_Descriptor cd_S3222C2_nt;
extern VTBL_ENTRY _ZTI10S3222C2_nt[];
extern  VTBL_ENTRY _ZTV10S3222C2_nt[];
static Base_Class bases_S3222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C3_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_S3222C2_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 _ZTI7S3222C1[];
extern void _ZN7S3222C1D1Ev();
extern void _ZN7S3222C1D0Ev();
extern void _ZN10S3222C3_nt2v4Ev();
extern void _ZN10S3222C3_nt2v5Ev();
extern void _ZN10S3222C3_nt2v6Ev();
extern void _ZN10S3222C3_nt2v7Ev();
extern void _ZN10S3222C3_nt2v8Ev();
extern void _ZN10S3222C3_nt2v9Ev();
extern void _ZN10S3222C3_nt3v10Ev();
extern void _ZN10S3222C3_nt3v11Ev();
extern void _ZN10S3222C3_nt3v12Ev();
extern void _ZN10S3222C3_nt3v13Ev();
extern void _ZN10S3222C3_nt3v14Ev();
extern void _ZN10S3222C3_nt3v15Ev();
extern void _ZN10S3222C3_nt3v16Ev();
extern void _ZN10S3222C3_nt3v17Ev();
extern void _ZN10S3222C3_nt3v18Ev();
extern void _ZN10S3222C3_nt3v19Ev();
extern void _ZN10S3222C3_nt3v20Ev();
extern void _ZN10S3222C3_nt3v21Ev();
extern void _ZN10S3222C3_nt3v22Ev();
extern void _ZN10S3222C3_nt3v23Ev();
extern void _ZN10S3222C3_nt3v24Ev();
extern void _ZN10S3222C3_nt3v25Ev();
extern void _ZN10S3222C3_nt3v26Ev();
extern void _ZN10S3222C3_nt3v27Ev();
extern void _ZN10S3222C3_nt3v28Ev();
extern void _ZN10S3222C3_nt3v29Ev();
extern void _ZN10S3222C3_nt3v30Ev();
extern void _ZN10S3222C3_nt3v31Ev();
extern void _ZN10S3222C3_nt3v32Ev();
extern void _ZN10S3222C3_nt3v33Ev();
extern void _ZN10S3222C3_nt3v34Ev();
extern void _ZN10S3222C3_nt3v35Ev();
extern void _ZN10S3222C3_nt3v36Ev();
extern void _ZN10S3222C3_nt3v37Ev();
extern void _ZN10S3222C3_nt3v38Ev();
extern void _ZN10S3222C3_nt3v39Ev();
extern void _ZN10S3222C3_nt3v40Ev();
extern void _ZN10S3222C3_nt3v41Ev();
extern void _ZN10S3222C3_nt3v42Ev();
extern void _ZN10S3222C3_nt3v43Ev();
extern void _ZN10S3222C3_nt3v44Ev();
extern void _ZN10S3222C3_nt3v45Ev();
extern void _ZN10S3222C3_nt3v46Ev();
extern void _ZN10S3222C3_nt3v47Ev();
extern void _ZN10S3222C3_nt3v48Ev();
extern void _ZN10S3222C3_nt3v49Ev();
extern void _ZN10S3222C3_nt3v50Ev();
extern void _ZN10S3222C3_nt3v51Ev();
extern void _ZN10S3222C3_nt3v52Ev();
extern void _ZN10S3222C3_nt3v53Ev();
extern void _ZN10S3222C3_nt3v54Ev();
extern void _ZN10S3222C3_nt3v55Ev();
extern void _ZN10S3222C3_nt3v56Ev();
extern void _ZN10S3222C3_nt3v57Ev();
extern void _ZN10S3222C3_nt3v58Ev();
extern void _ZN10S3222C3_nt3v59Ev();
extern void _ZN10S3222C3_nt3v60Ev();
extern void _ZN10S3222C3_nt3v61Ev();
extern void _ZN10S3222C3_nt3v62Ev();
extern void _ZN10S3222C3_nt3v63Ev();
extern void _ZN10S3222C3_nt3v64Ev();
extern void _ZN10S3222C3_nt3v65Ev();
extern void _ZN10S3222C3_nt3v66Ev();
extern void _ZN10S3222C3_nt3v67Ev();
extern void _ZN10S3222C2_nt3v68Ev();
extern void _ZN10S3222C2_nt3v69Ev();
extern void _ZN10S3222C2_nt3v70Ev();
extern void _ZN10S3222C2_nt3v71Ev();
extern void _ZN10S3222C2_nt3v72Ev();
extern void _ZN10S3222C2_nt3v73Ev();
extern void _ZN10S3222C2_nt3v74Ev();
extern void _ZN10S3222C2_nt3v75Ev();
extern void _ZN10S3222C2_nt3v76Ev();
extern void _ZN10S3222C2_nt3v77Ev();
extern void _ZN10S3222C2_nt3v78Ev();
extern void _ZN10S3222C2_nt3v79Ev();
extern void _ZN10S3222C2_nt3v80Ev();
extern void _ZN10S3222C2_nt3v81Ev();
extern void _ZN10S3222C2_nt3v82Ev();
extern void _ZN10S3222C2_nt3v83Ev();
extern void _ZN10S3222C2_nt3v84Ev();
extern void _ZN10S3222C2_nt3v85Ev();
extern void _ZN10S3222C2_nt3v86Ev();
extern void _ZN10S3222C2_nt3v87Ev();
extern void _ZN10S3222C2_nt3v88Ev();
extern void _ZN10S3222C2_nt3v89Ev();
extern void _ZN10S3222C2_nt3v90Ev();
extern void _ZN10S3222C2_nt3v91Ev();
extern void _ZN10S3222C2_nt3v92Ev();
extern void _ZN10S3222C2_nt3v93Ev();
extern void _ZN10S3222C2_nt3v94Ev();
extern void _ZN10S3222C2_nt3v95Ev();
extern void _ZN10S3222C2_nt3v96Ev();
extern void _ZN10S3222C2_nt3v97Ev();
extern void _ZN10S3222C2_nt3v98Ev();
extern void _ZN10S3222C2_nt3v99Ev();
extern void _ZN10S3222C2_nt4v100Ev();
extern void _ZN10S3222C2_nt4v101Ev();
extern void _ZN10S3222C2_nt4v102Ev();
extern void _ZN10S3222C2_nt4v103Ev();
extern void _ZN10S3222C2_nt4v104Ev();
extern void _ZN10S3222C2_nt4v105Ev();
extern void _ZN10S3222C2_nt4v106Ev();
extern void _ZN10S3222C2_nt4v107Ev();
extern void _ZN10S3222C2_nt4v108Ev();
extern void _ZN10S3222C2_nt4v109Ev();
extern void _ZN10S3222C2_nt4v110Ev();
extern void _ZN10S3222C2_nt4v111Ev();
extern void _ZN10S3222C2_nt4v112Ev();
extern void _ZN10S3222C2_nt4v113Ev();
extern void _ZN10S3222C2_nt4v114Ev();
extern void _ZN10S3222C2_nt4v115Ev();
extern void _ZN10S3222C2_nt4v116Ev();
extern void _ZN10S3222C2_nt4v117Ev();
extern void _ZN10S3222C2_nt4v118Ev();
extern void _ZN10S3222C2_nt4v119Ev();
extern void _ZN10S3222C2_nt4v120Ev();
extern void _ZN10S3222C2_nt4v121Ev();
extern void _ZN10S3222C2_nt4v122Ev();
extern void _ZN10S3222C2_nt4v123Ev();
extern void _ZN10S3222C2_nt4v124Ev();
extern void _ZN10S3222C2_nt4v125Ev();
extern void _ZN10S3222C2_nt4v126Ev();
extern void _ZN10S3222C2_nt4v127Ev();
extern void _ZN10S3222C2_nt4v128Ev();
extern void _ZN10S3222C2_nt4v129Ev();
extern void _ZN10S3222C2_nt4v130Ev();
extern void _ZN10S3222C2_nt4v131Ev();
extern void _ZN10S3222C2_nt4v132Ev();
extern void _ZN10S3222C2_nt4v133Ev();
extern void _ZN10S3222C2_nt4v134Ev();
extern void _ZN10S3222C2_nt4v135Ev();
extern void _ZN10S3222C2_nt4v136Ev();
extern void _ZN10S3222C2_nt4v137Ev();
extern void _ZN10S3222C2_nt4v138Ev();
extern void _ZN10S3222C2_nt4v139Ev();
extern void _ZN10S3222C2_nt4v140Ev();
extern void _ZN10S3222C2_nt4v141Ev();
extern void _ZN10S3222C2_nt4v142Ev();
extern void _ZN10S3222C2_nt4v143Ev();
extern void _ZN10S3222C2_nt4v144Ev();
extern void _ZN10S3222C2_nt4v145Ev();
extern void _ZN10S3222C2_nt4v146Ev();
extern void _ZN10S3222C2_nt4v147Ev();
extern void _ZN10S3222C2_nt4v148Ev();
extern void _ZN10S3222C2_nt4v149Ev();
extern void _ZN10S3222C2_nt4v150Ev();
extern void _ZN10S3222C2_nt4v151Ev();
extern void _ZN10S3222C2_nt4v152Ev();
extern void _ZN10S3222C2_nt4v153Ev();
extern void _ZN10S3222C2_nt4v154Ev();
extern void _ZN10S3222C2_nt4v155Ev();
extern void _ZN10S3222C2_nt4v156Ev();
extern void _ZN10S3222C2_nt4v157Ev();
extern void _ZN10S3222C2_nt4v158Ev();
extern void _ZN10S3222C2_nt4v159Ev();
extern void _ZN10S3222C2_nt4v160Ev();
extern void _ZN10S3222C2_nt4v161Ev();
extern void _ZN10S3222C2_nt4v162Ev();
extern void _ZN10S3222C2_nt4v163Ev();
extern void _ZN10S3222C2_nt4v164Ev();
extern void _ZN10S3222C2_nt4v165Ev();
extern void _ZN10S3222C2_nt4v166Ev();
extern void _ZN10S3222C2_nt4v167Ev();
extern void _ZN10S3222C2_nt4v168Ev();
extern void _ZN10S3222C2_nt4v169Ev();
extern void _ZN10S3222C2_nt4v170Ev();
extern void _ZN10S3222C2_nt4v171Ev();
extern void _ZN10S3222C2_nt4v172Ev();
extern void _ZN10S3222C2_nt4v173Ev();
extern void _ZN10S3222C2_nt4v174Ev();
extern void _ZN10S3222C2_nt4v175Ev();
extern void _ZN10S3222C2_nt4v176Ev();
extern void _ZN10S3222C2_nt4v177Ev();
extern void _ZN10S3222C2_nt4v178Ev();
extern void _ZN10S3222C2_nt4v179Ev();
extern void _ZN10S3222C2_nt4v180Ev();
extern void _ZN10S3222C2_nt4v181Ev();
extern void _ZN10S3222C2_nt4v182Ev();
extern void _ZN10S3222C2_nt4v183Ev();
extern void _ZN10S3222C2_nt4v184Ev();
extern void _ZN10S3222C2_nt4v185Ev();
extern void _ZN10S3222C2_nt4v186Ev();
extern void _ZN10S3222C2_nt4v187Ev();
extern void _ZN10S3222C2_nt4v188Ev();
extern void _ZN10S3222C2_nt4v189Ev();
extern void _ZN10S3222C2_nt4v190Ev();
extern void _ZN10S3222C2_nt4v191Ev();
extern void _ZN10S3222C2_nt4v192Ev();
extern void _ZN10S3222C2_nt4v193Ev();
extern void _ZN10S3222C2_nt4v194Ev();
extern void _ZN10S3222C2_nt4v195Ev();
extern void _ZN10S3222C2_nt4v196Ev();
extern void _ZN10S3222C2_nt4v197Ev();
extern void _ZN10S3222C2_nt4v198Ev();
extern void _ZN10S3222C2_nt4v199Ev();
extern void _ZN10S3222C2_nt4v200Ev();
extern void _ZN10S3222C2_nt4v201Ev();
extern void _ZN10S3222C2_nt4v202Ev();
extern void _ZN10S3222C2_nt4v203Ev();
extern void _ZN10S3222C2_nt4v204Ev();
extern void _ZN10S3222C2_nt4v205Ev();
extern void _ZN10S3222C2_nt4v206Ev();
extern void _ZN10S3222C2_nt4v207Ev();
extern void _ZN10S3222C2_nt4v208Ev();
extern void _ZN10S3222C2_nt4v209Ev();
extern void _ZN10S3222C2_nt4v210Ev();
extern void _ZN7S3222C12v1Ev();
extern void _ZN7S3222C12v2Ev();
extern void _ZN7S3222C12v3Ev();
static  VTBL_ENTRY vtc_S3222C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3222C1[0]),
  (VTBL_ENTRY)&_ZN7S3222C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3222C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3222C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3222C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN7S3222C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3222C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3222C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3222C1[];
extern  VTBL_ENTRY _ZTV7S3222C1[];
Class_Descriptor cd_S3222C1 = {  "S3222C1", // class name
  bases_S3222C1, 2,
  &(vtc_S3222C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(600,464), // object size
  NSPAIRA(_ZTI7S3222C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3222C1),214, //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  S2014C7_nt  {
  void  mf2014c7(); // _ZN10S2014C7_nt8mf2014c7Ev
};
//SIG(-1 S2014C7_nt) C1{ m}


void  S2014C7_nt ::mf2014c7(){}

//skip512 S2014C7_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S2014C7_nt[];
VTBL_ENTRY *P__ZTI10S2014C7_nt = _ZTI10S2014C7_nt; 
Class_Descriptor cd_S2014C7_nt = {  "S2014C7_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S2014C7_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  S2014C6_nt  {
  void *s2014c6f0;
  int s2014c6f1;
  ::S2014C7_nt s2014c6f2;
  ::S2014C7_nt s2014c6f3;
  void  mf2014c6(); // _ZN10S2014C6_nt8mf2014c6Ev
};
//SIG(-1 S2014C6_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S2014C6_nt ::mf2014c6(){}

//skip512 S2014C6_nt

#else // __cplusplus

Class_Descriptor cd_S2014C6_nt = {  "S2014C6_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  S2014C5_nt  : S2014C6_nt {
};
//SIG(-1 S2014C5_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S2014C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S2014C6_nt;
static Base_Class bases_S2014C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C6_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  S2014C4_nt  {
  void *s2014c4f0;
  int s2014c4f1;
  ::S2014C5_nt s2014c4f2;
  ::S2014C5_nt s2014c4f3;
  int s2014c4f4;
  virtual  ~S2014C4_nt(); // _ZN10S2014C4_ntD1Ev
  virtual void  v11(); // _ZN10S2014C4_nt3v11Ev
  virtual void  v12(); // _ZN10S2014C4_nt3v12Ev
  virtual void  v13(); // _ZN10S2014C4_nt3v13Ev
  virtual void  v14(); // _ZN10S2014C4_nt3v14Ev
  virtual void  v15(); // _ZN10S2014C4_nt3v15Ev
  virtual void  v16(); // _ZN10S2014C4_nt3v16Ev
  virtual void  v17(); // _ZN10S2014C4_nt3v17Ev
  virtual void  v18(); // _ZN10S2014C4_nt3v18Ev
  virtual void  v19(); // _ZN10S2014C4_nt3v19Ev
  virtual void  v20(); // _ZN10S2014C4_nt3v20Ev
  virtual void  v21(); // _ZN10S2014C4_nt3v21Ev
  virtual void  v22(); // _ZN10S2014C4_nt3v22Ev
  virtual void  v23(); // _ZN10S2014C4_nt3v23Ev
  virtual void  v24(); // _ZN10S2014C4_nt3v24Ev
  virtual void  v25(); // _ZN10S2014C4_nt3v25Ev
  virtual void  v26(); // _ZN10S2014C4_nt3v26Ev
  virtual void  v27(); // _ZN10S2014C4_nt3v27Ev
  virtual void  v28(); // _ZN10S2014C4_nt3v28Ev
  virtual void  v29(); // _ZN10S2014C4_nt3v29Ev
  virtual void  v30(); // _ZN10S2014C4_nt3v30Ev
  virtual void  v31(); // _ZN10S2014C4_nt3v31Ev
  virtual void  v32(); // _ZN10S2014C4_nt3v32Ev
  virtual void  v33(); // _ZN10S2014C4_nt3v33Ev
  S2014C4_nt(); // tgen
};
//SIG(-1 S2014C4_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} FC4}} FC2 Fi}


 S2014C4_nt ::~S2014C4_nt(){ note_dtor("S2014C4_nt", this);}
void  S2014C4_nt ::v11(){vfunc_called(this, "_ZN10S2014C4_nt3v11Ev");}
void  S2014C4_nt ::v12(){vfunc_called(this, "_ZN10S2014C4_nt3v12Ev");}
void  S2014C4_nt ::v13(){vfunc_called(this, "_ZN10S2014C4_nt3v13Ev");}
void  S2014C4_nt ::v14(){vfunc_called(this, "_ZN10S2014C4_nt3v14Ev");}
void  S2014C4_nt ::v15(){vfunc_called(this, "_ZN10S2014C4_nt3v15Ev");}
void  S2014C4_nt ::v16(){vfunc_called(this, "_ZN10S2014C4_nt3v16Ev");}
void  S2014C4_nt ::v17(){vfunc_called(this, "_ZN10S2014C4_nt3v17Ev");}
void  S2014C4_nt ::v18(){vfunc_called(this, "_ZN10S2014C4_nt3v18Ev");}
void  S2014C4_nt ::v19(){vfunc_called(this, "_ZN10S2014C4_nt3v19Ev");}
void  S2014C4_nt ::v20(){vfunc_called(this, "_ZN10S2014C4_nt3v20Ev");}
void  S2014C4_nt ::v21(){vfunc_called(this, "_ZN10S2014C4_nt3v21Ev");}
void  S2014C4_nt ::v22(){vfunc_called(this, "_ZN10S2014C4_nt3v22Ev");}
void  S2014C4_nt ::v23(){vfunc_called(this, "_ZN10S2014C4_nt3v23Ev");}
void  S2014C4_nt ::v24(){vfunc_called(this, "_ZN10S2014C4_nt3v24Ev");}
void  S2014C4_nt ::v25(){vfunc_called(this, "_ZN10S2014C4_nt3v25Ev");}
void  S2014C4_nt ::v26(){vfunc_called(this, "_ZN10S2014C4_nt3v26Ev");}
void  S2014C4_nt ::v27(){vfunc_called(this, "_ZN10S2014C4_nt3v27Ev");}
void  S2014C4_nt ::v28(){vfunc_called(this, "_ZN10S2014C4_nt3v28Ev");}
void  S2014C4_nt ::v29(){vfunc_called(this, "_ZN10S2014C4_nt3v29Ev");}
void  S2014C4_nt ::v30(){vfunc_called(this, "_ZN10S2014C4_nt3v30Ev");}
void  S2014C4_nt ::v31(){vfunc_called(this, "_ZN10S2014C4_nt3v31Ev");}
void  S2014C4_nt ::v32(){vfunc_called(this, "_ZN10S2014C4_nt3v32Ev");}
void  S2014C4_nt ::v33(){vfunc_called(this, "_ZN10S2014C4_nt3v33Ev");}
S2014C4_nt ::S2014C4_nt(){ note_ctor("S2014C4_nt", this);} // tgen

//skip512 S2014C4_nt

#else // __cplusplus

extern void _ZN10S2014C4_ntC1Ev();
extern void _ZN10S2014C4_ntD1Ev();
Name_Map name_map_S2014C4_nt[] = {
  NSPAIR(_ZN10S2014C4_ntC1Ev),
  NSPAIR(_ZN10S2014C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2014C4_nt[];
extern void _ZN10S2014C4_ntD1Ev();
extern void _ZN10S2014C4_ntD0Ev();
extern void _ZN10S2014C4_nt3v11Ev();
extern void _ZN10S2014C4_nt3v12Ev();
extern void _ZN10S2014C4_nt3v13Ev();
extern void _ZN10S2014C4_nt3v14Ev();
extern void _ZN10S2014C4_nt3v15Ev();
extern void _ZN10S2014C4_nt3v16Ev();
extern void _ZN10S2014C4_nt3v17Ev();
extern void _ZN10S2014C4_nt3v18Ev();
extern void _ZN10S2014C4_nt3v19Ev();
extern void _ZN10S2014C4_nt3v20Ev();
extern void _ZN10S2014C4_nt3v21Ev();
extern void _ZN10S2014C4_nt3v22Ev();
extern void _ZN10S2014C4_nt3v23Ev();
extern void _ZN10S2014C4_nt3v24Ev();
extern void _ZN10S2014C4_nt3v25Ev();
extern void _ZN10S2014C4_nt3v26Ev();
extern void _ZN10S2014C4_nt3v27Ev();
extern void _ZN10S2014C4_nt3v28Ev();
extern void _ZN10S2014C4_nt3v29Ev();
extern void _ZN10S2014C4_nt3v30Ev();
extern void _ZN10S2014C4_nt3v31Ev();
extern void _ZN10S2014C4_nt3v32Ev();
extern void _ZN10S2014C4_nt3v33Ev();
static  VTBL_ENTRY vtc_S2014C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2014C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2014C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S2014C4_nt[];
VTBL_ENTRY *P__ZTI10S2014C4_nt = _ZTI10S2014C4_nt; 
extern  VTBL_ENTRY _ZTV10S2014C4_nt[];
Class_Descriptor cd_S2014C4_nt = {  "S2014C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2014C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S2014C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2014C4_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  S2014C14_nt  {
  __tsi64 s2014c14f0[2];
  void  mf2014c14(); // _ZN11S2014C14_nt9mf2014c14Ev
};
//SIG(-1 S2014C14_nt) C1{ m FL[2]}


void  S2014C14_nt ::mf2014c14(){}

//skip512 S2014C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C13_nt  {
  ::S2014C14_nt s2014c13f0;
  void  mf2014c13(); // _ZN11S2014C13_nt9mf2014c13Ev
};
//SIG(-1 S2014C13_nt) C1{ m FC2{ m FL[2]}}


void  S2014C13_nt ::mf2014c13(){}

//skip512 S2014C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C17_nt  {
  ::S2014C13_nt s2014c17f0;
  void  mf2014c17(); // _ZN11S2014C17_nt9mf2014c17Ev
};
//SIG(-1 S2014C17_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S2014C17_nt ::mf2014c17(){}

//skip512 S2014C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C18_nt  {
  ::S2014C13_nt s2014c18f0;
  ::S2014C13_nt s2014c18f1;
  ::S2014C13_nt s2014c18f2;
  ::S2014C13_nt s2014c18f3;
  void  mf2014c18(); // _ZN11S2014C18_nt9mf2014c18Ev
};
//SIG(-1 S2014C18_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S2014C18_nt ::mf2014c18(){}

//skip512 S2014C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C21  {
  void  mf2014c21(); // _ZN8S2014C219mf2014c21Ev
};
//SIG(-1 S2014C21) C1{ m}


void  S2014C21 ::mf2014c21(){}

static void Test_S2014C21()
{
  {
    init_simple_test("S2014C21");
    S2014C21 lv;
    check2(sizeof(lv), 1, "sizeof(S2014C21)");
    check2(__alignof__(lv), 1, "__alignof__(S2014C21)");
  }
}
static Arrange_To_Call_Me vS2014C21(Test_S2014C21, "S2014C21", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2014C21[];
VTBL_ENTRY *P__ZTI8S2014C21 = _ZTI8S2014C21; 
Class_Descriptor cd_S2014C21 = {  "S2014C21", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2014C21),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  S2014C20_nt  {
  void *s2014c20f0;
  int s2014c20f1;
  ::S2014C21 s2014c20f2;
  void  mf2014c20(); // _ZN11S2014C20_nt9mf2014c20Ev
};
//SIG(-1 S2014C20_nt) C1{ m Fp Fi FC2{ m}}


void  S2014C20_nt ::mf2014c20(){}

//skip512 S2014C20_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C19_nt  {
  ::S2014C20_nt s2014c19f0;
  int s2014c19f1;
  void  mf2014c19(); // _ZN11S2014C19_nt9mf2014c19Ev
};
//SIG(-1 S2014C19_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S2014C19_nt ::mf2014c19(){}

//skip512 S2014C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C24  {
  void  mf2014c24(); // _ZN8S2014C249mf2014c24Ev
};
//SIG(-1 S2014C24) C1{ m}


void  S2014C24 ::mf2014c24(){}

static void Test_S2014C24()
{
  {
    init_simple_test("S2014C24");
    S2014C24 lv;
    check2(sizeof(lv), 1, "sizeof(S2014C24)");
    check2(__alignof__(lv), 1, "__alignof__(S2014C24)");
  }
}
static Arrange_To_Call_Me vS2014C24(Test_S2014C24, "S2014C24", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2014C24[];
VTBL_ENTRY *P__ZTI8S2014C24 = _ZTI8S2014C24; 
Class_Descriptor cd_S2014C24 = {  "S2014C24", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2014C24),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  S2014C22  {
  void *s2014c22f0;
  int s2014c22f1;
  ::S2014C21 s2014c22f2;
  ::S2014C24 s2014c22f3;
  void  mf2014c22(); // _ZN8S2014C229mf2014c22Ev
};
//SIG(-1 S2014C22) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S2014C22 ::mf2014c22(){}

static void Test_S2014C22()
{
  {
    init_simple_test("S2014C22");
    S2014C22 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2014C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C22)");
    check_field_offset(lv, s2014c22f0, 0, "S2014C22.s2014c22f0");
    check_field_offset(lv, s2014c22f1, ABISELECT(8,4), "S2014C22.s2014c22f1");
    check_field_offset(lv, s2014c22f2, ABISELECT(12,8), "S2014C22.s2014c22f2");
    check_field_offset(lv, s2014c22f3, ABISELECT(13,9), "S2014C22.s2014c22f3");
  }
}
static Arrange_To_Call_Me vS2014C22(Test_S2014C22, "S2014C22", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C28  {
  void  mf2014c28(); // _ZN8S2014C289mf2014c28Ev
};
//SIG(-1 S2014C28) C1{ m}


void  S2014C28 ::mf2014c28(){}

static void Test_S2014C28()
{
  {
    init_simple_test("S2014C28");
    S2014C28 lv;
    check2(sizeof(lv), 1, "sizeof(S2014C28)");
    check2(__alignof__(lv), 1, "__alignof__(S2014C28)");
  }
}
static Arrange_To_Call_Me vS2014C28(Test_S2014C28, "S2014C28", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2014C28[];
VTBL_ENTRY *P__ZTI8S2014C28 = _ZTI8S2014C28; 
Class_Descriptor cd_S2014C28 = {  "S2014C28", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2014C28),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  S2014C26  {
  void *s2014c26f0;
  int s2014c26f1;
  ::S2014C24 s2014c26f2;
  ::S2014C28 s2014c26f3;
  void  mf2014c26(); // _ZN8S2014C269mf2014c26Ev
};
//SIG(-1 S2014C26) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S2014C26 ::mf2014c26(){}

static void Test_S2014C26()
{
  {
    init_simple_test("S2014C26");
    S2014C26 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2014C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C26)");
    check_field_offset(lv, s2014c26f0, 0, "S2014C26.s2014c26f0");
    check_field_offset(lv, s2014c26f1, ABISELECT(8,4), "S2014C26.s2014c26f1");
    check_field_offset(lv, s2014c26f2, ABISELECT(12,8), "S2014C26.s2014c26f2");
    check_field_offset(lv, s2014c26f3, ABISELECT(13,9), "S2014C26.s2014c26f3");
  }
}
static Arrange_To_Call_Me vS2014C26(Test_S2014C26, "S2014C26", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S2014C26 = {  "S2014C26", // 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  S2014C25  : S2014C26 {
};
//SIG(-1 S2014C25) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



static void Test_S2014C25()
{
  extern Class_Descriptor cd_S2014C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2014C25, buf);
    S2014C25 &lv = *(new (buf) S2014C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2014C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C25)");
    check_base_class_offset(lv, (S2014C26*), 0, "S2014C25");
    test_class_info(&lv, &cd_S2014C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2014C25(Test_S2014C25, "S2014C25", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2014C26;
static Base_Class bases_S2014C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C25 = {  "S2014C25", // class name
  bases_S2014C25, 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  S2014C29_nt  {
  void *s2014c29f0;
  int s2014c29f1[2];
  ::S2014C28 s2014c29f2;
  void  mf2014c29(); // _ZN11S2014C29_nt9mf2014c29Ev
};
//SIG(-1 S2014C29_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S2014C29_nt ::mf2014c29(){}

//skip512 S2014C29_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C38  {
  void  mf2014c38(); // _ZN8S2014C389mf2014c38Ev
};
//SIG(-1 S2014C38) C1{ m}


void  S2014C38 ::mf2014c38(){}

static void Test_S2014C38()
{
  {
    init_simple_test("S2014C38");
    S2014C38 lv;
    check2(sizeof(lv), 1, "sizeof(S2014C38)");
    check2(__alignof__(lv), 1, "__alignof__(S2014C38)");
  }
}
static Arrange_To_Call_Me vS2014C38(Test_S2014C38, "S2014C38", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2014C38[];
VTBL_ENTRY *P__ZTI8S2014C38 = _ZTI8S2014C38; 
Class_Descriptor cd_S2014C38 = {  "S2014C38", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2014C38),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  S2014C37  {
  void *s2014c37f0;
  int s2014c37f1[2];
  ::S2014C38 s2014c37f2;
  void  mf2014c37(); // _ZN8S2014C379mf2014c37Ev
};
//SIG(-1 S2014C37) C1{ m Fp Fi[2] FC2{ m}}


void  S2014C37 ::mf2014c37(){}

static void Test_S2014C37()
{
  {
    init_simple_test("S2014C37");
    S2014C37 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2014C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C37)");
    check_field_offset(lv, s2014c37f0, 0, "S2014C37.s2014c37f0");
    check_field_offset(lv, s2014c37f1, ABISELECT(8,4), "S2014C37.s2014c37f1");
    check_field_offset(lv, s2014c37f2, ABISELECT(16,12), "S2014C37.s2014c37f2");
  }
}
static Arrange_To_Call_Me vS2014C37(Test_S2014C37, "S2014C37", ABISELECT(24,16));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S2014C37[];
VTBL_ENTRY *P__ZTI8S2014C37 = _ZTI8S2014C37; 
Class_Descriptor cd_S2014C37 = {  "S2014C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S2014C37),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  S2014C3_nt  : S2014C4_nt {
  ::S2014C13_nt s2014c3f0;
  ::S2014C13_nt s2014c3f1;
  ::S2014C13_nt s2014c3f2;
  ::S2014C13_nt s2014c3f3;
  ::S2014C17_nt s2014c3f4;
  ::S2014C18_nt s2014c3f5;
  ::S2014C18_nt s2014c3f6;
  ::S2014C13_nt s2014c3f7;
  ::S2014C13_nt s2014c3f8;
  ::S2014C13_nt s2014c3f9;
  void *s2014c3f10;
  ::S2014C17_nt s2014c3f11;
  ::S2014C19_nt s2014c3f12;
  int s2014c3f13;
  void *s2014c3f14[7];
  ::S2014C22 s2014c3f15;
  int s2014c3f16:8;
  int s2014c3f17:8;
  int s2014c3f18:16;
  int s2014c3f19:16;
  int s2014c3f20:8;
  int s2014c3f21:8;
  int s2014c3f22:8;
  int s2014c3f23:32;
  int s2014c3f24:8;
  int s2014c3f25:4;
  int s2014c3f26:4;
  int s2014c3f27:4;
  int s2014c3f28:4;
  int s2014c3f29:4;
  int s2014c3f30:4;
  int s2014c3f31:4;
  int s2014c3f32:4;
  int s2014c3f33:4;
  int s2014c3f34:4;
  unsigned char s2014c3f35:1;
  unsigned char s2014c3f36:1;
  unsigned char s2014c3f37:1;
  unsigned char s2014c3f38:1;
  unsigned char s2014c3f39:1;
  unsigned char s2014c3f40:1;
  unsigned char s2014c3f41:1;
  unsigned char s2014c3f42:1;
  unsigned char s2014c3f43:1;
  unsigned char s2014c3f44:1;
  unsigned char s2014c3f45:1;
  unsigned char s2014c3f46:1;
  unsigned char s2014c3f47:1;
  unsigned char s2014c3f48:1;
  unsigned char s2014c3f49:1;
  unsigned char s2014c3f50:1;
  unsigned char s2014c3f51:1;
  unsigned char s2014c3f52:1;
  unsigned char s2014c3f53:1;
  unsigned char s2014c3f54:1;
  unsigned char s2014c3f55:1;
  unsigned char s2014c3f56:1;
  unsigned char s2014c3f57:1;
  unsigned char s2014c3f58:1;
  unsigned char s2014c3f59:1;
  unsigned char s2014c3f60:1;
  unsigned char s2014c3f61:1;
  unsigned char s2014c3f62:1;
  unsigned char s2014c3f63:1;
  unsigned char s2014c3f64:1;
  unsigned char s2014c3f65:1;
  unsigned char s2014c3f66:1;
  unsigned char s2014c3f67:1;
  unsigned char s2014c3f68:1;
  unsigned char s2014c3f69:1;
  unsigned char s2014c3f70:1;
  unsigned char s2014c3f71:1;
  unsigned char s2014c3f72:1;
  unsigned char s2014c3f73:1;
  unsigned char s2014c3f74:1;
  unsigned char s2014c3f75:1;
  int s2014c3f76[7];
  void *s2014c3f77[6];
  int s2014c3f78:8;
  int s2014c3f79:8;
  int s2014c3f80:8;
  int s2014c3f81:8;
  int s2014c3f82:8;
  int s2014c3f83:8;
  ::S2014C25 s2014c3f84;
  void *s2014c3f85[4];
  int s2014c3f86:8;
  int s2014c3f87:8;
  int s2014c3f88:8;
  int s2014c3f89:8;
  int s2014c3f90:8;
  int s2014c3f91:16;
  int s2014c3f92:16;
  int s2014c3f93:16;
  int s2014c3f94:4;
  int s2014c3f95:4;
  int s2014c3f96:4;
  int s2014c3f97:4;
  int s2014c3f98:4;
  int s2014c3f99:4;
  int s2014c3f100:4;
  int s2014c3f101:4;
  int s2014c3f102:4;
  int s2014c3f103:4;
  int s2014c3f104:4;
  int s2014c3f105:4;
  int s2014c3f106:8;
  int s2014c3f107:8;
  int s2014c3f108:8;
  void *s2014c3f109[7];
  ::S2014C29_nt s2014c3f110;
  void *s2014c3f111[2];
  int s2014c3f112:16;
  int s2014c3f113:16;
  ::S2014C25 s2014c3f114;
  ::S2014C29_nt s2014c3f115;
  ::S2014C37 s2014c3f116;
  void *s2014c3f117[2];
  int s2014c3f118:24;
  int s2014c3f119:8;
  void *s2014c3f120;
  virtual  ~S2014C3_nt(); // _ZN10S2014C3_ntD1Ev
  virtual void  v34(); // _ZN10S2014C3_nt3v34Ev
  virtual void  v35(); // _ZN10S2014C3_nt3v35Ev
  virtual void  v36(); // _ZN10S2014C3_nt3v36Ev
  virtual void  v37(); // _ZN10S2014C3_nt3v37Ev
  virtual void  v38(); // _ZN10S2014C3_nt3v38Ev
  virtual void  v39(); // _ZN10S2014C3_nt3v39Ev
  virtual void  v40(); // _ZN10S2014C3_nt3v40Ev
  virtual void  v41(); // _ZN10S2014C3_nt3v41Ev
  virtual void  v42(); // _ZN10S2014C3_nt3v42Ev
  virtual void  v43(); // _ZN10S2014C3_nt3v43Ev
  virtual void  v44(); // _ZN10S2014C3_nt3v44Ev
  virtual void  v45(); // _ZN10S2014C3_nt3v45Ev
  virtual void  v46(); // _ZN10S2014C3_nt3v46Ev
  virtual void  v47(); // _ZN10S2014C3_nt3v47Ev
  virtual void  v48(); // _ZN10S2014C3_nt3v48Ev
  virtual void  v49(); // _ZN10S2014C3_nt3v49Ev
  virtual void  v50(); // _ZN10S2014C3_nt3v50Ev
  virtual void  v51(); // _ZN10S2014C3_nt3v51Ev
  virtual void  v52(); // _ZN10S2014C3_nt3v52Ev
  virtual void  v53(); // _ZN10S2014C3_nt3v53Ev
  virtual void  v54(); // _ZN10S2014C3_nt3v54Ev
  virtual void  v55(); // _ZN10S2014C3_nt3v55Ev
  virtual void  v56(); // _ZN10S2014C3_nt3v56Ev
  virtual void  v57(); // _ZN10S2014C3_nt3v57Ev
  virtual void  v58(); // _ZN10S2014C3_nt3v58Ev
  virtual void  v59(); // _ZN10S2014C3_nt3v59Ev
  virtual void  v60(); // _ZN10S2014C3_nt3v60Ev
  virtual void  v61(); // _ZN10S2014C3_nt3v61Ev
  virtual void  v62(); // _ZN10S2014C3_nt3v62Ev
  virtual void  v63(); // _ZN10S2014C3_nt3v63Ev
  virtual void  v64(); // _ZN10S2014C3_nt3v64Ev
  virtual void  v65(); // _ZN10S2014C3_nt3v65Ev
  virtual void  v66(); // _ZN10S2014C3_nt3v66Ev
  virtual void  v67(); // _ZN10S2014C3_nt3v67Ev
  virtual void  v68(); // _ZN10S2014C3_nt3v68Ev
  virtual void  v69(); // _ZN10S2014C3_nt3v69Ev
  virtual void  v70(); // _ZN10S2014C3_nt3v70Ev
  virtual void  v71(); // _ZN10S2014C3_nt3v71Ev
  virtual void  v72(); // _ZN10S2014C3_nt3v72Ev
  virtual void  v73(); // _ZN10S2014C3_nt3v73Ev
  virtual void  v74(); // _ZN10S2014C3_nt3v74Ev
  virtual void  v75(); // _ZN10S2014C3_nt3v75Ev
  virtual void  v76(); // _ZN10S2014C3_nt3v76Ev
  virtual void  v77(); // _ZN10S2014C3_nt3v77Ev
  virtual void  v78(); // _ZN10S2014C3_nt3v78Ev
  virtual void  v79(); // _ZN10S2014C3_nt3v79Ev
  virtual void  v80(); // _ZN10S2014C3_nt3v80Ev
  virtual void  v81(); // _ZN10S2014C3_nt3v81Ev
  virtual void  v82(); // _ZN10S2014C3_nt3v82Ev
  virtual void  v83(); // _ZN10S2014C3_nt3v83Ev
  virtual void  v84(); // _ZN10S2014C3_nt3v84Ev
  virtual void  v85(); // _ZN10S2014C3_nt3v85Ev
  virtual void  v86(); // _ZN10S2014C3_nt3v86Ev
  virtual void  v87(); // _ZN10S2014C3_nt3v87Ev
  virtual void  v88(); // _ZN10S2014C3_nt3v88Ev
  virtual void  v89(); // _ZN10S2014C3_nt3v89Ev
  virtual void  v90(); // _ZN10S2014C3_nt3v90Ev
  virtual void  v91(); // _ZN10S2014C3_nt3v91Ev
  virtual void  v92(); // _ZN10S2014C3_nt3v92Ev
  virtual void  v93(); // _ZN10S2014C3_nt3v93Ev
  virtual void  v94(); // _ZN10S2014C3_nt3v94Ev
  virtual void  v95(); // _ZN10S2014C3_nt3v95Ev
  virtual void  v96(); // _ZN10S2014C3_nt3v96Ev
  virtual void  v97(); // _ZN10S2014C3_nt3v97Ev
  virtual void  v98(); // _ZN10S2014C3_nt3v98Ev
  virtual void  v99(); // _ZN10S2014C3_nt3v99Ev
  virtual void  v100(); // _ZN10S2014C3_nt4v100Ev
  virtual void  v101(); // _ZN10S2014C3_nt4v101Ev
  virtual void  v102(); // _ZN10S2014C3_nt4v102Ev
  virtual void  v103(); // _ZN10S2014C3_nt4v103Ev
  virtual void  v104(); // _ZN10S2014C3_nt4v104Ev
  virtual void  v105(); // _ZN10S2014C3_nt4v105Ev
  virtual void  v106(); // _ZN10S2014C3_nt4v106Ev
  virtual void  v107(); // _ZN10S2014C3_nt4v107Ev
  virtual void  v108(); // _ZN10S2014C3_nt4v108Ev
  virtual void  v109(); // _ZN10S2014C3_nt4v109Ev
  virtual void  v110(); // _ZN10S2014C3_nt4v110Ev
  virtual void  v111(); // _ZN10S2014C3_nt4v111Ev
  S2014C3_nt(); // tgen
};
//SIG(-1 S2014C3_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} FC5}} 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 FC6{ m FC7{ m FL[2]}} FC6 FC6 FC6 FC8{ m FC6} FC9{ m FC6 FC6 FC6 FC6} FC9 FC6 FC6 FC6 Fp FC8 FC10{ m FC11{ m Fp Fi FC12{ m}} Fi} Fi Fp[7] FC13{ m Fp Fi FC12 FC14{ m}} 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 FC14 FC17{ m}}} 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] FC17} Fp[2] Fi:16 Fi:16 FC15 FC18 FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:24 Fi:8 Fp}


 S2014C3_nt ::~S2014C3_nt(){ note_dtor("S2014C3_nt", this);}
void  S2014C3_nt ::v34(){vfunc_called(this, "_ZN10S2014C3_nt3v34Ev");}
void  S2014C3_nt ::v35(){vfunc_called(this, "_ZN10S2014C3_nt3v35Ev");}
void  S2014C3_nt ::v36(){vfunc_called(this, "_ZN10S2014C3_nt3v36Ev");}
void  S2014C3_nt ::v37(){vfunc_called(this, "_ZN10S2014C3_nt3v37Ev");}
void  S2014C3_nt ::v38(){vfunc_called(this, "_ZN10S2014C3_nt3v38Ev");}
void  S2014C3_nt ::v39(){vfunc_called(this, "_ZN10S2014C3_nt3v39Ev");}
void  S2014C3_nt ::v40(){vfunc_called(this, "_ZN10S2014C3_nt3v40Ev");}
void  S2014C3_nt ::v41(){vfunc_called(this, "_ZN10S2014C3_nt3v41Ev");}
void  S2014C3_nt ::v42(){vfunc_called(this, "_ZN10S2014C3_nt3v42Ev");}
void  S2014C3_nt ::v43(){vfunc_called(this, "_ZN10S2014C3_nt3v43Ev");}
void  S2014C3_nt ::v44(){vfunc_called(this, "_ZN10S2014C3_nt3v44Ev");}
void  S2014C3_nt ::v45(){vfunc_called(this, "_ZN10S2014C3_nt3v45Ev");}
void  S2014C3_nt ::v46(){vfunc_called(this, "_ZN10S2014C3_nt3v46Ev");}
void  S2014C3_nt ::v47(){vfunc_called(this, "_ZN10S2014C3_nt3v47Ev");}
void  S2014C3_nt ::v48(){vfunc_called(this, "_ZN10S2014C3_nt3v48Ev");}
void  S2014C3_nt ::v49(){vfunc_called(this, "_ZN10S2014C3_nt3v49Ev");}
void  S2014C3_nt ::v50(){vfunc_called(this, "_ZN10S2014C3_nt3v50Ev");}
void  S2014C3_nt ::v51(){vfunc_called(this, "_ZN10S2014C3_nt3v51Ev");}
void  S2014C3_nt ::v52(){vfunc_called(this, "_ZN10S2014C3_nt3v52Ev");}
void  S2014C3_nt ::v53(){vfunc_called(this, "_ZN10S2014C3_nt3v53Ev");}
void  S2014C3_nt ::v54(){vfunc_called(this, "_ZN10S2014C3_nt3v54Ev");}
void  S2014C3_nt ::v55(){vfunc_called(this, "_ZN10S2014C3_nt3v55Ev");}
void  S2014C3_nt ::v56(){vfunc_called(this, "_ZN10S2014C3_nt3v56Ev");}
void  S2014C3_nt ::v57(){vfunc_called(this, "_ZN10S2014C3_nt3v57Ev");}
void  S2014C3_nt ::v58(){vfunc_called(this, "_ZN10S2014C3_nt3v58Ev");}
void  S2014C3_nt ::v59(){vfunc_called(this, "_ZN10S2014C3_nt3v59Ev");}
void  S2014C3_nt ::v60(){vfunc_called(this, "_ZN10S2014C3_nt3v60Ev");}
void  S2014C3_nt ::v61(){vfunc_called(this, "_ZN10S2014C3_nt3v61Ev");}
void  S2014C3_nt ::v62(){vfunc_called(this, "_ZN10S2014C3_nt3v62Ev");}
void  S2014C3_nt ::v63(){vfunc_called(this, "_ZN10S2014C3_nt3v63Ev");}
void  S2014C3_nt ::v64(){vfunc_called(this, "_ZN10S2014C3_nt3v64Ev");}
void  S2014C3_nt ::v65(){vfunc_called(this, "_ZN10S2014C3_nt3v65Ev");}
void  S2014C3_nt ::v66(){vfunc_called(this, "_ZN10S2014C3_nt3v66Ev");}
void  S2014C3_nt ::v67(){vfunc_called(this, "_ZN10S2014C3_nt3v67Ev");}
void  S2014C3_nt ::v68(){vfunc_called(this, "_ZN10S2014C3_nt3v68Ev");}
void  S2014C3_nt ::v69(){vfunc_called(this, "_ZN10S2014C3_nt3v69Ev");}
void  S2014C3_nt ::v70(){vfunc_called(this, "_ZN10S2014C3_nt3v70Ev");}
void  S2014C3_nt ::v71(){vfunc_called(this, "_ZN10S2014C3_nt3v71Ev");}
void  S2014C3_nt ::v72(){vfunc_called(this, "_ZN10S2014C3_nt3v72Ev");}
void  S2014C3_nt ::v73(){vfunc_called(this, "_ZN10S2014C3_nt3v73Ev");}
void  S2014C3_nt ::v74(){vfunc_called(this, "_ZN10S2014C3_nt3v74Ev");}
void  S2014C3_nt ::v75(){vfunc_called(this, "_ZN10S2014C3_nt3v75Ev");}
void  S2014C3_nt ::v76(){vfunc_called(this, "_ZN10S2014C3_nt3v76Ev");}
void  S2014C3_nt ::v77(){vfunc_called(this, "_ZN10S2014C3_nt3v77Ev");}
void  S2014C3_nt ::v78(){vfunc_called(this, "_ZN10S2014C3_nt3v78Ev");}
void  S2014C3_nt ::v79(){vfunc_called(this, "_ZN10S2014C3_nt3v79Ev");}
void  S2014C3_nt ::v80(){vfunc_called(this, "_ZN10S2014C3_nt3v80Ev");}
void  S2014C3_nt ::v81(){vfunc_called(this, "_ZN10S2014C3_nt3v81Ev");}
void  S2014C3_nt ::v82(){vfunc_called(this, "_ZN10S2014C3_nt3v82Ev");}
void  S2014C3_nt ::v83(){vfunc_called(this, "_ZN10S2014C3_nt3v83Ev");}
void  S2014C3_nt ::v84(){vfunc_called(this, "_ZN10S2014C3_nt3v84Ev");}
void  S2014C3_nt ::v85(){vfunc_called(this, "_ZN10S2014C3_nt3v85Ev");}
void  S2014C3_nt ::v86(){vfunc_called(this, "_ZN10S2014C3_nt3v86Ev");}
void  S2014C3_nt ::v87(){vfunc_called(this, "_ZN10S2014C3_nt3v87Ev");}
void  S2014C3_nt ::v88(){vfunc_called(this, "_ZN10S2014C3_nt3v88Ev");}
void  S2014C3_nt ::v89(){vfunc_called(this, "_ZN10S2014C3_nt3v89Ev");}
void  S2014C3_nt ::v90(){vfunc_called(this, "_ZN10S2014C3_nt3v90Ev");}
void  S2014C3_nt ::v91(){vfunc_called(this, "_ZN10S2014C3_nt3v91Ev");}
void  S2014C3_nt ::v92(){vfunc_called(this, "_ZN10S2014C3_nt3v92Ev");}
void  S2014C3_nt ::v93(){vfunc_called(this, "_ZN10S2014C3_nt3v93Ev");}
void  S2014C3_nt ::v94(){vfunc_called(this, "_ZN10S2014C3_nt3v94Ev");}
void  S2014C3_nt ::v95(){vfunc_called(this, "_ZN10S2014C3_nt3v95Ev");}
void  S2014C3_nt ::v96(){vfunc_called(this, "_ZN10S2014C3_nt3v96Ev");}
void  S2014C3_nt ::v97(){vfunc_called(this, "_ZN10S2014C3_nt3v97Ev");}
void  S2014C3_nt ::v98(){vfunc_called(this, "_ZN10S2014C3_nt3v98Ev");}
void  S2014C3_nt ::v99(){vfunc_called(this, "_ZN10S2014C3_nt3v99Ev");}
void  S2014C3_nt ::v100(){vfunc_called(this, "_ZN10S2014C3_nt4v100Ev");}
void  S2014C3_nt ::v101(){vfunc_called(this, "_ZN10S2014C3_nt4v101Ev");}
void  S2014C3_nt ::v102(){vfunc_called(this, "_ZN10S2014C3_nt4v102Ev");}
void  S2014C3_nt ::v103(){vfunc_called(this, "_ZN10S2014C3_nt4v103Ev");}
void  S2014C3_nt ::v104(){vfunc_called(this, "_ZN10S2014C3_nt4v104Ev");}
void  S2014C3_nt ::v105(){vfunc_called(this, "_ZN10S2014C3_nt4v105Ev");}
void  S2014C3_nt ::v106(){vfunc_called(this, "_ZN10S2014C3_nt4v106Ev");}
void  S2014C3_nt ::v107(){vfunc_called(this, "_ZN10S2014C3_nt4v107Ev");}
void  S2014C3_nt ::v108(){vfunc_called(this, "_ZN10S2014C3_nt4v108Ev");}
void  S2014C3_nt ::v109(){vfunc_called(this, "_ZN10S2014C3_nt4v109Ev");}
void  S2014C3_nt ::v110(){vfunc_called(this, "_ZN10S2014C3_nt4v110Ev");}
void  S2014C3_nt ::v111(){vfunc_called(this, "_ZN10S2014C3_nt4v111Ev");}
S2014C3_nt ::S2014C3_nt(){ note_ctor("S2014C3_nt", this);} // tgen

//skip512 S2014C3_nt

#else // __cplusplus

extern void _ZN10S2014C3_ntC1Ev();
extern void _ZN10S2014C3_ntD1Ev();
Name_Map name_map_S2014C3_nt[] = {
  NSPAIR(_ZN10S2014C3_ntC1Ev),
  NSPAIR(_ZN10S2014C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C4_nt;
extern VTBL_ENTRY _ZTI10S2014C4_nt[];
extern  VTBL_ENTRY _ZTV10S2014C4_nt[];
static Base_Class bases_S2014C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C4_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 _ZTI10S2014C3_nt[];
extern void _ZN10S2014C3_ntD1Ev();
extern void _ZN10S2014C3_ntD0Ev();
extern void _ZN10S2014C4_nt3v11Ev();
extern void _ZN10S2014C4_nt3v12Ev();
extern void _ZN10S2014C4_nt3v13Ev();
extern void _ZN10S2014C4_nt3v14Ev();
extern void _ZN10S2014C4_nt3v15Ev();
extern void _ZN10S2014C4_nt3v16Ev();
extern void _ZN10S2014C4_nt3v17Ev();
extern void _ZN10S2014C4_nt3v18Ev();
extern void _ZN10S2014C4_nt3v19Ev();
extern void _ZN10S2014C4_nt3v20Ev();
extern void _ZN10S2014C4_nt3v21Ev();
extern void _ZN10S2014C4_nt3v22Ev();
extern void _ZN10S2014C4_nt3v23Ev();
extern void _ZN10S2014C4_nt3v24Ev();
extern void _ZN10S2014C4_nt3v25Ev();
extern void _ZN10S2014C4_nt3v26Ev();
extern void _ZN10S2014C4_nt3v27Ev();
extern void _ZN10S2014C4_nt3v28Ev();
extern void _ZN10S2014C4_nt3v29Ev();
extern void _ZN10S2014C4_nt3v30Ev();
extern void _ZN10S2014C4_nt3v31Ev();
extern void _ZN10S2014C4_nt3v32Ev();
extern void _ZN10S2014C4_nt3v33Ev();
extern void _ZN10S2014C3_nt3v34Ev();
extern void _ZN10S2014C3_nt3v35Ev();
extern void _ZN10S2014C3_nt3v36Ev();
extern void _ZN10S2014C3_nt3v37Ev();
extern void _ZN10S2014C3_nt3v38Ev();
extern void _ZN10S2014C3_nt3v39Ev();
extern void _ZN10S2014C3_nt3v40Ev();
extern void _ZN10S2014C3_nt3v41Ev();
extern void _ZN10S2014C3_nt3v42Ev();
extern void _ZN10S2014C3_nt3v43Ev();
extern void _ZN10S2014C3_nt3v44Ev();
extern void _ZN10S2014C3_nt3v45Ev();
extern void _ZN10S2014C3_nt3v46Ev();
extern void _ZN10S2014C3_nt3v47Ev();
extern void _ZN10S2014C3_nt3v48Ev();
extern void _ZN10S2014C3_nt3v49Ev();
extern void _ZN10S2014C3_nt3v50Ev();
extern void _ZN10S2014C3_nt3v51Ev();
extern void _ZN10S2014C3_nt3v52Ev();
extern void _ZN10S2014C3_nt3v53Ev();
extern void _ZN10S2014C3_nt3v54Ev();
extern void _ZN10S2014C3_nt3v55Ev();
extern void _ZN10S2014C3_nt3v56Ev();
extern void _ZN10S2014C3_nt3v57Ev();
extern void _ZN10S2014C3_nt3v58Ev();
extern void _ZN10S2014C3_nt3v59Ev();
extern void _ZN10S2014C3_nt3v60Ev();
extern void _ZN10S2014C3_nt3v61Ev();
extern void _ZN10S2014C3_nt3v62Ev();
extern void _ZN10S2014C3_nt3v63Ev();
extern void _ZN10S2014C3_nt3v64Ev();
extern void _ZN10S2014C3_nt3v65Ev();
extern void _ZN10S2014C3_nt3v66Ev();
extern void _ZN10S2014C3_nt3v67Ev();
extern void _ZN10S2014C3_nt3v68Ev();
extern void _ZN10S2014C3_nt3v69Ev();
extern void _ZN10S2014C3_nt3v70Ev();
extern void _ZN10S2014C3_nt3v71Ev();
extern void _ZN10S2014C3_nt3v72Ev();
extern void _ZN10S2014C3_nt3v73Ev();
extern void _ZN10S2014C3_nt3v74Ev();
extern void _ZN10S2014C3_nt3v75Ev();
extern void _ZN10S2014C3_nt3v76Ev();
extern void _ZN10S2014C3_nt3v77Ev();
extern void _ZN10S2014C3_nt3v78Ev();
extern void _ZN10S2014C3_nt3v79Ev();
extern void _ZN10S2014C3_nt3v80Ev();
extern void _ZN10S2014C3_nt3v81Ev();
extern void _ZN10S2014C3_nt3v82Ev();
extern void _ZN10S2014C3_nt3v83Ev();
extern void _ZN10S2014C3_nt3v84Ev();
extern void _ZN10S2014C3_nt3v85Ev();
extern void _ZN10S2014C3_nt3v86Ev();
extern void _ZN10S2014C3_nt3v87Ev();
extern void _ZN10S2014C3_nt3v88Ev();
extern void _ZN10S2014C3_nt3v89Ev();
extern void _ZN10S2014C3_nt3v90Ev();
extern void _ZN10S2014C3_nt3v91Ev();
extern void _ZN10S2014C3_nt3v92Ev();
extern void _ZN10S2014C3_nt3v93Ev();
extern void _ZN10S2014C3_nt3v94Ev();
extern void _ZN10S2014C3_nt3v95Ev();
extern void _ZN10S2014C3_nt3v96Ev();
extern void _ZN10S2014C3_nt3v97Ev();
extern void _ZN10S2014C3_nt3v98Ev();
extern void _ZN10S2014C3_nt3v99Ev();
extern void _ZN10S2014C3_nt4v100Ev();
extern void _ZN10S2014C3_nt4v101Ev();
extern void _ZN10S2014C3_nt4v102Ev();
extern void _ZN10S2014C3_nt4v103Ev();
extern void _ZN10S2014C3_nt4v104Ev();
extern void _ZN10S2014C3_nt4v105Ev();
extern void _ZN10S2014C3_nt4v106Ev();
extern void _ZN10S2014C3_nt4v107Ev();
extern void _ZN10S2014C3_nt4v108Ev();
extern void _ZN10S2014C3_nt4v109Ev();
extern void _ZN10S2014C3_nt4v110Ev();
extern void _ZN10S2014C3_nt4v111Ev();
static  VTBL_ENTRY vtc_S2014C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2014C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2014C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v111Ev,
};
extern VTBL_ENTRY _ZTI10S2014C3_nt[];
VTBL_ENTRY *P__ZTI10S2014C3_nt = _ZTI10S2014C3_nt; 
extern  VTBL_ENTRY _ZTV10S2014C3_nt[];
Class_Descriptor cd_S2014C3_nt = {  "S2014C3_nt", // class name
  bases_S2014C3_nt, 1,
  &(vtc_S2014C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S2014C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2014C3_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  S2014C39  {
  int s2014c39f0[6];
  void  mf2014c39(); // _ZN8S2014C399mf2014c39Ev
};
//SIG(-1 S2014C39) C1{ m Fi[6]}


void  S2014C39 ::mf2014c39(){}

static void Test_S2014C39()
{
  {
    init_simple_test("S2014C39");
    S2014C39 lv;
    check2(sizeof(lv), 24, "sizeof(S2014C39)");
    check2(__alignof__(lv), 4, "__alignof__(S2014C39)");
    check_field_offset(lv, s2014c39f0, 0, "S2014C39.s2014c39f0");
  }
}
static Arrange_To_Call_Me vS2014C39(Test_S2014C39, "S2014C39", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C41_nt  {
  __tsi64 s2014c41f0;
  void  mf2014c41(); // _ZN11S2014C41_nt9mf2014c41Ev
};
//SIG(-1 S2014C41_nt) C1{ m FL}


void  S2014C41_nt ::mf2014c41(){}

//skip512 S2014C41_nt

#else // __cplusplus

Class_Descriptor cd_S2014C41_nt = {  "S2014C41_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  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  S2014C40_nt  {
  ::S2014C41_nt s2014c40f0;
  void  mf2014c40(); // _ZN11S2014C40_nt9mf2014c40Ev
};
//SIG(-1 S2014C40_nt) C1{ m FC2{ m FL}}


void  S2014C40_nt ::mf2014c40(){}

//skip512 S2014C40_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2014C2  : S2014C3_nt {
  int s2014c2f0;
  ::S2014C39 s2014c2f1;
  ::S2014C40_nt s2014c2f2;
  ::S2014C40_nt s2014c2f3;
  int s2014c2f4:16;
  int s2014c2f5:16;
  int s2014c2f6:16;
  unsigned char s2014c2f7:1;
  unsigned char s2014c2f8:1;
  virtual  ~S2014C2(); // _ZN7S2014C2D1Ev
  virtual void  v112(); // _ZN7S2014C24v112Ev
  virtual void  v113(); // _ZN7S2014C24v113Ev
  virtual void  v114(); // _ZN7S2014C24v114Ev
  virtual void  v115(); // _ZN7S2014C24v115Ev
  virtual void  v116(); // _ZN7S2014C24v116Ev
  virtual void  v117(); // _ZN7S2014C24v117Ev
  virtual void  v118(); // _ZN7S2014C24v118Ev
  virtual void  v119(); // _ZN7S2014C24v119Ev
  virtual void  v120(); // _ZN7S2014C24v120Ev
  S2014C2(); // tgen
};
//SIG(-1 S2014C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC6}} FC4 Fi} vd 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 v106 v107 v108 v109 v110 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 FC13{ m}} Fi} Fi Fp[7] FC14{ m Fp Fi FC13 FC15{ m}} 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 FC15 FC18{ m}}} 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] FC18} Fp[2] Fi:16 Fi:16 FC16 FC19 FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi FC22{ m Fi[6]} FC23{ m FC24{ m FL}} FC23 Fi:16 Fi:16 Fi:16 Fc:1 Fc:1}


 S2014C2 ::~S2014C2(){ note_dtor("S2014C2", this);}
void  S2014C2 ::v112(){vfunc_called(this, "_ZN7S2014C24v112Ev");}
void  S2014C2 ::v113(){vfunc_called(this, "_ZN7S2014C24v113Ev");}
void  S2014C2 ::v114(){vfunc_called(this, "_ZN7S2014C24v114Ev");}
void  S2014C2 ::v115(){vfunc_called(this, "_ZN7S2014C24v115Ev");}
void  S2014C2 ::v116(){vfunc_called(this, "_ZN7S2014C24v116Ev");}
void  S2014C2 ::v117(){vfunc_called(this, "_ZN7S2014C24v117Ev");}
void  S2014C2 ::v118(){vfunc_called(this, "_ZN7S2014C24v118Ev");}
void  S2014C2 ::v119(){vfunc_called(this, "_ZN7S2014C24v119Ev");}
void  S2014C2 ::v120(){vfunc_called(this, "_ZN7S2014C24v120Ev");}
S2014C2 ::S2014C2(){ note_ctor("S2014C2", this);} // tgen

static void Test_S2014C2()
{
  extern Class_Descriptor cd_S2014C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(112,172)];
    init_test(&cd_S2014C2, buf);
    S2014C2 *dp, &lv = *(dp=new (buf) S2014C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(888,684), "sizeof(S2014C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C2)");
    check_base_class_offset(lv, (S2014C4_nt*)(S2014C3_nt*), 0, "S2014C2");
    check_base_class_offset(lv, (S2014C3_nt*), 0, "S2014C2");
    check_field_offset(lv, s2014c2f0, ABISELECT(832,632), "S2014C2.s2014c2f0");
    check_field_offset(lv, s2014c2f1, ABISELECT(836,636), "S2014C2.s2014c2f1");
    check_field_offset(lv, s2014c2f2, ABISELECT(864,660), "S2014C2.s2014c2f2");
    check_field_offset(lv, s2014c2f3, ABISELECT(872,668), "S2014C2.s2014c2f3");
    set_bf_and_test(lv, s2014c2f4, ABISELECT(880,676), 0, 16, 1, "S2014C2");
    set_bf_and_test(lv, s2014c2f4, ABISELECT(880,676), 0, 16, hide_sll(1LL<<15), "S2014C2");
    set_bf_and_test(lv, s2014c2f5, ABISELECT(882,678), 0, 16, 1, "S2014C2");
    set_bf_and_test(lv, s2014c2f5, ABISELECT(882,678), 0, 16, hide_sll(1LL<<15), "S2014C2");
    set_bf_and_test(lv, s2014c2f6, ABISELECT(884,680), 0, 16, 1, "S2014C2");
    set_bf_and_test(lv, s2014c2f6, ABISELECT(884,680), 0, 16, hide_sll(1LL<<15), "S2014C2");
    set_bf_and_test(lv, s2014c2f7, ABISELECT(886,682), 0, 1, 1, "S2014C2");
    set_bf_and_test(lv, s2014c2f8, ABISELECT(886,682), 1, 1, 1, "S2014C2");
    test_class_info(&lv, &cd_S2014C2);
    dp->~S2014C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2014C2(Test_S2014C2, "S2014C2", ABISELECT(888,684));

#else // __cplusplus

extern void _ZN7S2014C2C1Ev();
extern void _ZN7S2014C2D1Ev();
Name_Map name_map_S2014C2[] = {
  NSPAIR(_ZN7S2014C2C1Ev),
  NSPAIR(_ZN7S2014C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C4_nt;
extern VTBL_ENTRY _ZTI10S2014C4_nt[];
extern  VTBL_ENTRY _ZTV10S2014C4_nt[];
extern Class_Descriptor cd_S2014C3_nt;
extern VTBL_ENTRY _ZTI10S2014C3_nt[];
extern  VTBL_ENTRY _ZTV10S2014C3_nt[];
static Base_Class bases_S2014C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C4_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_S2014C3_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 _ZTI7S2014C2[];
extern void _ZN7S2014C2D1Ev();
extern void _ZN7S2014C2D0Ev();
extern void _ZN10S2014C4_nt3v11Ev();
extern void _ZN10S2014C4_nt3v12Ev();
extern void _ZN10S2014C4_nt3v13Ev();
extern void _ZN10S2014C4_nt3v14Ev();
extern void _ZN10S2014C4_nt3v15Ev();
extern void _ZN10S2014C4_nt3v16Ev();
extern void _ZN10S2014C4_nt3v17Ev();
extern void _ZN10S2014C4_nt3v18Ev();
extern void _ZN10S2014C4_nt3v19Ev();
extern void _ZN10S2014C4_nt3v20Ev();
extern void _ZN10S2014C4_nt3v21Ev();
extern void _ZN10S2014C4_nt3v22Ev();
extern void _ZN10S2014C4_nt3v23Ev();
extern void _ZN10S2014C4_nt3v24Ev();
extern void _ZN10S2014C4_nt3v25Ev();
extern void _ZN10S2014C4_nt3v26Ev();
extern void _ZN10S2014C4_nt3v27Ev();
extern void _ZN10S2014C4_nt3v28Ev();
extern void _ZN10S2014C4_nt3v29Ev();
extern void _ZN10S2014C4_nt3v30Ev();
extern void _ZN10S2014C4_nt3v31Ev();
extern void _ZN10S2014C4_nt3v32Ev();
extern void _ZN10S2014C4_nt3v33Ev();
extern void _ZN10S2014C3_nt3v34Ev();
extern void _ZN10S2014C3_nt3v35Ev();
extern void _ZN10S2014C3_nt3v36Ev();
extern void _ZN10S2014C3_nt3v37Ev();
extern void _ZN10S2014C3_nt3v38Ev();
extern void _ZN10S2014C3_nt3v39Ev();
extern void _ZN10S2014C3_nt3v40Ev();
extern void _ZN10S2014C3_nt3v41Ev();
extern void _ZN10S2014C3_nt3v42Ev();
extern void _ZN10S2014C3_nt3v43Ev();
extern void _ZN10S2014C3_nt3v44Ev();
extern void _ZN10S2014C3_nt3v45Ev();
extern void _ZN10S2014C3_nt3v46Ev();
extern void _ZN10S2014C3_nt3v47Ev();
extern void _ZN10S2014C3_nt3v48Ev();
extern void _ZN10S2014C3_nt3v49Ev();
extern void _ZN10S2014C3_nt3v50Ev();
extern void _ZN10S2014C3_nt3v51Ev();
extern void _ZN10S2014C3_nt3v52Ev();
extern void _ZN10S2014C3_nt3v53Ev();
extern void _ZN10S2014C3_nt3v54Ev();
extern void _ZN10S2014C3_nt3v55Ev();
extern void _ZN10S2014C3_nt3v56Ev();
extern void _ZN10S2014C3_nt3v57Ev();
extern void _ZN10S2014C3_nt3v58Ev();
extern void _ZN10S2014C3_nt3v59Ev();
extern void _ZN10S2014C3_nt3v60Ev();
extern void _ZN10S2014C3_nt3v61Ev();
extern void _ZN10S2014C3_nt3v62Ev();
extern void _ZN10S2014C3_nt3v63Ev();
extern void _ZN10S2014C3_nt3v64Ev();
extern void _ZN10S2014C3_nt3v65Ev();
extern void _ZN10S2014C3_nt3v66Ev();
extern void _ZN10S2014C3_nt3v67Ev();
extern void _ZN10S2014C3_nt3v68Ev();
extern void _ZN10S2014C3_nt3v69Ev();
extern void _ZN10S2014C3_nt3v70Ev();
extern void _ZN10S2014C3_nt3v71Ev();
extern void _ZN10S2014C3_nt3v72Ev();
extern void _ZN10S2014C3_nt3v73Ev();
extern void _ZN10S2014C3_nt3v74Ev();
extern void _ZN10S2014C3_nt3v75Ev();
extern void _ZN10S2014C3_nt3v76Ev();
extern void _ZN10S2014C3_nt3v77Ev();
extern void _ZN10S2014C3_nt3v78Ev();
extern void _ZN10S2014C3_nt3v79Ev();
extern void _ZN10S2014C3_nt3v80Ev();
extern void _ZN10S2014C3_nt3v81Ev();
extern void _ZN10S2014C3_nt3v82Ev();
extern void _ZN10S2014C3_nt3v83Ev();
extern void _ZN10S2014C3_nt3v84Ev();
extern void _ZN10S2014C3_nt3v85Ev();
extern void _ZN10S2014C3_nt3v86Ev();
extern void _ZN10S2014C3_nt3v87Ev();
extern void _ZN10S2014C3_nt3v88Ev();
extern void _ZN10S2014C3_nt3v89Ev();
extern void _ZN10S2014C3_nt3v90Ev();
extern void _ZN10S2014C3_nt3v91Ev();
extern void _ZN10S2014C3_nt3v92Ev();
extern void _ZN10S2014C3_nt3v93Ev();
extern void _ZN10S2014C3_nt3v94Ev();
extern void _ZN10S2014C3_nt3v95Ev();
extern void _ZN10S2014C3_nt3v96Ev();
extern void _ZN10S2014C3_nt3v97Ev();
extern void _ZN10S2014C3_nt3v98Ev();
extern void _ZN10S2014C3_nt3v99Ev();
extern void _ZN10S2014C3_nt4v100Ev();
extern void _ZN10S2014C3_nt4v101Ev();
extern void _ZN10S2014C3_nt4v102Ev();
extern void _ZN10S2014C3_nt4v103Ev();
extern void _ZN10S2014C3_nt4v104Ev();
extern void _ZN10S2014C3_nt4v105Ev();
extern void _ZN10S2014C3_nt4v106Ev();
extern void _ZN10S2014C3_nt4v107Ev();
extern void _ZN10S2014C3_nt4v108Ev();
extern void _ZN10S2014C3_nt4v109Ev();
extern void _ZN10S2014C3_nt4v110Ev();
extern void _ZN10S2014C3_nt4v111Ev();
extern void _ZN7S2014C24v112Ev();
extern void _ZN7S2014C24v113Ev();
extern void _ZN7S2014C24v114Ev();
extern void _ZN7S2014C24v115Ev();
extern void _ZN7S2014C24v116Ev();
extern void _ZN7S2014C24v117Ev();
extern void _ZN7S2014C24v118Ev();
extern void _ZN7S2014C24v119Ev();
extern void _ZN7S2014C24v120Ev();
static  VTBL_ENTRY vtc_S2014C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2014C2[0]),
  (VTBL_ENTRY)&_ZN7S2014C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2014C2D0Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v112Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v113Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v114Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v115Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v116Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v117Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v118Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v119Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v120Ev,
};
extern VTBL_ENTRY _ZTI7S2014C2[];
extern  VTBL_ENTRY _ZTV7S2014C2[];
Class_Descriptor cd_S2014C2 = {  "S2014C2", // class name
  bases_S2014C2, 2,
  &(vtc_S2014C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(888,684), // object size
  NSPAIRA(_ZTI7S2014C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2014C2),114, //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  S2014C1  : S2014C2 {
  int s2014c1f0[2];
  char s2014c1f1;
  ::S2014C40_nt s2014c1f2;
  ::S2014C40_nt s2014c1f3;
  ::S2014C40_nt s2014c1f4;
  ::S2014C40_nt s2014c1f5;
  ::S2014C40_nt s2014c1f6;
  ::S2014C40_nt s2014c1f7;
  void *s2014c1f8[2];
  virtual  ~S2014C1(); // _ZN7S2014C1D1Ev
  virtual void  v1(); // _ZN7S2014C12v1Ev
  virtual void  v2(); // _ZN7S2014C12v2Ev
  virtual void  v3(); // _ZN7S2014C12v3Ev
  virtual void  v4(); // _ZN7S2014C12v4Ev
  virtual void  v5(); // _ZN7S2014C12v5Ev
  virtual void  v6(); // _ZN7S2014C12v6Ev
  virtual void  v7(); // _ZN7S2014C12v7Ev
  virtual void  v8(); // _ZN7S2014C12v8Ev
  virtual void  v9(); // _ZN7S2014C12v9Ev
  virtual void  v10(); // _ZN7S2014C13v10Ev
  S2014C1(); // tgen
};
//SIG(1 S2014C1) C1{ BC2{ BC3{ BC4{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC5{ BC6{ m Fp Fi FC7{ m} FC7}} FC5 Fi} 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 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 v108 v109 v110 v111 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 FC14{ m}} Fi} Fi Fp[7] FC15{ m Fp Fi FC14 FC16{ m}} 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 FC17{ BC18{ m Fp Fi FC16 FC19{ m}}} 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] FC20{ m Fp Fi[2] FC19} Fp[2] Fi:16 Fi:16 FC17 FC20 FC21{ m Fp Fi[2] FC22{ m}} Fp[2] Fi:24 Fi:8 Fp} vd v112 v113 v114 v115 v116 v117 v118 v119 v120 Fi FC23{ m Fi[6]} FC24{ m FC25{ m FL}} FC24 Fi:16 Fi:16 Fi:16 Fc:1 Fc:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi[2] Fc FC24 FC24 FC24 FC24 FC24 FC24 Fp[2]}


 S2014C1 ::~S2014C1(){ note_dtor("S2014C1", this);}
void  S2014C1 ::v1(){vfunc_called(this, "_ZN7S2014C12v1Ev");}
void  S2014C1 ::v2(){vfunc_called(this, "_ZN7S2014C12v2Ev");}
void  S2014C1 ::v3(){vfunc_called(this, "_ZN7S2014C12v3Ev");}
void  S2014C1 ::v4(){vfunc_called(this, "_ZN7S2014C12v4Ev");}
void  S2014C1 ::v5(){vfunc_called(this, "_ZN7S2014C12v5Ev");}
void  S2014C1 ::v6(){vfunc_called(this, "_ZN7S2014C12v6Ev");}
void  S2014C1 ::v7(){vfunc_called(this, "_ZN7S2014C12v7Ev");}
void  S2014C1 ::v8(){vfunc_called(this, "_ZN7S2014C12v8Ev");}
void  S2014C1 ::v9(){vfunc_called(this, "_ZN7S2014C12v9Ev");}
void  S2014C1 ::v10(){vfunc_called(this, "_ZN7S2014C13v10Ev");}
S2014C1 ::S2014C1(){ note_ctor("S2014C1", this);} // tgen

static void Test_S2014C1()
{
  extern Class_Descriptor cd_S2014C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(122,189)];
    init_test(&cd_S2014C1, buf);
    S2014C1 *dp, &lv = *(dp=new (buf) S2014C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(968,752), "sizeof(S2014C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2014C1)");
    check_base_class_offset(lv, (S2014C4_nt*)(S2014C3_nt*)(S2014C2*), 0, "S2014C1");
    check_base_class_offset(lv, (S2014C3_nt*)(S2014C2*), 0, "S2014C1");
    check_base_class_offset(lv, (S2014C2*), 0, "S2014C1");
    check_field_offset(lv, s2014c1f0, ABISELECT(888,684), "S2014C1.s2014c1f0");
    check_field_offset(lv, s2014c1f1, ABISELECT(896,692), "S2014C1.s2014c1f1");
    check_field_offset(lv, s2014c1f2, ABISELECT(904,696), "S2014C1.s2014c1f2");
    check_field_offset(lv, s2014c1f3, ABISELECT(912,704), "S2014C1.s2014c1f3");
    check_field_offset(lv, s2014c1f4, ABISELECT(920,712), "S2014C1.s2014c1f4");
    check_field_offset(lv, s2014c1f5, ABISELECT(928,720), "S2014C1.s2014c1f5");
    check_field_offset(lv, s2014c1f6, ABISELECT(936,728), "S2014C1.s2014c1f6");
    check_field_offset(lv, s2014c1f7, ABISELECT(944,736), "S2014C1.s2014c1f7");
    check_field_offset(lv, s2014c1f8, ABISELECT(952,744), "S2014C1.s2014c1f8");
    test_class_info(&lv, &cd_S2014C1);
    dp->~S2014C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2014C1(Test_S2014C1, "S2014C1", ABISELECT(968,752));

#else // __cplusplus

extern void _ZN7S2014C1C1Ev();
extern void _ZN7S2014C1D1Ev();
Name_Map name_map_S2014C1[] = {
  NSPAIR(_ZN7S2014C1C1Ev),
  NSPAIR(_ZN7S2014C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C4_nt;
extern VTBL_ENTRY _ZTI10S2014C4_nt[];
extern  VTBL_ENTRY _ZTV10S2014C4_nt[];
extern Class_Descriptor cd_S2014C3_nt;
extern VTBL_ENTRY _ZTI10S2014C3_nt[];
extern  VTBL_ENTRY _ZTV10S2014C3_nt[];
extern Class_Descriptor cd_S2014C2;
extern VTBL_ENTRY _ZTI7S2014C2[];
extern  VTBL_ENTRY _ZTV7S2014C2[];
static Base_Class bases_S2014C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C4_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_S2014C3_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_S2014C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2014C1[];
extern void _ZN7S2014C1D1Ev();
extern void _ZN7S2014C1D0Ev();
extern void _ZN10S2014C4_nt3v11Ev();
extern void _ZN10S2014C4_nt3v12Ev();
extern void _ZN10S2014C4_nt3v13Ev();
extern void _ZN10S2014C4_nt3v14Ev();
extern void _ZN10S2014C4_nt3v15Ev();
extern void _ZN10S2014C4_nt3v16Ev();
extern void _ZN10S2014C4_nt3v17Ev();
extern void _ZN10S2014C4_nt3v18Ev();
extern void _ZN10S2014C4_nt3v19Ev();
extern void _ZN10S2014C4_nt3v20Ev();
extern void _ZN10S2014C4_nt3v21Ev();
extern void _ZN10S2014C4_nt3v22Ev();
extern void _ZN10S2014C4_nt3v23Ev();
extern void _ZN10S2014C4_nt3v24Ev();
extern void _ZN10S2014C4_nt3v25Ev();
extern void _ZN10S2014C4_nt3v26Ev();
extern void _ZN10S2014C4_nt3v27Ev();
extern void _ZN10S2014C4_nt3v28Ev();
extern void _ZN10S2014C4_nt3v29Ev();
extern void _ZN10S2014C4_nt3v30Ev();
extern void _ZN10S2014C4_nt3v31Ev();
extern void _ZN10S2014C4_nt3v32Ev();
extern void _ZN10S2014C4_nt3v33Ev();
extern void _ZN10S2014C3_nt3v34Ev();
extern void _ZN10S2014C3_nt3v35Ev();
extern void _ZN10S2014C3_nt3v36Ev();
extern void _ZN10S2014C3_nt3v37Ev();
extern void _ZN10S2014C3_nt3v38Ev();
extern void _ZN10S2014C3_nt3v39Ev();
extern void _ZN10S2014C3_nt3v40Ev();
extern void _ZN10S2014C3_nt3v41Ev();
extern void _ZN10S2014C3_nt3v42Ev();
extern void _ZN10S2014C3_nt3v43Ev();
extern void _ZN10S2014C3_nt3v44Ev();
extern void _ZN10S2014C3_nt3v45Ev();
extern void _ZN10S2014C3_nt3v46Ev();
extern void _ZN10S2014C3_nt3v47Ev();
extern void _ZN10S2014C3_nt3v48Ev();
extern void _ZN10S2014C3_nt3v49Ev();
extern void _ZN10S2014C3_nt3v50Ev();
extern void _ZN10S2014C3_nt3v51Ev();
extern void _ZN10S2014C3_nt3v52Ev();
extern void _ZN10S2014C3_nt3v53Ev();
extern void _ZN10S2014C3_nt3v54Ev();
extern void _ZN10S2014C3_nt3v55Ev();
extern void _ZN10S2014C3_nt3v56Ev();
extern void _ZN10S2014C3_nt3v57Ev();
extern void _ZN10S2014C3_nt3v58Ev();
extern void _ZN10S2014C3_nt3v59Ev();
extern void _ZN10S2014C3_nt3v60Ev();
extern void _ZN10S2014C3_nt3v61Ev();
extern void _ZN10S2014C3_nt3v62Ev();
extern void _ZN10S2014C3_nt3v63Ev();
extern void _ZN10S2014C3_nt3v64Ev();
extern void _ZN10S2014C3_nt3v65Ev();
extern void _ZN10S2014C3_nt3v66Ev();
extern void _ZN10S2014C3_nt3v67Ev();
extern void _ZN10S2014C3_nt3v68Ev();
extern void _ZN10S2014C3_nt3v69Ev();
extern void _ZN10S2014C3_nt3v70Ev();
extern void _ZN10S2014C3_nt3v71Ev();
extern void _ZN10S2014C3_nt3v72Ev();
extern void _ZN10S2014C3_nt3v73Ev();
extern void _ZN10S2014C3_nt3v74Ev();
extern void _ZN10S2014C3_nt3v75Ev();
extern void _ZN10S2014C3_nt3v76Ev();
extern void _ZN10S2014C3_nt3v77Ev();
extern void _ZN10S2014C3_nt3v78Ev();
extern void _ZN10S2014C3_nt3v79Ev();
extern void _ZN10S2014C3_nt3v80Ev();
extern void _ZN10S2014C3_nt3v81Ev();
extern void _ZN10S2014C3_nt3v82Ev();
extern void _ZN10S2014C3_nt3v83Ev();
extern void _ZN10S2014C3_nt3v84Ev();
extern void _ZN10S2014C3_nt3v85Ev();
extern void _ZN10S2014C3_nt3v86Ev();
extern void _ZN10S2014C3_nt3v87Ev();
extern void _ZN10S2014C3_nt3v88Ev();
extern void _ZN10S2014C3_nt3v89Ev();
extern void _ZN10S2014C3_nt3v90Ev();
extern void _ZN10S2014C3_nt3v91Ev();
extern void _ZN10S2014C3_nt3v92Ev();
extern void _ZN10S2014C3_nt3v93Ev();
extern void _ZN10S2014C3_nt3v94Ev();
extern void _ZN10S2014C3_nt3v95Ev();
extern void _ZN10S2014C3_nt3v96Ev();
extern void _ZN10S2014C3_nt3v97Ev();
extern void _ZN10S2014C3_nt3v98Ev();
extern void _ZN10S2014C3_nt3v99Ev();
extern void _ZN10S2014C3_nt4v100Ev();
extern void _ZN10S2014C3_nt4v101Ev();
extern void _ZN10S2014C3_nt4v102Ev();
extern void _ZN10S2014C3_nt4v103Ev();
extern void _ZN10S2014C3_nt4v104Ev();
extern void _ZN10S2014C3_nt4v105Ev();
extern void _ZN10S2014C3_nt4v106Ev();
extern void _ZN10S2014C3_nt4v107Ev();
extern void _ZN10S2014C3_nt4v108Ev();
extern void _ZN10S2014C3_nt4v109Ev();
extern void _ZN10S2014C3_nt4v110Ev();
extern void _ZN10S2014C3_nt4v111Ev();
extern void _ZN7S2014C24v112Ev();
extern void _ZN7S2014C24v113Ev();
extern void _ZN7S2014C24v114Ev();
extern void _ZN7S2014C24v115Ev();
extern void _ZN7S2014C24v116Ev();
extern void _ZN7S2014C24v117Ev();
extern void _ZN7S2014C24v118Ev();
extern void _ZN7S2014C24v119Ev();
extern void _ZN7S2014C24v120Ev();
extern void _ZN7S2014C12v1Ev();
extern void _ZN7S2014C12v2Ev();
extern void _ZN7S2014C12v3Ev();
extern void _ZN7S2014C12v4Ev();
extern void _ZN7S2014C12v5Ev();
extern void _ZN7S2014C12v6Ev();
extern void _ZN7S2014C12v7Ev();
extern void _ZN7S2014C12v8Ev();
extern void _ZN7S2014C12v9Ev();
extern void _ZN7S2014C13v10Ev();
static  VTBL_ENTRY vtc_S2014C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2014C1[0]),
  (VTBL_ENTRY)&_ZN7S2014C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2014C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2014C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2014C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v112Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v113Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v114Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v115Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v116Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v117Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v118Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v119Ev,
  (VTBL_ENTRY)&_ZN7S2014C24v120Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2014C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2014C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S2014C1[];
extern  VTBL_ENTRY _ZTV7S2014C1[];
Class_Descriptor cd_S2014C1 = {  "S2014C1", // class name
  bases_S2014C1, 3,
  &(vtc_S2014C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(968,752), // object size
  NSPAIRA(_ZTI7S2014C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2014C1),124, //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  S19762C5  {
  short s19762c5f0:6;
  long s19762c5f1;
  short s19762c5f2:4;
  __tsi64 s19762c5f3[13];
  void *s19762c5f4;
  virtual void  v3(); // _ZN8S19762C52v3Ev
  ~S19762C5(); // tgen
  S19762C5(); // tgen
};
//SIG(-1 S19762C5) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S19762C5 ::v3(){vfunc_called(this, "_ZN8S19762C52v3Ev");}
S19762C5 ::~S19762C5(){ note_dtor("S19762C5", this);} // tgen
S19762C5 ::S19762C5(){ note_ctor("S19762C5", this);} // tgen

static void Test_S19762C5()
{
  extern Class_Descriptor cd_S19762C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,32)];
    init_test(&cd_S19762C5, buf);
    S19762C5 *dp, &lv = *(dp=new (buf) S19762C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,124), "sizeof(S19762C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19762C5)");
    set_bf_and_test(lv, s19762c5f0, ABISELECT(8,4), 0, 6, 1, "S19762C5");
    set_bf_and_test(lv, s19762c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19762C5");
    check_field_offset(lv, s19762c5f1, ABISELECT(16,8), "S19762C5.s19762c5f1");
    set_bf_and_test(lv, s19762c5f2, ABISELECT(24,12), 0, 4, 1, "S19762C5");
    set_bf_and_test(lv, s19762c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19762C5");
    check_field_offset(lv, s19762c5f3, ABISELECT(32,16), "S19762C5.s19762c5f3");
    check_field_offset(lv, s19762c5f4, ABISELECT(136,120), "S19762C5.s19762c5f4");
    test_class_info(&lv, &cd_S19762C5);
    dp->~S19762C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C5(Test_S19762C5, "S19762C5", ABISELECT(144,124));

#else // __cplusplus

extern void _ZN8S19762C5C1Ev();
extern void _ZN8S19762C5D1Ev();
Name_Map name_map_S19762C5[] = {
  NSPAIR(_ZN8S19762C5C1Ev),
  NSPAIR(_ZN8S19762C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19762C5[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C5[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
Class_Descriptor cd_S19762C5 = {  "S19762C5", // class name
  0,0,//no base classes
  &(vtc_S19762C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI8S19762C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19762C5),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  S19762C4  {
  int s19762c4f0[2];
  __tsi64 s19762c4f1[2];
  ::S19762C5 s19762c4f2[3];
  virtual void  v4(); // _ZN8S19762C42v4Ev
  virtual void  v5(); // _ZN8S19762C42v5Ev
  virtual void  v6(); // _ZN8S19762C42v6Ev
  ~S19762C4(); // tgen
  S19762C4(); // tgen
};
//SIG(-1 S19762C4) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S19762C4 ::v4(){vfunc_called(this, "_ZN8S19762C42v4Ev");}
void  S19762C4 ::v5(){vfunc_called(this, "_ZN8S19762C42v5Ev");}
void  S19762C4 ::v6(){vfunc_called(this, "_ZN8S19762C42v6Ev");}
S19762C4 ::~S19762C4(){ note_dtor("S19762C4", this);} // tgen
S19762C4 ::S19762C4(){ note_ctor("S19762C4", this);} // tgen

static void Test_S19762C4()
{
  extern Class_Descriptor cd_S19762C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,101)];
    init_test(&cd_S19762C4, buf);
    S19762C4 *dp, &lv = *(dp=new (buf) S19762C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,400), "sizeof(S19762C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19762C4)");
    check_field_offset(lv, s19762c4f0, ABISELECT(8,4), "S19762C4.s19762c4f0");
    check_field_offset(lv, s19762c4f1, ABISELECT(16,12), "S19762C4.s19762c4f1");
    check_field_offset(lv, s19762c4f2, ABISELECT(32,28), "S19762C4.s19762c4f2");
    test_class_info(&lv, &cd_S19762C4);
    dp->~S19762C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C4(Test_S19762C4, "S19762C4", ABISELECT(464,400));

#else // __cplusplus

extern void _ZN8S19762C4C1Ev();
extern void _ZN8S19762C4D1Ev();
Name_Map name_map_S19762C4[] = {
  NSPAIR(_ZN8S19762C4C1Ev),
  NSPAIR(_ZN8S19762C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19762C4[];
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY vtc_S19762C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C4[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
Class_Descriptor cd_S19762C4 = {  "S19762C4", // class name
  0,0,//no base classes
  &(vtc_S19762C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI8S19762C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19762C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C8  : virtual S19762C5 {
  void *s19762c8f0;
  ::S19762C5 s19762c8f1;
  int s19762c8f2:3;
  ~S19762C8(); // tgen
  S19762C8(); // tgen
};
//SIG(-1 S19762C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S19762C8 ::~S19762C8(){ note_dtor("S19762C8", this);} // tgen
S19762C8 ::S19762C8(){ note_ctor("S19762C8", this);} // tgen

static void Test_S19762C8()
{
  extern Class_Descriptor cd_S19762C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,66)];
    init_test(&cd_S19762C8, buf);
    S19762C8 *dp, &lv = *(dp=new (buf) S19762C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,260), "sizeof(S19762C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19762C8)");
    check_base_class_offset(lv, (S19762C5*), ABISELECT(168,136), "S19762C8");
    check_field_offset(lv, s19762c8f0, ABISELECT(8,4), "S19762C8.s19762c8f0");
    check_field_offset(lv, s19762c8f1, ABISELECT(16,8), "S19762C8.s19762c8f1");
    set_bf_and_test(lv, s19762c8f2, ABISELECT(160,132), 0, 3, 1, "S19762C8");
    set_bf_and_test(lv, s19762c8f2, ABISELECT(160,132), 0, 3, hide_sll(1LL<<2), "S19762C8");
    test_class_info(&lv, &cd_S19762C8);
    dp->~S19762C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C8(Test_S19762C8, "S19762C8", ABISELECT(312,260));

#else // __cplusplus

extern void _ZN8S19762C8C1Ev();
extern void _ZN8S19762C8D1Ev();
Name_Map name_map_S19762C8[] = {
  NSPAIR(_ZN8S19762C8C1Ev),
  NSPAIR(_ZN8S19762C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
static Base_Class bases_S19762C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    ABISELECT(168,136), //bcp->offset
    3, //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 _ZTI8S19762C8[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C8[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19762C8[];
static  VTT_ENTRY vtt_S19762C8[] = {
  {&(_ZTV8S19762C8[3]),  3,7},
  {&(_ZTV8S19762C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
Class_Descriptor cd_S19762C8 = {  "S19762C8", // class name
  bases_S19762C8, 1,
  &(vtc_S19762C8[0]), // expected_vtbl_contents
  &(vtt_S19762C8[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI8S19762C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19762C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19762C8),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  S19762C9  {
  __tsi64 s19762c9f0;
  long double s19762c9f1;
  void *s19762c9f2;
  char s19762c9f3;
  ::S19762C5 s19762c9f4;
  void *s19762c9f5[2];
  __tsi64 s19762c9f6[8];
  short s19762c9f7;
  void *s19762c9f8;
  __tsi64 s19762c9f9:64;
  virtual void  v7(); // _ZN8S19762C92v7Ev
  ~S19762C9(); // tgen
  S19762C9(); // tgen
};
//SIG(-1 S19762C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


void  S19762C9 ::v7(){vfunc_called(this, "_ZN8S19762C92v7Ev");}
S19762C9 ::~S19762C9(){ note_dtor("S19762C9", this);} // tgen
S19762C9 ::S19762C9(){ note_ctor("S19762C9", this);} // tgen

static void Test_S19762C9()
{
  extern Class_Descriptor cd_S19762C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,62)];
    init_test(&cd_S19762C9, buf);
    S19762C9 *dp, &lv = *(dp=new (buf) S19762C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,244), "sizeof(S19762C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C9)");
    check_field_offset(lv, s19762c9f0, ABISELECT(8,4), "S19762C9.s19762c9f0");
    check_field_offset(lv, s19762c9f1, ABISELECT(16,12), "S19762C9.s19762c9f1");
    check_field_offset(lv, s19762c9f2, ABISELECT(32,24), "S19762C9.s19762c9f2");
    check_field_offset(lv, s19762c9f3, ABISELECT(40,28), "S19762C9.s19762c9f3");
    check_field_offset(lv, s19762c9f4, ABISELECT(48,32), "S19762C9.s19762c9f4");
    check_field_offset(lv, s19762c9f5, ABISELECT(192,156), "S19762C9.s19762c9f5");
    check_field_offset(lv, s19762c9f6, ABISELECT(208,164), "S19762C9.s19762c9f6");
    check_field_offset(lv, s19762c9f7, ABISELECT(272,228), "S19762C9.s19762c9f7");
    check_field_offset(lv, s19762c9f8, ABISELECT(280,232), "S19762C9.s19762c9f8");
    set_bf_and_test(lv, s19762c9f9, ABISELECT(288,236), 0, 64, 1, "S19762C9");
    set_bf_and_test(lv, s19762c9f9, ABISELECT(288,236), 0, 64, hide_sll(1LL<<63), "S19762C9");
    test_class_info(&lv, &cd_S19762C9);
    dp->~S19762C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C9(Test_S19762C9, "S19762C9", ABISELECT(304,244));

#else // __cplusplus

extern void _ZN8S19762C9C1Ev();
extern void _ZN8S19762C9D1Ev();
Name_Map name_map_S19762C9[] = {
  NSPAIR(_ZN8S19762C9C1Ev),
  NSPAIR(_ZN8S19762C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19762C9[];
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY vtc_S19762C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C9[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
Class_Descriptor cd_S19762C9 = {  "S19762C9", // class name
  0,0,//no base classes
  &(vtc_S19762C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI8S19762C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19762C9),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C7  : S19762C5 , virtual S19762C4 , virtual S19762C8 , virtual S19762C9 {
  ::S19762C9 s19762c7f0;
  short s19762c7f1;
  int s19762c7f2[2];
  ~S19762C7(); // tgen
  S19762C7(); // tgen
};
//SIG(-1 S19762C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v2 v3 v4 Fi[2] FL[2] FC2[3]} VBC4{ VBC2 Fp FC2 Fi:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19762C7 ::~S19762C7(){ note_dtor("S19762C7", this);} // tgen
S19762C7 ::S19762C7(){ note_ctor("S19762C7", this);} // tgen

static void Test_S19762C7()
{
  extern Class_Descriptor cd_S19762C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,322)];
    init_test(&cd_S19762C7, buf);
    S19762C7 *dp, &lv = *(dp=new (buf) S19762C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,1284), "sizeof(S19762C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C7)");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), 0, "S19762C7");
    check_base_class_offset(lv, (S19762C4*), ABISELECT(464,380), "S19762C7");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(1096,916), "S19762C7");
    check_base_class_offset(lv, (S19762C8*), ABISELECT(928,780), "S19762C7");
    check_base_class_offset(lv, (S19762C9*), ABISELECT(1248,1040), "S19762C7");
    check_field_offset(lv, s19762c7f0, ABISELECT(144,124), "S19762C7.s19762c7f0");
    check_field_offset(lv, s19762c7f1, ABISELECT(448,368), "S19762C7.s19762c7f1");
    check_field_offset(lv, s19762c7f2, ABISELECT(452,372), "S19762C7.s19762c7f2");
    test_class_info(&lv, &cd_S19762C7);
    dp->~S19762C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C7(Test_S19762C7, "S19762C7", ABISELECT(1552,1284));

#else // __cplusplus

extern void _ZN8S19762C7C1Ev();
extern void _ZN8S19762C7D1Ev();
Name_Map name_map_S19762C7[] = {
  NSPAIR(_ZN8S19762C7C1Ev),
  NSPAIR(_ZN8S19762C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
static Base_Class bases_S19762C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(464,380), //bcp->offset
    7, //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},
  {&cd_S19762C5,    ABISELECT(1096,916), //bcp->offset
    18, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(928,780), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C9,    ABISELECT(1248,1040), //bcp->offset
    22, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19762C7[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY vtc_S19762C7[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern VTBL_ENTRY _ZTV8S19762C7[];
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__8S19762C7[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C7[] = {
  {&(_ZTV8S19762C7[6]),  6,26},
  {&(_ZTV8S19762C7[12]),  12,26},
  {&(_ZTV8S19762C7[18]),  18,26},
  {&(_ZTV8S19762C7[21]),  21,26},
  {&(_ZTV8S19762C7[25]),  25,26},
  {&(_tg__ZTV8S19762C8__8S19762C7[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__8S19762C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
Class_Descriptor cd_S19762C7 = {  "S19762C7", // class name
  bases_S19762C7, 5,
  &(vtc_S19762C7[0]), // expected_vtbl_contents
  &(vtt_S19762C7[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI8S19762C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19762C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19762C7),7, //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  S19762C10  : S19762C9 , S19762C4 , S19762C5 {
  __tsi64 s19762c10f0[2];
  void *s19762c10f1[8];
  ::S19762C7 s19762c10f2;
  void *s19762c10f3;
  int s19762c10f4;
  ::S19762C7 s19762c10f5;
  int s19762c10f6;
  virtual  ~S19762C10(); // _ZN9S19762C10D1Ev
  virtual void  v8(); // _ZN9S19762C102v8Ev
  S19762C10(); // tgen
};
//SIG(-1 S19762C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19762C10 ::~S19762C10(){ note_dtor("S19762C10", this);}
void  S19762C10 ::v8(){vfunc_called(this, "_ZN9S19762C102v8Ev");}
S19762C10 ::S19762C10(){ note_ctor("S19762C10", this);} // tgen

static void Test_S19762C10()
{
  extern Class_Descriptor cd_S19762C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,850)];
    init_test(&cd_S19762C10, buf);
    S19762C10 *dp, &lv = *(dp=new (buf) S19762C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,3396), "sizeof(S19762C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C10)");
    check_base_class_offset(lv, (S19762C9*), 0, "S19762C10");
    check_base_class_offset(lv, (S19762C4*), ABISELECT(296,244), "S19762C10");
    check_base_class_offset(lv, (S19762C5*), ABISELECT(760,644), "S19762C10");
    check_field_offset(lv, s19762c10f0, ABISELECT(904,768), "S19762C10.s19762c10f0");
    check_field_offset(lv, s19762c10f1, ABISELECT(920,784), "S19762C10.s19762c10f1");
    check_field_offset(lv, s19762c10f2, ABISELECT(992,816), "S19762C10.s19762c10f2");
    check_field_offset(lv, s19762c10f3, ABISELECT(2544,2100), "S19762C10.s19762c10f3");
    check_field_offset(lv, s19762c10f4, ABISELECT(2552,2104), "S19762C10.s19762c10f4");
    check_field_offset(lv, s19762c10f5, ABISELECT(2560,2108), "S19762C10.s19762c10f5");
    check_field_offset(lv, s19762c10f6, ABISELECT(4112,3392), "S19762C10.s19762c10f6");
    test_class_info(&lv, &cd_S19762C10);
    dp->~S19762C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C10(Test_S19762C10, "S19762C10", ABISELECT(4128,3396));

#else // __cplusplus

extern void _ZN9S19762C10C1Ev();
extern void _ZN9S19762C10D1Ev();
Name_Map name_map_S19762C10[] = {
  NSPAIR(_ZN9S19762C10C1Ev),
  NSPAIR(_ZN9S19762C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
static Base_Class bases_S19762C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19762C4,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_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_S19762C5,    ABISELECT(760,644), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C10[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN9S19762C10D1Ev();
extern void _ZN9S19762C10D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C10[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19762C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI9S19762C10[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI9S19762C10[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
Class_Descriptor cd_S19762C10 = {  "S19762C10", // class name
  bases_S19762C10, 3,
  &(vtc_S19762C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI9S19762C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C10),14, //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  S19762C13  : S19762C9 {
  ::S19762C8 s19762c13f0;
  int s19762c13f1;
  void *s19762c13f2;
  int s19762c13f3;
  virtual  ~S19762C13(); // _ZN9S19762C13D1Ev
  virtual void  v12(); // _ZN9S19762C133v12Ev
  S19762C13(); // tgen
};
//SIG(-1 S19762C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


 S19762C13 ::~S19762C13(){ note_dtor("S19762C13", this);}
void  S19762C13 ::v12(){vfunc_called(this, "_ZN9S19762C133v12Ev");}
S19762C13 ::S19762C13(){ note_ctor("S19762C13", this);} // tgen

static void Test_S19762C13()
{
  extern Class_Descriptor cd_S19762C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,130)];
    init_test(&cd_S19762C13, buf);
    S19762C13 *dp, &lv = *(dp=new (buf) S19762C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,516), "sizeof(S19762C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C13)");
    check_base_class_offset(lv, (S19762C9*), 0, "S19762C13");
    check_field_offset(lv, s19762c13f0, ABISELECT(296,244), "S19762C13.s19762c13f0");
    check_field_offset(lv, s19762c13f1, ABISELECT(608,504), "S19762C13.s19762c13f1");
    check_field_offset(lv, s19762c13f2, ABISELECT(616,508), "S19762C13.s19762c13f2");
    check_field_offset(lv, s19762c13f3, ABISELECT(624,512), "S19762C13.s19762c13f3");
    test_class_info(&lv, &cd_S19762C13);
    dp->~S19762C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C13(Test_S19762C13, "S19762C13", ABISELECT(640,516));

#else // __cplusplus

extern void _ZN9S19762C13C1Ev();
extern void _ZN9S19762C13D1Ev();
Name_Map name_map_S19762C13[] = {
  NSPAIR(_ZN9S19762C13C1Ev),
  NSPAIR(_ZN9S19762C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
static Base_Class bases_S19762C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S19762C13[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN9S19762C13D1Ev();
extern void _ZN9S19762C13D0Ev();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY vtc_S19762C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C13[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19762C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
Class_Descriptor cd_S19762C13 = {  "S19762C13", // class name
  bases_S19762C13, 1,
  &(vtc_S19762C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI9S19762C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19762C13),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  S19762C12  : virtual S19762C9 , virtual S19762C10 , virtual S19762C5 , virtual S19762C8 {
  __tsi64 s19762c12f0:44;
  void *s19762c12f1;
  int s19762c12f2;
  ::S19762C7 s19762c12f3;
  __tsi64 s19762c12f4[2];
  int s19762c12f5[3];
  ::S19762C10 s19762c12f6;
  char s19762c12f7:7;
  ::S19762C13 s19762c12f8;
  ~S19762C12(); // tgen
  S19762C12(); // tgen
};
//SIG(-1 S19762C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S19762C12 ::~S19762C12(){ note_dtor("S19762C12", this);} // tgen
S19762C12 ::S19762C12(){ note_ctor("S19762C12", this);} // tgen

static void Test_S19762C12()
{
  extern Class_Descriptor cd_S19762C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,2288)];
    init_test(&cd_S19762C12, buf);
    S19762C12 *dp, &lv = *(dp=new (buf) S19762C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,9148), "sizeof(S19762C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C12)");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*), ABISELECT(6400,5248), "S19762C12");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(6704,5492), "S19762C12");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(7000,5736), "S19762C12");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(7464,6136), "S19762C12");
    check_base_class_offset(lv, (S19762C10*), ABISELECT(6704,5492), "S19762C12");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), ABISELECT(10824,8888), "S19762C12");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(10824,8888), "S19762C12");
    check_base_class_offset(lv, (S19762C8*), ABISELECT(10968,9012), "S19762C12");
    set_bf_and_test(lv, s19762c12f0, ABISELECT(8,4), 0, 44, 1, "S19762C12");
    set_bf_and_test(lv, s19762c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19762C12");
    check_field_offset(lv, s19762c12f1, ABISELECT(16,12), "S19762C12.s19762c12f1");
    check_field_offset(lv, s19762c12f2, ABISELECT(24,16), "S19762C12.s19762c12f2");
    check_field_offset(lv, s19762c12f3, ABISELECT(32,20), "S19762C12.s19762c12f3");
    check_field_offset(lv, s19762c12f4, ABISELECT(1584,1304), "S19762C12.s19762c12f4");
    check_field_offset(lv, s19762c12f5, ABISELECT(1600,1320), "S19762C12.s19762c12f5");
    check_field_offset(lv, s19762c12f6, ABISELECT(1616,1332), "S19762C12.s19762c12f6");
    set_bf_and_test(lv, s19762c12f7, ABISELECT(5744,4728), 0, 7, 1, "S19762C12");
    set_bf_and_test(lv, s19762c12f7, ABISELECT(5744,4728), 0, 7, hide_sll(1LL<<6), "S19762C12");
    check_field_offset(lv, s19762c12f8, ABISELECT(5760,4732), "S19762C12.s19762c12f8");
    test_class_info(&lv, &cd_S19762C12);
    dp->~S19762C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C12(Test_S19762C12, "S19762C12", ABISELECT(11136,9148));

#else // __cplusplus

extern void _ZN9S19762C12C1Ev();
extern void _ZN9S19762C12D1Ev();
Name_Map name_map_S19762C12[] = {
  NSPAIR(_ZN9S19762C12C1Ev),
  NSPAIR(_ZN9S19762C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
static Base_Class bases_S19762C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    ABISELECT(6400,5248), //bcp->offset
    8, //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_S19762C9,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(7000,5736), //bcp->offset
    25, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(7464,6136), //bcp->offset
    30, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(6704,5492), //bcp->offset
    12, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(10824,8888), //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C8,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C12[];
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C12[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern VTBL_ENTRY _ZTV9S19762C12[];
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C12[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C12[] = {
  {&(_ZTV9S19762C12[6]),  6,40},
  {&(_ZTV9S19762C12[11]),  11,40},
  {&(_ZTV9S19762C12[21]),  21,40},
  {&(_ZTV9S19762C12[27]),  27,40},
  {&(_ZTV9S19762C12[32]),  32,40},
  {&(_ZTV9S19762C12[36]),  36,40},
  {&(_ZTV9S19762C12[40]),  40,40},
  {&(_tg__ZTV8S19762C8__9S19762C12[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C12 = {  "S19762C12", // class name
  bases_S19762C12, 7,
  &(vtc_S19762C12[0]), // expected_vtbl_contents
  &(vtt_S19762C12[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI9S19762C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19762C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C11  : virtual S19762C10 , virtual S19762C5 , virtual S19762C8 , S19762C7 , S19762C12 {
  ::S19762C10 s19762c11f0;
  __tsi64 s19762c11f1;
  char s19762c11f2:7;
  virtual void  v9(); // _ZN9S19762C112v9Ev
  ~S19762C11(); // tgen
  S19762C11(); // tgen
};
//SIG(-1 S19762C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S19762C11 ::v9(){vfunc_called(this, "_ZN9S19762C112v9Ev");}
S19762C11 ::~S19762C11(){ note_dtor("S19762C11", this);} // tgen
S19762C11 ::S19762C11(){ note_ctor("S19762C11", this);} // tgen

static void Test_S19762C11()
{
  extern Class_Descriptor cd_S19762C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,3335)];
    init_test(&cd_S19762C11, buf);
    S19762C11 *dp, &lv = *(dp=new (buf) S19762C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,13336), "sizeof(S19762C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C11)");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(11008,9036), "S19762C11");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(11304,9280), "S19762C11");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(11768,9680), "S19762C11");
    check_base_class_offset(lv, (S19762C10*), ABISELECT(11008,9036), "S19762C11");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*), ABISELECT(11008,9036), "S19762C11");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), ABISELECT(15128,12432), "S19762C11");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(15128,12432), "S19762C11");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*), ABISELECT(15128,12432), "S19762C11");
    check_base_class_offset(lv, (S19762C8*), ABISELECT(15272,12556), "S19762C11");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(15272,12556), "S19762C11");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*), ABISELECT(15272,12556), "S19762C11");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), 0, "S19762C11");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(15440,12692), "S19762C11");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(15904,13092), "S19762C11");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*), ABISELECT(15904,13092), "S19762C11");
    check_base_class_offset(lv, (S19762C7*), 0, "S19762C11");
    check_base_class_offset(lv, (S19762C12*), ABISELECT(464,380), "S19762C11");
    check_field_offset(lv, s19762c11f0, ABISELECT(6864,5628), "S19762C11.s19762c11f0");
    check_field_offset(lv, s19762c11f1, ABISELECT(10992,9024), "S19762C11.s19762c11f1");
    set_bf_and_test(lv, s19762c11f2, ABISELECT(11000,9032), 0, 7, 1, "S19762C11");
    set_bf_and_test(lv, s19762c11f2, ABISELECT(11000,9032), 0, 7, hide_sll(1LL<<6), "S19762C11");
    test_class_info(&lv, &cd_S19762C11);
    dp->~S19762C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C11(Test_S19762C11, "S19762C11", ABISELECT(16208,13336));

#else // __cplusplus

extern void _ZN9S19762C11C1Ev();
extern void _ZN9S19762C11D1Ev();
Name_Map name_map_S19762C11[] = {
  NSPAIR(_ZN9S19762C11C1Ev),
  NSPAIR(_ZN9S19762C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
static Base_Class bases_S19762C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    ABISELECT(11008,9036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19762C4,    ABISELECT(11304,9280), //bcp->offset
    32, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(11768,9680), //bcp->offset
    37, //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_S19762C10,    ABISELECT(11008,9036), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(15128,12432), //bcp->offset
    40, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C8,    ABISELECT(15272,12556), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(15440,12692), //bcp->offset
    47, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(15904,13092), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S19762C12,    ABISELECT(464,380), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C11[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY vtc_S19762C11[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern VTBL_ENTRY _ZTV9S19762C11[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__9S19762C11[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__9S19762C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__9S19762C11[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__9S19762C11[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__9S19762C11[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C12__9S19762C11[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C12__9S19762C11[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C11[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C11[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C12__9S19762C11[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12__9S19762C11[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C11[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C11[] = {
  {&(_ZTV9S19762C11[7]),  7,59},
  {&(_tg__ZTV8S19762C7__9S19762C11[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__9S19762C11[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__9S19762C11[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__9S19762C11[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__9S19762C11[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C12__9S19762C11[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C12__9S19762C11[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C11[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C11[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C12__9S19762C11[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C12__9S19762C11[3]),  3,3},
  {&(_ZTV9S19762C11[28]),  28,59},
  {&(_ZTV9S19762C11[34]),  34,59},
  {&(_ZTV9S19762C11[39]),  39,59},
  {&(_ZTV9S19762C11[43]),  43,59},
  {&(_ZTV9S19762C11[47]),  47,59},
  {&(_ZTV9S19762C11[52]),  52,59},
  {&(_ZTV9S19762C11[58]),  58,59},
  {&(_ZTV9S19762C11[17]),  17,59},
  {&(_tg__ZTV8S19762C8__9S19762C11[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C11 = {  "S19762C11", // class name
  bases_S19762C11, 11,
  &(vtc_S19762C11[0]), // expected_vtbl_contents
  &(vtt_S19762C11[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI9S19762C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19762C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C6  : virtual S19762C5 , virtual S19762C7 , S19762C10 , S19762C11 {
  ::S19762C12 s19762c6f0;
  short s19762c6f1;
  int s19762c6f2:8;
  virtual void  v10(); // _ZN8S19762C63v10Ev
  virtual void  v11(); // _ZN8S19762C63v11Ev
  ~S19762C6(); // tgen
  S19762C6(); // tgen
};
//SIG(-1 S19762C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC5{ VBC2 Fp FC2 Fi:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 FL[2] Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 FL[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs Fi:8}


void  S19762C6 ::v10(){vfunc_called(this, "_ZN8S19762C63v10Ev");}
void  S19762C6 ::v11(){vfunc_called(this, "_ZN8S19762C63v11Ev");}
S19762C6 ::~S19762C6(){ note_dtor("S19762C6", this);} // tgen
S19762C6 ::S19762C6(){ note_ctor("S19762C6", this);} // tgen

static void Test_S19762C6()
{
  extern Class_Descriptor cd_S19762C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,6567)];
    init_test(&cd_S19762C6, buf);
    S19762C6 *dp, &lv = *(dp=new (buf) S19762C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,26264), "sizeof(S19762C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C6)");
    /*is_ambiguous_... S19762C6::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), ABISELECT(26280,21584), "S19762C6");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(26280,21584), "S19762C6");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(26280,21584), "S19762C6");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(26280,21584), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), ABISELECT(26432,21708), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(26896,22088), "S19762C6");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(26896,22088), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(27360,22488), "S19762C6");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(27360,22488), "S19762C6");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(27360,22488), "S19762C6");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(27360,22488), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(27536,22624), "S19762C6");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(27536,22624), "S19762C6");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(27536,22624), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*), ABISELECT(26432,21708), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*), 0, "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(296,244), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(760,644), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C10*), 0, "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(27840,22868), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(28136,23112), "S19762C6");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(28600,23512), "S19762C6");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(27840,22868), "S19762C6");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(27840,22868), "S19762C6");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(4128,3396), "S19762C6");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(4128,3396), "S19762C6");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(4592,3776), "S19762C6");
    check_base_class_offset(lv, (S19762C11*), ABISELECT(4128,3396), "S19762C6");
    check_field_offset(lv, s19762c6f0, ABISELECT(15136,12432), "S19762C6.s19762c6f0");
    check_field_offset(lv, s19762c6f1, ABISELECT(26272,21580), "S19762C6.s19762c6f1");
    set_bf_and_test(lv, s19762c6f2, ABISELECT(26274,21582), 0, 8, 1, "S19762C6");
    set_bf_and_test(lv, s19762c6f2, ABISELECT(26274,21582), 0, 8, hide_sll(1LL<<7), "S19762C6");
    test_class_info(&lv, &cd_S19762C6);
    dp->~S19762C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C6(Test_S19762C6, "S19762C6", ABISELECT(31968,26264));

#else // __cplusplus

extern void _ZN8S19762C6C1Ev();
extern void _ZN8S19762C6D1Ev();
Name_Map name_map_S19762C6[] = {
  NSPAIR(_ZN8S19762C6C1Ev),
  NSPAIR(_ZN8S19762C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
static Base_Class bases_S19762C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    ABISELECT(26280,21584), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(26432,21708), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(26896,22088), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(27360,22488), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(27536,22624), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(26432,21708), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(296,244), //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
    9, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(760,644), //bcp->offset
    19, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19762C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C9,    ABISELECT(27840,22868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(28136,23112), //bcp->offset
    81, //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(28600,23512), //bcp->offset
    86, //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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(27840,22868), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(4592,3776), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(4128,3396), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19762C6[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C6D1Ev();
extern void _ZN8S19762C6D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev)();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn27840_N8S19762C6D1Ev,_ZThn22868_N8S19762C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev)();
extern void ABISELECT(_ZThn27840_N8S19762C6D0Ev,_ZThn22868_N8S19762C6D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C6[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev),
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19762C6[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__8S19762C6[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A1__8S19762C6[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A1__8S19762C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A1__8S19762C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__8S19762C6[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A1__8S19762C6[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__8S19762C6[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__8S19762C6[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn23248_N9S19762C12D1Ev,_ZThn19092_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn23248_N9S19762C12D0Ev,_ZThn19092_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__8S19762C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__8S19762C6[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__8S19762C6[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__8S19762C6[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__8S19762C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn23712_N9S19762C11D1Ev,_ZThn19472_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn23712_N9S19762C11D0Ev,_ZThn19472_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__8S19762C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__8S19762C6[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__8S19762C6[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__8S19762C6[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__8S19762C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__8S19762C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__8S19762C6[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__8S19762C6[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C6[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__8S19762C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__8S19762C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__8S19762C6[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__8S19762C6[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C6[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__8S19762C6[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C6[] = {
  {&(_ZTV8S19762C6[8]),  8,89},
  {&(_tg__ZTV9S19762C11__8S19762C6[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A1__8S19762C6[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A1__8S19762C6[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A1__8S19762C6[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__8S19762C6[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A1__8S19762C6[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__8S19762C6[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__8S19762C6[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__8S19762C6[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__8S19762C6[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__8S19762C6[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__8S19762C6[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__8S19762C6[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__8S19762C6[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__8S19762C6[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__8S19762C6[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__8S19762C6[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__8S19762C6[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__8S19762C6[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__8S19762C6[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__8S19762C6[6]),  6,8},
  {&(_ZTV8S19762C6[44]),  44,89},
  {&(_ZTV8S19762C6[52]),  52,89},
  {&(_ZTV8S19762C6[58]),  58,89},
  {&(_ZTV8S19762C6[64]),  64,89},
  {&(_ZTV8S19762C6[67]),  67,89},
  {&(_ZTV8S19762C6[29]),  29,89},
  {&(_ZTV8S19762C6[77]),  77,89},
  {&(_ZTV8S19762C6[83]),  83,89},
  {&(_ZTV8S19762C6[88]),  88,89},
  {&(_ZTV8S19762C6[39]),  39,89},
  {&(_tg__ZTV8S19762C7__8S19762C6[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__8S19762C6[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__8S19762C6[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__8S19762C6[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__8S19762C6[3]),  3,4},
  {&(_tg__ZTV8S19762C8__8S19762C6[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__8S19762C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19762C6[];
extern  VTBL_ENTRY _ZTV8S19762C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C6[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19762C11D0Ev,_ZThn19472_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19762C11D1Ev,_ZThn19472_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19762C12D0Ev,_ZThn19092_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19762C12D1Ev,_ZThn19092_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19762C6D0Ev,_ZThn22868_N8S19762C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19762C6D1Ev,_ZThn22868_N8S19762C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C6 = {  "S19762C6", // class name
  bases_S19762C6, 18,
  &(vtc_S19762C6[0]), // expected_vtbl_contents
  &(vtt_S19762C6[0]), // expected_vtt_contents
  ABISELECT(31968,26264), // object size
  NSPAIRA(_ZTI8S19762C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19762C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19762C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C14  : virtual S19762C8 {
  ::S19762C12 s19762c14f0;
  int s19762c14f1:6;
  int s19762c14f2;
  __tsi64 s19762c14f3;
  ~S19762C14(); // tgen
  S19762C14(); // tgen
};
//SIG(-1 S19762C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC3 Fi:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 FL[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} Fi:6 Fi FL}


S19762C14 ::~S19762C14(){ note_dtor("S19762C14", this);} // tgen
S19762C14 ::S19762C14(){ note_ctor("S19762C14", this);} // tgen

static void Test_S19762C14()
{
  extern Class_Descriptor cd_S19762C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,2358)];
    init_test(&cd_S19762C14, buf);
    S19762C14 *dp, &lv = *(dp=new (buf) S19762C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,9428), "sizeof(S19762C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C14)");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(11336,9304), "S19762C14");
    check_base_class_offset(lv, (S19762C8*), ABISELECT(11168,9168), "S19762C14");
    check_field_offset(lv, s19762c14f0, ABISELECT(16,4), "S19762C14.s19762c14f0");
    set_bf_and_test(lv, s19762c14f1, ABISELECT(11152,9152), 0, 6, 1, "S19762C14");
    set_bf_and_test(lv, s19762c14f1, ABISELECT(11152,9152), 0, 6, hide_sll(1LL<<5), "S19762C14");
    check_field_offset(lv, s19762c14f2, ABISELECT(11156,9156), "S19762C14.s19762c14f2");
    check_field_offset(lv, s19762c14f3, ABISELECT(11160,9160), "S19762C14.s19762c14f3");
    test_class_info(&lv, &cd_S19762C14);
    dp->~S19762C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C14(Test_S19762C14, "S19762C14", ABISELECT(11488,9428));

#else // __cplusplus

extern void _ZN9S19762C14C1Ev();
extern void _ZN9S19762C14D1Ev();
Name_Map name_map_S19762C14[] = {
  NSPAIR(_ZN9S19762C14C1Ev),
  NSPAIR(_ZN9S19762C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
static Base_Class bases_S19762C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    ABISELECT(11336,9304), //bcp->offset
    7, //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
    1, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(11168,9168), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //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 _ZTI9S19762C14[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C14[] = {
  ABISELECT(11336,9304),
  ABISELECT(11168,9168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
  ABISELECT(168,136),
  ABISELECT(-11168,-9168),
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
  0,
  ABISELECT(-11336,-9304),
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19762C14[];
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C14[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C14[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C14[] = {
  {&(_ZTV9S19762C14[4]),  4,11},
  {&(_ZTV9S19762C14[7]),  7,11},
  {&(_ZTV9S19762C14[10]),  10,11},
  {&(_tg__ZTV8S19762C8__9S19762C14[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C14[];
extern  VTBL_ENTRY _ZTV9S19762C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C14[];
Class_Descriptor cd_S19762C14 = {  "S19762C14", // class name
  bases_S19762C14, 2,
  &(vtc_S19762C14[0]), // expected_vtbl_contents
  &(vtt_S19762C14[0]), // expected_vtt_contents
  ABISELECT(11488,9428), // object size
  NSPAIRA(_ZTI9S19762C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19762C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C14),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  S19762C15  : virtual S19762C9 , S19762C4 , virtual S19762C11 {
  char s19762c15f0:8;
  int s19762c15f1;
  ~S19762C15(); // tgen
  S19762C15(); // tgen
};
//SIG(-1 S19762C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 FL[2] Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S19762C15 ::~S19762C15(){ note_dtor("S19762C15", this);} // tgen
S19762C15 ::S19762C15(){ note_ctor("S19762C15", this);} // tgen

static void Test_S19762C15()
{
  extern Class_Descriptor cd_S19762C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,3437)];
    init_test(&cd_S19762C15, buf);
    S19762C15 *dp, &lv = *(dp=new (buf) S19762C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,13744), "sizeof(S19762C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C15)");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*), ABISELECT(480,408), "S19762C15");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(480,408), "S19762C15");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(480,408), "S19762C15");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*), 0, "S19762C15");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(11792,9688), "S19762C15");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(12088,9932), "S19762C15");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(12552,10332), "S19762C15");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(11792,9688), "S19762C15");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(11792,9688), "S19762C15");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(15912,13084), "S19762C15");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(15912,13084), "S19762C15");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(15912,13084), "S19762C15");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(16056,13208), "S19762C15");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(16056,13208), "S19762C15");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(16056,13208), "S19762C15");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(784,652), "S19762C15");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(16224,13344), "S19762C15");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(784,652), "S19762C15");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(1248,1032), "S19762C15");
    check_base_class_offset(lv, (S19762C11*), ABISELECT(784,652), "S19762C15");
    set_bf_and_test(lv, s19762c15f0, ABISELECT(464,400), 0, 8, 1, "S19762C15");
    set_bf_and_test(lv, s19762c15f0, ABISELECT(464,400), 0, 8, hide_sll(1LL<<7), "S19762C15");
    check_field_offset(lv, s19762c15f1, ABISELECT(468,404), "S19762C15.s19762c15f1");
    test_class_info(&lv, &cd_S19762C15);
    dp->~S19762C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C15(Test_S19762C15, "S19762C15", ABISELECT(16688,13744));

#else // __cplusplus

extern void _ZN9S19762C15C1Ev();
extern void _ZN9S19762C15D1Ev();
Name_Map name_map_S19762C15[] = {
  NSPAIR(_ZN9S19762C15C1Ev),
  NSPAIR(_ZN9S19762C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
static Base_Class bases_S19762C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    ABISELECT(480,408), //bcp->offset
    13, //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_S19762C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C9,    ABISELECT(11792,9688), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(12088,9932), //bcp->offset
    52, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(12552,10332), //bcp->offset
    57, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(11792,9688), //bcp->offset
    39, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(15912,13084), //bcp->offset
    60, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(16056,13208), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(16224,13344), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    10, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(1248,1032), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(784,652), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C15[];
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S19762C15D1Ev,_ZThn652_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S19762C15D0Ev,_ZThn652_N9S19762C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S19762C15D1Ev,_ZThn9688_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S19762C15D0Ev,_ZThn9688_N9S19762C15D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY vtc_S19762C15[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(-784,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-784,-652),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19762C15[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__9S19762C15[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__9S19762C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__9S19762C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__9S19762C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__9S19762C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C15[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C15[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C15[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C15[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__9S19762C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C15[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C15[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__9S19762C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__9S19762C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__9S19762C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__9S19762C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__9S19762C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C15[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C15[] = {
  {&(_ZTV9S19762C15[8]),  8,75},
  {&(_ZTV9S19762C15[16]),  16,75},
  {&(_ZTV9S19762C15[27]),  27,75},
  {&(_ZTV9S19762C15[48]),  48,75},
  {&(_ZTV9S19762C15[54]),  54,75},
  {&(_ZTV9S19762C15[59]),  59,75},
  {&(_ZTV9S19762C15[63]),  63,75},
  {&(_ZTV9S19762C15[67]),  67,75},
  {&(_ZTV9S19762C15[72]),  72,75},
  {&(_ZTV9S19762C15[37]),  37,75},
  {&(_tg__ZTV9S19762C11__9S19762C15[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__9S19762C15[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__9S19762C15[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__9S19762C15[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C15[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C15[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C15[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C15[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__9S19762C15[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C15[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C15[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__9S19762C15[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__9S19762C15[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__9S19762C15[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__9S19762C15[6]),  6,8},
  {&(_tg__ZTV8S19762C8__9S19762C15[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19762C15D0Ev,_ZThn9688_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19762C15D1Ev,_ZThn9688_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19762C15D0Ev,_ZThn652_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19762C15D1Ev,_ZThn652_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C15 = {  "S19762C15", // class name
  bases_S19762C15, 13,
  &(vtc_S19762C15[0]), // expected_vtbl_contents
  &(vtt_S19762C15[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI9S19762C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C16  : S19762C5 , virtual S19762C9 , virtual S19762C15 , S19762C7 , S19762C13 {
  int s19762c16f0;
  ::S19762C7 s19762c16f1;
  int s19762c16f2;
  short s19762c16f3;
  __tsi64 s19762c16f4:8;
  int s19762c16f5;
  virtual  ~S19762C16(); // _ZN9S19762C16D2Ev
  virtual void  v13(); // _ZN9S19762C163v13Ev
  S19762C16(); // tgen
};
//SIG(-1 S19762C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 FL[2] Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 FL[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S19762C16 ::~S19762C16(){ note_dtor("S19762C16", this);}
void  S19762C16 ::v13(){vfunc_called(this, "_ZN9S19762C163v13Ev");}
S19762C16 ::S19762C16(){ note_ctor("S19762C16", this);} // tgen

static void Test_S19762C16()
{
  extern Class_Descriptor cd_S19762C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,4017)];
    init_test(&cd_S19762C16, buf);
    S19762C16 *dp, &lv = *(dp=new (buf) S19762C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,16064), "sizeof(S19762C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C16)");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), 0, "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*), ABISELECT(2816,2320), "S19762C16");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(2816,2320), "S19762C16");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(2816,2320), "S19762C16");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(2816,2320), "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(2816,2320), "S19762C16");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(3112,2564), "S19762C16");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(14592,12008), "S19762C16");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(14888,12252), "S19762C16");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(15352,12652), "S19762C16");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(14592,12008), "S19762C16");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(14592,12008), "S19762C16");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(18712,15404), "S19762C16");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(18712,15404), "S19762C16");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(18712,15404), "S19762C16");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(18856,15528), "S19762C16");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(18856,15528), "S19762C16");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(18856,15528), "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(18856,15528), "S19762C16");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(3584,2972), "S19762C16");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(19024,15664), "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(19024,15664), "S19762C16");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(3584,2972), "S19762C16");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(4048,3352), "S19762C16");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(3584,2972), "S19762C16");
    check_base_class_offset(lv, (S19762C15*), ABISELECT(3112,2564), "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), ABISELECT(144,124), "S19762C16");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*), ABISELECT(144,124), "S19762C16");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*), ABISELECT(608,504), "S19762C16");
    check_base_class_offset(lv, (S19762C13*), ABISELECT(608,504), "S19762C16");
    check_field_offset(lv, s19762c16f0, ABISELECT(1236,1020), "S19762C16.s19762c16f0");
    check_field_offset(lv, s19762c16f1, ABISELECT(1248,1024), "S19762C16.s19762c16f1");
    check_field_offset(lv, s19762c16f2, ABISELECT(2800,2308), "S19762C16.s19762c16f2");
    check_field_offset(lv, s19762c16f3, ABISELECT(2804,2312), "S19762C16.s19762c16f3");
    set_bf_and_test(lv, s19762c16f4, ABISELECT(2806,2314), 0, 8, 1, "S19762C16");
    set_bf_and_test(lv, s19762c16f4, ABISELECT(2806,2314), 0, 8, hide_sll(1LL<<7), "S19762C16");
    check_field_offset(lv, s19762c16f5, ABISELECT(2808,2316), "S19762C16.s19762c16f5");
    test_class_info(&lv, &cd_S19762C16);
    dp->~S19762C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C16(Test_S19762C16, "S19762C16", ABISELECT(19488,16064));

#else // __cplusplus

extern void _ZN9S19762C16C1Ev();
extern void _ZN9S19762C16D2Ev();
Name_Map name_map_S19762C16[] = {
  NSPAIR(_ZN9S19762C16C1Ev),
  NSPAIR(_ZN9S19762C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
static Base_Class bases_S19762C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C9,    ABISELECT(2816,2320), //bcp->offset
    26, //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
  1, 1},
  {&cd_S19762C4,    ABISELECT(3112,2564), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(14592,12008), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(14888,12252), //bcp->offset
    82, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(15352,12652), //bcp->offset
    87, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(14592,12008), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(18712,15404), //bcp->offset
    90, //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(18856,15528), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(19024,15664), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(4048,3352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(3584,2972), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(3112,2564), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(144,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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(144,124), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C9,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(608,504), //bcp->offset
    20, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C16[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19762C16D1Ev,_ZThn504_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S19762C16D0Ev,_ZThn504_N9S19762C16D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S19762C16D1Ev,_ZThn2564_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S19762C16D0Ev,_ZThn2564_N9S19762C16D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S19762C16D1Ev,_ZThn2972_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S19762C16D0Ev,_ZThn2972_N9S19762C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S19762C16D1Ev,_ZThn12008_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S19762C16D0Ev,_ZThn12008_N9S19762C16D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY vtc_S19762C16[] = {
  ABISELECT(19024,15664),
  ABISELECT(18856,15528),
  ABISELECT(18712,15404),
  ABISELECT(14592,12008),
  ABISELECT(3584,2972),
  ABISELECT(3112,2564),
  ABISELECT(2816,2320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19762C16D1Ev,_ZThn504_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19762C16D0Ev,_ZThn504_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(-3112,-2564),
  0,
  0,
  0,
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-3112,-2564),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
  ABISELECT(-3584,-2972),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-3584,-2972),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-4048,-3352),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-14592,-12008),
  0,
  ABISELECT(-14592,-12008),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-14888,-12252),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-15352,-12652),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-18856,-15528),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-15664),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19762C16[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C16[] = {
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__A1__9S19762C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-15540),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__A1__9S19762C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__A1__9S19762C16[] = {
  0,
  ABISELECT(-18568,-15280),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__A1__9S19762C16[] = {
  0,
  ABISELECT(-2672,-2196),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C16[] = {
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__9S19762C16[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__9S19762C16[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19762C15D1Ev,_ZThn9444_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19762C15D0Ev,_ZThn9444_N9S19762C15D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__9S19762C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C16[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C16[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__9S19762C16[] = {
  0,
  ABISELECT(-15600,-12840),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__9S19762C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15744,-12964),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__9S19762C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-13100),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C16[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__9S19762C16[] = {
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__9S19762C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__9S19762C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__9S19762C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__9S19762C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C16[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C16[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C16[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C16[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__9S19762C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C16[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C16[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__9S19762C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__9S19762C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__9S19762C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__9S19762C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__9S19762C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C16[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C16[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C16[] = {
  {&(_ZTV9S19762C16[9]),  9,105},
  {&(_tg__ZTV8S19762C7__A1__9S19762C16[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__A1__9S19762C16[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__A1__9S19762C16[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__A1__9S19762C16[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__A1__9S19762C16[3]),  3,4},
  {&(_ZTV9S19762C16[29]),  29,105},
  {&(_ZTV9S19762C16[42]),  42,105},
  {&(_ZTV9S19762C16[57]),  57,105},
  {&(_ZTV9S19762C16[78]),  78,105},
  {&(_ZTV9S19762C16[84]),  84,105},
  {&(_ZTV9S19762C16[89]),  89,105},
  {&(_ZTV9S19762C16[93]),  93,105},
  {&(_ZTV9S19762C16[97]),  97,105},
  {&(_ZTV9S19762C16[102]),  102,105},
  {&(_ZTV9S19762C16[67]),  67,105},
  {&(_ZTV9S19762C16[19]),  19,105},
  {&(_tg__ZTV9S19762C15__9S19762C16[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__9S19762C16[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__9S19762C16[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__9S19762C16[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C16[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C16[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__9S19762C16[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__9S19762C16[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__9S19762C16[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C16[6]),  6,8},
  {&(_tg__ZTV9S19762C11__9S19762C16[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__9S19762C16[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__9S19762C16[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__9S19762C16[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C16[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C16[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C16[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C16[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C16[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__9S19762C16[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C16[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C16[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__9S19762C16[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__9S19762C16[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__9S19762C16[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__9S19762C16[6]),  6,8},
  {&(_tg__ZTV8S19762C8__9S19762C16[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19762C15D0Ev,_ZThn9444_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19762C15D1Ev,_ZThn9444_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19762C16D0Ev,_ZThn12008_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19762C16D1Ev,_ZThn12008_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19762C16D0Ev,_ZThn2972_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19762C16D1Ev,_ZThn2972_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19762C16D0Ev,_ZThn2564_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19762C16D1Ev,_ZThn2564_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C16 = {  "S19762C16", // class name
  bases_S19762C16, 19,
  &(vtc_S19762C16[0]), // expected_vtbl_contents
  &(vtt_S19762C16[0]), // expected_vtt_contents
  ABISELECT(19488,16064), // object size
  NSPAIRA(_ZTI9S19762C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19762C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C3  : virtual S19762C4 , S19762C6 , S19762C14 , virtual S19762C15 , virtual S19762C16 {
  ::S19762C15 s19762c3f0;
  ::S19762C6 s19762c3f1;
  virtual void  v19(); // _ZN8S19762C33v19Ev
  ~S19762C3(); // tgen
  S19762C3(); // tgen
};
//SIG(-1 S19762C3) C1{ VBC2{ v2 v3 v4 Fi[2] FL[2] FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 Fi:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 FL[2] Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 FL[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs Fi:8} BC12{ VBC6 FC10 Fi:6 Fi FL} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S19762C3 ::v19(){vfunc_called(this, "_ZN8S19762C33v19Ev");}
S19762C3 ::~S19762C3(){ note_dtor("S19762C3", this);} // tgen
S19762C3 ::S19762C3(){ note_ctor("S19762C3", this);} // tgen

static void Test_S19762C3()
{
  extern Class_Descriptor cd_S19762C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,21802)];
    init_test(&cd_S19762C3, buf);
    S19762C3 *dp, &lv = *(dp=new (buf) S19762C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,87204), "sizeof(S19762C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C3)");
    /*is_ambiguous_... S19762C3::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*), ABISELECT(86112,70760), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(86112,70760), "S19762C3");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(86112,70760), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(86112,70760), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*), ABISELECT(86112,70760), "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C6*), ABISELECT(86576,71160), "S19762C3");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(86576,71160), "S19762C3");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*)(S19762C6*), ABISELECT(86576,71160), "S19762C3");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(86576,71160), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(86576,71160), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(86576,71160), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), ABISELECT(86720,71284), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(87184,71664), "S19762C3");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*)(S19762C6*), ABISELECT(87184,71664), "S19762C3");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(87184,71664), "S19762C3");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(87184,71664), "S19762C3");
    check_base_class_offset(lv, (S19762C8*)(S19762C14*), ABISELECT(87184,71664), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(87184,71664), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(87184,71664), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(87184,71664), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*), ABISELECT(87184,71664), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(87360,71800), "S19762C3");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*), ABISELECT(87360,71800), "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C6*), ABISELECT(86720,71284), "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*)(S19762C6*), 0, "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*)(S19762C6*), ABISELECT(296,244), "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*)(S19762C6*), ABISELECT(760,644), "S19762C3");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C6*), 0, "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(87664,72044), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(87960,72288), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(88424,72688), "S19762C3");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*)(S19762C6*), ABISELECT(87664,72044), "S19762C3");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(87664,72044), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(87664,72044), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(87664,72044), "S19762C3");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C3");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C3");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(4592,3776), "S19762C3");
    check_base_class_offset(lv, (S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C3");
    check_base_class_offset(lv, (S19762C6*), 0, "S19762C3");
    check_base_class_offset(lv, (S19762C14*), ABISELECT(26288,21584), "S19762C3");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(91784,75440), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(92256,75848), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(92256,75848), "S19762C3");
    /*is_ambiguous_... S19762C3::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(92720,76228), "S19762C3");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(92256,75848), "S19762C3");
    check_base_class_offset(lv, (S19762C15*), ABISELECT(91784,75440), "S19762C3");
    check_base_class_offset(lv, (S19762C15*)(S19762C16*), ABISELECT(91784,75440), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*), ABISELECT(103264,84884), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*), ABISELECT(103408,85008), "S19762C3");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*), ABISELECT(103408,85008), "S19762C3");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*), ABISELECT(103872,85388), "S19762C3");
    check_base_class_offset(lv, (S19762C13*)(S19762C16*), ABISELECT(103872,85388), "S19762C3");
    check_base_class_offset(lv, (S19762C16*), ABISELECT(103264,84884), "S19762C3");
    check_field_offset(lv, s19762c3f0, ABISELECT(37456,30752), "S19762C3.s19762c3f0");
    check_field_offset(lv, s19762c3f1, ABISELECT(54144,44496), "S19762C3.s19762c3f1");
    test_class_info(&lv, &cd_S19762C3);
    dp->~S19762C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C3(Test_S19762C3, "S19762C3", ABISELECT(106080,87204));

#else // __cplusplus

extern void _ZN8S19762C3C1Ev();
extern void _ZN8S19762C3D1Ev();
Name_Map name_map_S19762C3[] = {
  NSPAIR(_ZN8S19762C3C1Ev),
  NSPAIR(_ZN8S19762C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C6;
extern VTBL_ENTRY _ZTI8S19762C6[];
extern  VTBL_ENTRY _ZTV8S19762C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C6[];
extern Class_Descriptor cd_S19762C14;
extern VTBL_ENTRY _ZTI9S19762C14[];
extern  VTBL_ENTRY _ZTV9S19762C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C14[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
static Base_Class bases_S19762C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C4,    ABISELECT(86112,70760), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(86576,71160), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(86720,71284), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C8,    ABISELECT(87184,71664), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(87360,71800), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(86720,71284), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(296,244), //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
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(760,644), //bcp->offset
    23, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S19762C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(87664,72044), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(87960,72288), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(88424,72688), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(87664,72044), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(4592,3776), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(4128,3396), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C6,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C14,    ABISELECT(26288,21584), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C4,    ABISELECT(91784,75440), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(92256,75848), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(92256,75848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(92720,76228), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(92256,75848), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(91784,75440), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(103264,84884), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(103408,85008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(103408,85008), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(103872,85388), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(103872,85388), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(103264,84884), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19762C3[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C3D1Ev();
extern void _ZN8S19762C3D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
extern void _ZN8S19762C33v19Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C3D1Ev,_ZThn3396_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C3D0Ev,_ZThn3396_N8S19762C3D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C3D1Ev,_ZThn3776_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C3D0Ev,_ZThn3776_N8S19762C3D0Ev)();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C3D1Ev,_ZTv0_n16_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19762C3D1Ev,_ZThn72044_N8S19762C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C3D0Ev,_ZTv0_n16_N8S19762C3D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19762C3D0Ev,_ZThn72044_N8S19762C3D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19762C3D1Ev,_ZTv0_n48_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn91784_N8S19762C3D1Ev,_ZThn75440_N8S19762C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19762C3D0Ev,_ZTv0_n48_N8S19762C3D0Ev)();
extern void ABISELECT(_ZThn91784_N8S19762C3D0Ev,_ZThn75440_N8S19762C3D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19762C3D1Ev,_ZTv0_n40_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn92256_N8S19762C3D1Ev,_ZThn75848_N8S19762C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19762C3D0Ev,_ZTv0_n40_N8S19762C3D0Ev)();
extern void ABISELECT(_ZThn92256_N8S19762C3D0Ev,_ZThn75848_N8S19762C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19762C3D1Ev,_ZTvn380_n40_N8S19762C3D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19762C3D0Ev,_ZTvn380_n40_N8S19762C3D0Ev)();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S19762C3D1Ev,_ZTv0_n44_N8S19762C3D1Ev)();
extern void ABISELECT(_ZThn103264_N8S19762C3D1Ev,_ZThn84884_N8S19762C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19762C3D0Ev,_ZTv0_n44_N8S19762C3D0Ev)();
extern void ABISELECT(_ZThn103264_N8S19762C3D0Ev,_ZThn84884_N8S19762C3D0Ev)() __attribute__((weak));
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S19762C3D1Ev,_ZTvn504_n44_N8S19762C3D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S19762C3D0Ev,_ZTvn504_n44_N8S19762C3D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY vtc_S19762C3[] = {
  ABISELECT(103264,84884),
  ABISELECT(92256,75848),
  ABISELECT(91784,75440),
  ABISELECT(87664,72044),
  ABISELECT(87360,71800),
  ABISELECT(87184,71664),
  ABISELECT(86112,70760),
  ABISELECT(86720,71284),
  ABISELECT(86576,71160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19762C33v19Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C3D1Ev,_ZThn3396_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C3D0Ev,_ZThn3396_N8S19762C3D0Ev),
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C3D1Ev,_ZThn3776_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C3D0Ev,_ZThn3776_N8S19762C3D0Ev),
  ABISELECT(60288,49576),
  ABISELECT(60896,50080),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-70760),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  0,
  ABISELECT(-86576,-71160),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  ABISELECT(-86720,-71284),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-608,-504),
  ABISELECT(-87184,-71664),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  0,
  ABISELECT(-87360,-71800),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-87664,-72044),
  0,
  ABISELECT(-87664,-72044),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C3D1Ev,_ZTv0_n16_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C3D0Ev,_ZTv0_n16_N8S19762C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-87960,-72288),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-88424,-72688),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-91784,-75440),
  0,
  0,
  0,
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(-91784,-75440),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19762C3D1Ev,_ZTv0_n48_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19762C3D0Ev,_ZTv0_n48_N8S19762C3D0Ev),
  ABISELECT(-92256,-75848),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(-92256,-75848),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19762C3D1Ev,_ZTv0_n40_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19762C3D0Ev,_ZTv0_n40_N8S19762C3D0Ev),
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-92720,-76228),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19762C3D1Ev,_ZTvn380_n40_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19762C3D0Ev,_ZTvn380_n40_N8S19762C3D0Ev),
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-103264,-84884),
  0,
  ABISELECT(-17152,-14124),
  ABISELECT(-16080,-13220),
  ABISELECT(-16688,-13724),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  ABISELECT(-103264,-84884),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19762C3D1Ev,_ZTv0_n44_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19762C3D0Ev,_ZTv0_n44_N8S19762C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  ABISELECT(-103408,-85008),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-103872,-85388),
  (VTBL_ENTRY)&(_ZTI8S19762C3[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19762C3D1Ev,_ZTvn504_n44_N8S19762C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19762C3D0Ev,_ZTvn504_n44_N8S19762C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern VTBL_ENTRY _ZTV8S19762C3[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C6D1Ev();
extern void _ZN8S19762C6D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C6__8S19762C3[] = {
  ABISELECT(87664,72044),
  ABISELECT(87360,71800),
  ABISELECT(87184,71664),
  ABISELECT(86112,70760),
  ABISELECT(86720,71284),
  ABISELECT(86576,71160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C118S19762C6__A1__8S19762C3[] = {
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C118S19762C6__A1__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-67364),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C118S19762C6__A1__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-83056,-68268),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C6__A1__8S19762C3[] = {
  0,
  ABISELECT(-82448,-67764),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C118S19762C6__A1__8S19762C3[] = {
  0,
  ABISELECT(-83232,-68404),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-82768,-68024),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn83072_N9S19762C12D1Ev,_ZThn68268_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn83072_N9S19762C12D0Ev,_ZThn68268_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-83072,-68268),
  0,
  ABISELECT(-83072,-68268),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-83368,-68512),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-83832,-68912),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-81984,-67384),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-82592,-67888),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn83536_N9S19762C11D1Ev,_ZThn68648_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn83536_N9S19762C11D0Ev,_ZThn68648_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-83536,-68648),
  0,
  ABISELECT(-83536,-68648),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-83832,-68892),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-84296,-69292),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C118S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-82448,-67764),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-83056,-68268),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C118S19762C6__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-67364),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C118S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-83232,-68404),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C118S19762C6__8S19762C3[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-86576,-71160),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C6__8S19762C3[] = {
  0,
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  ABISELECT(-86720,-71284),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C6__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-70760),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C6__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-87184,-71664),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C6__8S19762C3[] = {
  0,
  ABISELECT(-87360,-71800),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C11__8S19762C6__8S19762C3[] = {
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19762C6D1Ev,_ZThn72044_N8S19762C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19762C6D0Ev,_ZThn72044_N8S19762C6D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__A1__8S19762C6__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-87664,-72044),
  0,
  ABISELECT(-87664,-72044),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__8S19762C6__8S19762C3[] = {
  ABISELECT(-87960,-72288),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A3__8S19762C6__8S19762C3[] = {
  ABISELECT(-88424,-72688),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__8S19762C6__8S19762C3[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19762C14__8S19762C3[] = {
  ABISELECT(60288,49576),
  ABISELECT(60896,50080),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C14__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-60896,-50080),
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C14__8S19762C3[] = {
  0,
  ABISELECT(-60288,-49576),
  (VTBL_ENTRY)&(_ZTI9S19762C14[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C3[] = {
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(608,524),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__8S19762C3[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__8S19762C3[] = {
  0,
  ABISELECT(-640,-516),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C3[] = {
  ABISELECT(-608,-504),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__8S19762C3[] = {
  0,
  ABISELECT(608,504),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__8S19762C3[] = {
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__8S19762C3[] = {
  0,
  ABISELECT(4424,3640),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__8S19762C3[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4120,3396),
  0,
  ABISELECT(4120,3396),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__8S19762C3[] = {
  ABISELECT(3824,3152),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__8S19762C3[] = {
  ABISELECT(3360,2752),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__8S19762C3[] = {
  0,
  ABISELECT(5208,4280),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(4600,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(5672,4680),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__8S19762C3[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__A1__8S19762C3[] = {
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A2__8S19762C3[] = {
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A2__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,5088),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A2__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(5072,4184),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A2__8S19762C3[] = {
  0,
  ABISELECT(5680,4688),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A2__8S19762C3[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A1__8S19762C3[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__A1__8S19762C3[] = {
  0,
  ABISELECT(5360,4428),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__A1__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(5056,4184),
  0,
  ABISELECT(5056,4184),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A1__8S19762C3[] = {
  ABISELECT(4760,3940),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A1__8S19762C3[] = {
  ABISELECT(4296,3540),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A1__8S19762C3[] = {
  0,
  ABISELECT(6144,5068),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__A1__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(5536,4564),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__A1__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4592,3804),
  0,
  ABISELECT(4592,3804),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__A1__8S19762C3[] = {
  ABISELECT(4296,3560),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__A1__8S19762C3[] = {
  ABISELECT(3832,3160),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__A1__8S19762C3[] = {
  0,
  ABISELECT(5680,4688),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__A1__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(5072,4184),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__A1__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,5088),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__A1__8S19762C3[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__A1__8S19762C3[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__8S19762C3[] = {
  ABISELECT(-17152,-14124),
  ABISELECT(-16080,-13220),
  ABISELECT(-16688,-13724),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A3__8S19762C3[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C16__A3__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(17296,14248),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C16__A3__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(16224,13344),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A3__8S19762C3[] = {
  0,
  ABISELECT(16832,13848),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C16__A3__8S19762C3[] = {
  0,
  ABISELECT(16048,13208),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C16__8S19762C3[] = {
  0,
  ABISELECT(15904,13084),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C16__8S19762C3[] = {
  ABISELECT(11480,9444),
  0,
  0,
  0,
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(11480,9444),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C16__8S19762C3[] = {
  ABISELECT(11008,9036),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(11008,9036),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C16__8S19762C3[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(15600,12840),
  0,
  ABISELECT(15600,12840),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C16__8S19762C3[] = {
  ABISELECT(15304,12596),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C16__8S19762C3[] = {
  ABISELECT(14840,12196),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C16__8S19762C3[] = {
  0,
  ABISELECT(16688,13724),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C16__8S19762C3[] = {
  ABISELECT(-608,-504),
  ABISELECT(16080,13220),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C16__8S19762C3[] = {
  0,
  0,
  0,
  ABISELECT(17152,14124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C16__8S19762C3[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(10544,8656),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C16__8S19762C3[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C3[] = {
  {&(_ZTV8S19762C3[11]),  11,167},
  {&(_tg__ZTV8S19762C6__8S19762C3[8]),  8,14},
  {&(_tg__ZTV9S19762C118S19762C6__8S19762C3[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C118S19762C6__A1__8S19762C3[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C118S19762C6__A1__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C118S19762C6__A1__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C6__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C118S19762C6__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C118S19762C6__8S19762C3[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C118S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C6__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C118S19762C6__8S19762C3[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C118S19762C6__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C118S19762C6__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C118S19762C6__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C118S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C118S19762C6__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C118S19762C6__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C118S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C118S19762C6__8S19762C3[6]),  6,8},
  {&(_tg__ZTV8S19762C5__8S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C7__8S19762C6__8S19762C3[7]),  7,8},
  {&(_tg__ZTV8S19762C4__8S19762C6__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C6__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C9__8S19762C6__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C11__8S19762C6__8S19762C3[7]),  7,11},
  {&(_tg__ZTV9S19762C10__A1__8S19762C6__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__8S19762C6__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A3__8S19762C6__8S19762C3[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__8S19762C6__8S19762C3[6]),  6,8},
  {&(_tg__ZTV9S19762C14__8S19762C3[4]),  4,4},
  {&(_tg__ZTV8S19762C8__9S19762C14__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__9S19762C14__8S19762C3[3]),  3,4},
  {&(_ZTV8S19762C3[54]),  54,167},
  {&(_ZTV8S19762C3[60]),  60,167},
  {&(_ZTV8S19762C3[68]),  68,167},
  {&(_ZTV8S19762C3[72]),  72,167},
  {&(_ZTV8S19762C3[75]),  75,167},
  {&(_ZTV8S19762C3[33]),  33,167},
  {&(_ZTV8S19762C3[85]),  85,167},
  {&(_ZTV8S19762C3[91]),  91,167},
  {&(_ZTV8S19762C3[96]),  96,167},
  {&(_ZTV8S19762C3[43]),  43,167},
  {&(_ZTV8S19762C3[49]),  49,167},
  {&(_ZTV8S19762C3[109]),  109,167},
  {&(_ZTV8S19762C3[124]),  124,167},
  {&(_ZTV8S19762C3[134]),  134,167},
  {&(_ZTV8S19762C3[150]),  150,167},
  {&(_ZTV8S19762C3[160]),  160,167},
  {&(_ZTV8S19762C3[163]),  163,167},
  {&(_tg__ZTV8S19762C7__8S19762C3[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C15__8S19762C3[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__8S19762C3[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__8S19762C3[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__8S19762C3[6]),  6,8},
  {&(_tg__ZTV9S19762C11__A1__8S19762C3[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A2__8S19762C3[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A2__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A2__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A2__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A2__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__A1__8S19762C3[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__A1__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A1__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A1__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__A1__8S19762C3[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__A1__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__A1__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__A1__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__A1__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__A1__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__A1__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__A1__8S19762C3[6]),  6,8},
  {&(_tg__ZTV9S19762C16__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A3__8S19762C3[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C16__A3__8S19762C3[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C16__A3__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A3__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C16__A3__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C16__8S19762C3[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C16__8S19762C3[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C16__8S19762C3[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C16__8S19762C3[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C16__8S19762C3[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C16__8S19762C3[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C16__8S19762C3[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C16__8S19762C3[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C16__8S19762C3[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C16__8S19762C3[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C16__8S19762C3[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19762C3[];
extern  VTBL_ENTRY _ZTV8S19762C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C3[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19762C6D0Ev,_ZThn72044_N8S19762C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19762C6D1Ev,_ZThn72044_N8S19762C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19762C11D0Ev,_ZThn68648_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19762C11D1Ev,_ZThn68648_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19762C12D0Ev,_ZThn68268_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19762C12D1Ev,_ZThn68268_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19762C3D0Ev,_ZTv0_n44_N8S19762C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19762C3D0Ev,_ZThn84884_N8S19762C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19762C3D1Ev,_ZTv0_n44_N8S19762C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19762C3D1Ev,_ZThn84884_N8S19762C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19762C3D0Ev,_ZTv0_n40_N8S19762C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19762C3D0Ev,_ZThn75848_N8S19762C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19762C3D1Ev,_ZTv0_n40_N8S19762C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19762C3D1Ev,_ZThn75848_N8S19762C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19762C3D0Ev,_ZTv0_n48_N8S19762C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19762C3D0Ev,_ZThn75440_N8S19762C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19762C3D1Ev,_ZTv0_n48_N8S19762C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19762C3D1Ev,_ZThn75440_N8S19762C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C3D0Ev,_ZTv0_n16_N8S19762C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19762C3D0Ev,_ZThn72044_N8S19762C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C3D1Ev,_ZTv0_n16_N8S19762C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19762C3D1Ev,_ZThn72044_N8S19762C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C3 = {  "S19762C3", // class name
  bases_S19762C3, 32,
  &(vtc_S19762C3[0]), // expected_vtbl_contents
  &(vtt_S19762C3[0]), // expected_vtt_contents
  ABISELECT(106080,87204), // object size
  NSPAIRA(_ZTI8S19762C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19762C3),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19762C3),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C2  {
  void *s19762c2f0;
  int s19762c2f1[2];
  short s19762c2f2;
  char s19762c2f3;
  int s19762c2f4;
  ::S19762C3 s19762c2f5;
  int s19762c2f6;
  void  mf19762c2(); // _ZN8S19762C29mf19762c2Ev
};
//SIG(-1 S19762C2) C1{ m Fp Fi[2] Fs Fc Fi FC2{ VBC3{ v2 v3 v4 Fi[2] FL[2] FC4{ v5 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC5{ VBC4 VBC6{ BC4 VBC3 VBC7{ VBC4 Fp FC4 Fi:3} VBC8{ v6 FL FD Fp Fc FC4 Fp[2] FL[8] Fs Fp FL:64} FC8 Fs Fi[2]} BC9{ BC8 BC3 BC4 vd v7 FL[2] Fp[8] FC6 Fp Fi FC6 Fi} BC10{ VBC9 VBC4 VBC7 BC6 BC11{ VBC8 VBC9 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC9 Fc:7 FC12{ BC8 vd v11 FC7 Fi Fp Fi}} v8 FC9 FL Fc:7} v9 v10 FC11 Fs Fi:8} BC13{ VBC7 FC11 Fi:6 Fi FL} VBC14{ VBC8 BC3 VBC10 Fc:8 Fi} VBC15{ BC4 VBC8 VBC14 BC6 BC12 vd v12 Fi FC6 Fi Fs FL:8 Fi} v1 FC14 FC5} Fi}


void  S19762C2 ::mf19762c2(){}

static void Test_S19762C2()
{
  {
    init_simple_test("S19762C2");
    static S19762C2 lv;
    check2(sizeof(lv), ABISELECT(106128,87228), "sizeof(S19762C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C2)");
    check_field_offset(lv, s19762c2f0, 0, "S19762C2.s19762c2f0");
    check_field_offset(lv, s19762c2f1, ABISELECT(8,4), "S19762C2.s19762c2f1");
    check_field_offset(lv, s19762c2f2, ABISELECT(16,12), "S19762C2.s19762c2f2");
    check_field_offset(lv, s19762c2f3, ABISELECT(18,14), "S19762C2.s19762c2f3");
    check_field_offset(lv, s19762c2f4, ABISELECT(20,16), "S19762C2.s19762c2f4");
    check_field_offset(lv, s19762c2f5, ABISELECT(32,20), "S19762C2.s19762c2f5");
    check_field_offset(lv, s19762c2f6, ABISELECT(106112,87224), "S19762C2.s19762c2f6");
  }
}
static Arrange_To_Call_Me vS19762C2(Test_S19762C2, "S19762C2", ABISELECT(106128,87228));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19762C2[];
VTBL_ENTRY *P__ZTI8S19762C2 = _ZTI8S19762C2; 
Class_Descriptor cd_S19762C2 = {  "S19762C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(106128,87228), // object size
  NSPAIRA(_ZTI8S19762C2),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  S19762C18_nt  {
};
//SIG(-1 S19762C18_nt) C1{}



//skip512 S19762C18_nt

#else // __cplusplus

Class_Descriptor cd_S19762C18_nt = {  "S19762C18_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // 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  S19762C19  : S19762C7 , virtual S19762C15 , S19762C16 {
  ::S19762C15 s19762c19f0;
  int s19762c19f1[2];
  char s19762c19f2;
  int s19762c19f3;
  __tsi64 s19762c19f4;
  int s19762c19f5[2];
  void *s19762c19f6[2];
  int s19762c19f7[2];
  virtual void  v14(); // _ZN9S19762C193v14Ev
  virtual void  v15(); // _ZN9S19762C193v15Ev
  ~S19762C19(); // tgen
  S19762C19(); // tgen
};
//SIG(-1 S19762C19) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v4 v5 v6 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S19762C19 ::v14(){vfunc_called(this, "_ZN9S19762C193v14Ev");}
void  S19762C19 ::v15(){vfunc_called(this, "_ZN9S19762C193v15Ev");}
S19762C19 ::~S19762C19(){ note_dtor("S19762C19", this);} // tgen
S19762C19 ::S19762C19(){ note_ctor("S19762C19", this);} // tgen

static void Test_S19762C19()
{
  extern Class_Descriptor cd_S19762C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,7560)];
    init_test(&cd_S19762C19, buf);
    S19762C19 *dp, &lv = *(dp=new (buf) S19762C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,30236), "sizeof(S19762C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C19)");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), 0, "S19762C19");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(20024,16492), "S19762C19");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(20024,16492), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*), ABISELECT(20024,16492), "S19762C19");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(20656,17028), "S19762C19");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(20656,17028), "S19762C19");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(20656,17028), "S19762C19");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(20488,16892), "S19762C19");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(20488,16892), "S19762C19");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(20488,16892), "S19762C19");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(20488,16892), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*), ABISELECT(20488,16892), "S19762C19");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(20800,17152), "S19762C19");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(20800,17152), "S19762C19");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(20800,17152), "S19762C19");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(20800,17152), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*), ABISELECT(20800,17152), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*), ABISELECT(20800,17152), "S19762C19");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*), 0, "S19762C19");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(21096,17396), "S19762C19");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(32576,26840), "S19762C19");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(32872,27084), "S19762C19");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(33336,27484), "S19762C19");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(32576,26840), "S19762C19");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(32576,26840), "S19762C19");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(21568,17804), "S19762C19");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(21568,17804), "S19762C19");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(22032,18184), "S19762C19");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(21568,17804), "S19762C19");
    check_base_class_offset(lv, (S19762C15*), ABISELECT(21096,17396), "S19762C19");
    check_base_class_offset(lv, (S19762C15*)(S19762C16*), ABISELECT(21096,17396), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*), ABISELECT(464,380), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*), ABISELECT(608,504), "S19762C19");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*), ABISELECT(608,504), "S19762C19");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*), ABISELECT(1072,884), "S19762C19");
    check_base_class_offset(lv, (S19762C13*)(S19762C16*), ABISELECT(1072,884), "S19762C19");
    check_base_class_offset(lv, (S19762C16*), ABISELECT(464,380), "S19762C19");
    check_field_offset(lv, s19762c19f0, ABISELECT(3280,2700), "S19762C19.s19762c19f0");
    check_field_offset(lv, s19762c19f1, ABISELECT(19968,16444), "S19762C19.s19762c19f1");
    check_field_offset(lv, s19762c19f2, ABISELECT(19976,16452), "S19762C19.s19762c19f2");
    check_field_offset(lv, s19762c19f3, ABISELECT(19980,16456), "S19762C19.s19762c19f3");
    check_field_offset(lv, s19762c19f4, ABISELECT(19984,16460), "S19762C19.s19762c19f4");
    check_field_offset(lv, s19762c19f5, ABISELECT(19992,16468), "S19762C19.s19762c19f5");
    check_field_offset(lv, s19762c19f6, ABISELECT(20000,16476), "S19762C19.s19762c19f6");
    check_field_offset(lv, s19762c19f7, ABISELECT(20016,16484), "S19762C19.s19762c19f7");
    test_class_info(&lv, &cd_S19762C19);
    dp->~S19762C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C19(Test_S19762C19, "S19762C19", ABISELECT(36704,30236));

#else // __cplusplus

extern void _ZN9S19762C19C1Ev();
extern void _ZN9S19762C19D1Ev();
Name_Map name_map_S19762C19[] = {
  NSPAIR(_ZN9S19762C19C1Ev),
  NSPAIR(_ZN9S19762C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
static Base_Class bases_S19762C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(20024,16492), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(20656,17028), //bcp->offset
    51, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(20488,16892), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(20800,17152), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19762C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S19762C4,    ABISELECT(21096,17396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(32576,26840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(32872,27084), //bcp->offset
    111, //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(33336,27484), //bcp->offset
    116, //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(32576,26840), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(21568,17804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(21568,17804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(22032,18184), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(21568,17804), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(21096,17396), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(464,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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(608,504), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(1072,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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(1072,884), //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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(464,380), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C19[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void _ZN9S19762C19D1Ev();
extern void _ZN9S19762C19D0Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev)();
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZThn1072_N9S19762C19D1Ev,_ZThn884_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn1072_N9S19762C19D0Ev,_ZThn884_N9S19762C19D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn21096_N9S19762C19D1Ev,_ZThn17396_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn21096_N9S19762C19D0Ev,_ZThn17396_N9S19762C19D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn21568_N9S19762C19D1Ev,_ZThn17804_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn21568_N9S19762C19D0Ev,_ZThn17804_N9S19762C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev)();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn32576_N9S19762C19D1Ev,_ZThn26840_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn32576_N9S19762C19D0Ev,_ZThn26840_N9S19762C19D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C19[] = {
  ABISELECT(32576,26840),
  ABISELECT(21568,17804),
  ABISELECT(21096,17396),
  ABISELECT(20800,17152),
  ABISELECT(20656,17028),
  ABISELECT(20488,16892),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D0Ev,
  ABISELECT(19560,16112),
  ABISELECT(20024,16512),
  ABISELECT(20192,16648),
  ABISELECT(32112,26460),
  ABISELECT(21104,17424),
  ABISELECT(20632,17016),
  ABISELECT(20336,16772),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-1072,-884),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19762C19D1Ev,_ZThn884_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19762C19D0Ev,_ZThn884_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(168,136),
  ABISELECT(-20488,-16892),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  0,
  ABISELECT(-20656,-17028),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(-20800,-17152),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(-21096,-17396),
  0,
  0,
  0,
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-21096,-17396),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev),
  ABISELECT(-21568,-17804),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-21568,-17804),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev),
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-22032,-18184),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-32576,-26840),
  0,
  ABISELECT(-32576,-26840),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-32872,-27084),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-33336,-27484),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19762C19[];
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__9S19762C19[] = {
  ABISELECT(20800,17152),
  ABISELECT(20656,17028),
  ABISELECT(20488,16892),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(-20488,-16892),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__9S19762C19[] = {
  0,
  ABISELECT(-20656,-17028),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__9S19762C19[] = {
  0,
  ABISELECT(-20800,-17152),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__9S19762C19[] = {
  ABISELECT(19560,16112),
  ABISELECT(20024,16512),
  ABISELECT(20192,16648),
  ABISELECT(32112,26460),
  ABISELECT(21104,17424),
  ABISELECT(20632,17016),
  ABISELECT(20336,16772),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A2__9S19762C19[] = {
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C16__A2__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-15988),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C16__A2__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(-19880,-16388),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A2__9S19762C19[] = {
  0,
  ABISELECT(-20048,-16524),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C16__A2__9S19762C19[] = {
  0,
  ABISELECT(-20192,-16648),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C16__9S19762C19[] = {
  0,
  ABISELECT(-20336,-16772),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn20632_N9S19762C16D1Ev,_ZThn17016_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn20632_N9S19762C16D0Ev,_ZThn17016_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C16__9S19762C19[] = {
  ABISELECT(-20632,-17016),
  0,
  0,
  0,
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-20632,-17016),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn21104_N9S19762C16D1Ev,_ZThn17424_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn21104_N9S19762C16D0Ev,_ZThn17424_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C16__9S19762C19[] = {
  ABISELECT(-21104,-17424),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-21104,-17424),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn32112_N9S19762C16D1Ev,_ZThn26460_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn32112_N9S19762C16D0Ev,_ZThn26460_N9S19762C16D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C16__9S19762C19[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-32112,-26460),
  0,
  ABISELECT(-32112,-26460),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C16__9S19762C19[] = {
  ABISELECT(-32408,-26704),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C16__9S19762C19[] = {
  ABISELECT(-32872,-27104),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C16__9S19762C19[] = {
  0,
  ABISELECT(-20192,-16648),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C16__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(-20024,-16512),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C16__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-16112),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C16__9S19762C19[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-21568,-17804),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C16__9S19762C19[] = {
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C19[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C19[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C19[] = {
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__9S19762C19[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__9S19762C19[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19762C15D1Ev,_ZThn9444_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19762C15D0Ev,_ZThn9444_N9S19762C15D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__9S19762C19[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C19[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C19[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__9S19762C19[] = {
  0,
  ABISELECT(440,368),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(608,504),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(1072,904),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C19[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C19[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A1__9S19762C19[] = {
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A1__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1312),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A1__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(1080,912),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__9S19762C19[] = {
  0,
  ABISELECT(912,776),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A1__9S19762C19[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C19[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C19[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C19[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C19[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C19[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C19[] = {
  0,
  ABISELECT(1376,1156),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(1544,1292),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__9S19762C19[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C19[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C19[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__9S19762C19[] = {
  0,
  ABISELECT(912,776),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__9S19762C19[] = {
  ABISELECT(168,136),
  ABISELECT(1080,912),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__9S19762C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1312),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__9S19762C19[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__9S19762C19[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTT_ENTRY vtt_S19762C19[] = {
  {&(_ZTV9S19762C19[9]),  9,119},
  {&(_tg__ZTV8S19762C7__9S19762C19[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__9S19762C19[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C16__9S19762C19[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A2__9S19762C19[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C16__A2__9S19762C19[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C16__A2__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A2__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C16__A2__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C16__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C16__9S19762C19[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C16__9S19762C19[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C16__9S19762C19[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C16__9S19762C19[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C16__9S19762C19[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C16__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C16__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C16__9S19762C19[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C16__9S19762C19[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C16__9S19762C19[6]),  6,7},
  {&(_ZTV9S19762C19[45]),  45,119},
  {&(_ZTV9S19762C19[51]),  51,119},
  {&(_ZTV9S19762C19[54]),  54,119},
  {&(_ZTV9S19762C19[58]),  58,119},
  {&(_ZTV9S19762C19[71]),  71,119},
  {&(_ZTV9S19762C19[86]),  86,119},
  {&(_ZTV9S19762C19[107]),  107,119},
  {&(_ZTV9S19762C19[113]),  113,119},
  {&(_ZTV9S19762C19[118]),  118,119},
  {&(_ZTV9S19762C19[96]),  96,119},
  {&(_ZTV9S19762C19[23]),  23,119},
  {&(_ZTV9S19762C19[33]),  33,119},
  {&(_tg__ZTV8S19762C8__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C19[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__9S19762C19[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__9S19762C19[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C19[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C19[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__9S19762C19[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C19[6]),  6,8},
  {&(_tg__ZTV9S19762C11__9S19762C19[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A1__9S19762C19[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A1__9S19762C19[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A1__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A1__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C19[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__9S19762C19[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__9S19762C19[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__9S19762C19[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__9S19762C19[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__9S19762C19[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C19[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C19[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__9S19762C19[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__9S19762C19[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__9S19762C19[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__9S19762C19[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__9S19762C19[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19762C19[];
extern  VTBL_ENTRY _ZTV9S19762C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C19[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D0Ev,_ZThn9036_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19762C11D1Ev,_ZThn9036_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D0Ev,_ZThn8656_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19762C12D1Ev,_ZThn8656_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19762C15D0Ev,_ZThn9444_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19762C15D1Ev,_ZThn9444_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19762C16D0Ev,_ZThn26460_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19762C16D1Ev,_ZThn26460_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19762C16D0Ev,_ZThn17424_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19762C16D1Ev,_ZThn17424_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19762C16D0Ev,_ZThn17016_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19762C16D1Ev,_ZThn17016_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19762C19D0Ev,_ZThn26840_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19762C19D1Ev,_ZThn26840_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19762C19D0Ev,_ZThn17804_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19762C19D1Ev,_ZThn17804_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19762C19D0Ev,_ZThn17396_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19762C19D1Ev,_ZThn17396_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C19 = {  "S19762C19", // class name
  bases_S19762C19, 22,
  &(vtc_S19762C19[0]), // expected_vtbl_contents
  &(vtt_S19762C19[0]), // expected_vtt_contents
  ABISELECT(36704,30236), // object size
  NSPAIRA(_ZTI9S19762C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C19),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C19),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C17  {
  ::S19762C18_nt s19762c17f0;
  ::S19762C19 s19762c17f1;
  int s19762c17f2;
  char s19762c17f3:5;
  virtual void  v2(); // _ZN9S19762C172v2Ev
  ~S19762C17(); // tgen
  S19762C17(); // tgen
};
//SIG(-1 S19762C17) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[13] Fp} VBC6{ v5 v6 v7 Fi[2] FL[2] FC5[3]} VBC7{ VBC5 Fp FC5 Fi:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] FL[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 FL[2] Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 FL[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S19762C17 ::v2(){vfunc_called(this, "_ZN9S19762C172v2Ev");}
S19762C17 ::~S19762C17(){ note_dtor("S19762C17", this);} // tgen
S19762C17 ::S19762C17(){ note_ctor("S19762C17", this);} // tgen

static void Test_S19762C17()
{
  extern Class_Descriptor cd_S19762C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,7564)];
    init_test(&cd_S19762C17, buf);
    S19762C17 *dp, &lv = *(dp=new (buf) S19762C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,30252), "sizeof(S19762C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C17)");
    check_field_offset(lv, s19762c17f0, ABISELECT(8,4), "S19762C17.s19762c17f0");
    check_field_offset(lv, s19762c17f1, ABISELECT(16,8), "S19762C17.s19762c17f1");
    check_field_offset(lv, s19762c17f2, ABISELECT(36720,30244), "S19762C17.s19762c17f2");
    set_bf_and_test(lv, s19762c17f3, ABISELECT(36724,30248), 0, 5, 1, "S19762C17");
    set_bf_and_test(lv, s19762c17f3, ABISELECT(36724,30248), 0, 5, hide_sll(1LL<<4), "S19762C17");
    test_class_info(&lv, &cd_S19762C17);
    dp->~S19762C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C17(Test_S19762C17, "S19762C17", ABISELECT(36736,30252));

#else // __cplusplus

extern void _ZN9S19762C17C1Ev();
extern void _ZN9S19762C17D1Ev();
Name_Map name_map_S19762C17[] = {
  NSPAIR(_ZN9S19762C17C1Ev),
  NSPAIR(_ZN9S19762C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19762C17[];
extern void _ZN9S19762C172v2Ev();
static  VTBL_ENTRY vtc_S19762C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C17[0]),
  (VTBL_ENTRY)&_ZN9S19762C172v2Ev,
};
extern VTBL_ENTRY _ZTI9S19762C17[];
extern  VTBL_ENTRY _ZTV9S19762C17[];
Class_Descriptor cd_S19762C17 = {  "S19762C17", // class name
  0,0,//no base classes
  &(vtc_S19762C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,30252), // object size
  NSPAIRA(_ZTI9S19762C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19762C17),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19762C23_nt  {
  int s19762c23f0:8;
  int s19762c23f1;
  void *s19762c23f2;
  __tsi64 s19762c23f3;
  void *s19762c23f4;
  void *s19762c23f5;
  int s19762c23f6;
  void  mf19762c23(); // _ZN12S19762C23_nt10mf19762c23Ev
};
//SIG(1 S19762C23_nt) U1{ m Fi:8 Fi Fp FL Fp Fp Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19762C22  : virtual S19762C13 , virtual S19762C5 , virtual S19762C12 {
  int s19762c22f0;
  long double s19762c22f1;
  int s19762c22f2;
  void *s19762c22f3;
  long s19762c22f4;
  ::S19762C23_nt s19762c22f5;
  int s19762c22f6;
  __tsi64 s19762c22f7;
  virtual  ~S19762C22(); // _ZN9S19762C22D2Ev
  S19762C22(); // tgen
};
//SIG(-1 S19762C22) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 Fi:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 FL[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL}


 S19762C22 ::~S19762C22(){ note_dtor("S19762C22", this);}
S19762C22 ::S19762C22(){ note_ctor("S19762C22", this);} // tgen

static void Test_S19762C22()
{
  extern Class_Descriptor cd_S19762C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,2430)];
    init_test(&cd_S19762C22, buf);
    S19762C22 *dp, &lv = *(dp=new (buf) S19762C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,9716), "sizeof(S19762C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C22)");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*), ABISELECT(80,52), "S19762C22");
    check_base_class_offset(lv, (S19762C13*), ABISELECT(80,52), "S19762C22");
    /*is_ambiguous_... S19762C22::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*), ABISELECT(712,568), "S19762C22");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*), ABISELECT(712,568), "S19762C22");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(712,568), "S19762C22");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*), ABISELECT(7264,5940), "S19762C22");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(7568,6184), "S19762C22");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(7864,6428), "S19762C22");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(8328,6828), "S19762C22");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*), ABISELECT(7568,6184), "S19762C22");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*), ABISELECT(11688,9580), "S19762C22");
    check_base_class_offset(lv, (S19762C12*), ABISELECT(864,692), "S19762C22");
    check_field_offset(lv, s19762c22f0, ABISELECT(8,4), "S19762C22.s19762c22f0");
    check_field_offset(lv, s19762c22f1, ABISELECT(16,8), "S19762C22.s19762c22f1");
    check_field_offset(lv, s19762c22f2, ABISELECT(32,20), "S19762C22.s19762c22f2");
    check_field_offset(lv, s19762c22f3, ABISELECT(40,24), "S19762C22.s19762c22f3");
    check_field_offset(lv, s19762c22f4, ABISELECT(48,28), "S19762C22.s19762c22f4");
    check_field_offset(lv, s19762c22f5, ABISELECT(56,32), "S19762C22.s19762c22f5");
    check_field_offset(lv, s19762c22f6, ABISELECT(64,40), "S19762C22.s19762c22f6");
    check_field_offset(lv, s19762c22f7, ABISELECT(72,44), "S19762C22.s19762c22f7");
    test_class_info(&lv, &cd_S19762C22);
    dp->~S19762C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C22(Test_S19762C22, "S19762C22", ABISELECT(11856,9716));

#else // __cplusplus

extern void _ZN9S19762C22C1Ev();
extern void _ZN9S19762C22D2Ev();
Name_Map name_map_S19762C22[] = {
  NSPAIR(_ZN9S19762C22C1Ev),
  NSPAIR(_ZN9S19762C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
static Base_Class bases_S19762C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(80,52), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(712,568), //bcp->offset
    19, //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},
  {&cd_S19762C9,    ABISELECT(7264,5940), //bcp->offset
    32, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(7568,6184), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(7864,6428), //bcp->offset
    49, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(8328,6828), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(7568,6184), //bcp->offset
    36, //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
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(11688,9580), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C12,    ABISELECT(864,692), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C22[];
extern void _ZN9S19762C22D1Ev();
extern void _ZN9S19762C22D0Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19762C22D1Ev,_ZThn692_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19762C22D0Ev,_ZThn692_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19762C22D1Ev,_ZThn6184_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19762C22D0Ev,_ZThn6184_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY vtc_S19762C22[] = {
  ABISELECT(11688,9580),
  ABISELECT(7568,6184),
  ABISELECT(7264,5940),
  ABISELECT(864,692),
  ABISELECT(712,568),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN9S19762C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C22D0Ev,
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  ABISELECT(-712,-568),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-864,-692),
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-864,-692),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev),
  0,
  ABISELECT(-7264,-5940),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7568,-6184),
  0,
  ABISELECT(-7568,-6184),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-7864,-6428),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-8328,-6828),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-10976,-9012),
  ABISELECT(-11688,-9580),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
};
extern VTBL_ENTRY _ZTV9S19762C22[];
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C22[] = {
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C12__9S19762C22[] = {
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C12__9S19762C22[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C22[] = {
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C22[] = {
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C12__9S19762C22[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12__9S19762C22[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C22[] = {
  ABISELECT(-10976,-9012),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C22[] = {
  0,
  ABISELECT(10976,9012),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTT_ENTRY vtt_S19762C22[] = {
  {&(_ZTV9S19762C22[8]),  8,60},
  {&(_ZTV9S19762C22[15]),  15,60},
  {&(_ZTV9S19762C22[22]),  22,60},
  {&(_ZTV9S19762C22[30]),  30,60},
  {&(_ZTV9S19762C22[35]),  35,60},
  {&(_ZTV9S19762C22[45]),  45,60},
  {&(_ZTV9S19762C22[51]),  51,60},
  {&(_ZTV9S19762C22[56]),  56,60},
  {&(_ZTV9S19762C22[60]),  60,60},
  {&(_tg__ZTV9S19762C12__9S19762C22[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C12__9S19762C22[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C12__9S19762C22[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C22[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C22[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C12__9S19762C22[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C12__9S19762C22[3]),  3,3},
  {&(_tg__ZTV8S19762C8__9S19762C22[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19762C22[];
extern  VTBL_ENTRY _ZTV9S19762C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C22[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19762C22D0Ev,_ZThn692_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19762C22D1Ev,_ZThn692_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19762C22D0Ev,_ZThn6184_N9S19762C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19762C22D1Ev,_ZThn6184_N9S19762C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C22 = {  "S19762C22", // class name
  bases_S19762C22, 10,
  &(vtc_S19762C22[0]), // expected_vtbl_contents
  &(vtt_S19762C22[0]), // expected_vtt_contents
  ABISELECT(11856,9716), // object size
  NSPAIRA(_ZTI9S19762C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C22),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C22),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C21  : virtual S19762C22 , virtual S19762C19 , S19762C16 {
  int s19762c21f0;
  __tsi64 s19762c21f1;
  int s19762c21f2[4];
  virtual void  v16(); // _ZN9S19762C213v16Ev
  ~S19762C21(); // tgen
  S19762C21(); // tgen
};
//SIG(-1 S19762C21) C1{ VBC2{ VBC3{ BC4{ v2 FL FD Fp Fc FC5{ v4 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v3 FC6{ VBC5 Fp FC5 Fi:3} Fi Fp Fi} VBC5 VBC7{ VBC4 VBC8{ BC4 BC9{ v5 v6 v7 Fi[2] FL[2] FC5[3]} BC5 vd v8 FL[2] Fp[8] FC10{ BC5 VBC9 VBC6 VBC4 FC4 Fs Fi[2]} Fp Fi FC10 Fi} VBC5 VBC6 FL:44 Fp Fi FC10 FL[2] Fi[3] FC8 Fc:7 FC3} vd Fi FD Fi Fp Fl FU11{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL} VBC12{ BC10 VBC13{ VBC4 BC9 VBC14{ VBC8 VBC5 VBC6 BC10 BC7 v9 FC8 FL Fc:7} Fc:8 Fi} BC15{ BC5 VBC4 VBC13 BC10 BC3 vd v10 Fi FC10 Fi Fs FL:8 Fi} v11 v12 FC13 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC15 v1 Fi FL Fi[4]}


void  S19762C21 ::v16(){vfunc_called(this, "_ZN9S19762C213v16Ev");}
S19762C21 ::~S19762C21(){ note_dtor("S19762C21", this);} // tgen
S19762C21 ::S19762C21(){ note_ctor("S19762C21", this);} // tgen

static void Test_S19762C21()
{
  extern Class_Descriptor cd_S19762C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2918,9601)];
    init_test(&cd_S19762C21, buf);
    S19762C21 *dp, &lv = *(dp=new (buf) S19762C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46672,38400), "sizeof(S19762C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C21)");
    /*is_ambiguous_... S19762C21::S19762C13 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*), ABISELECT(2928,2400), "S19762C21");
    check_base_class_offset(lv, (S19762C13*)(S19762C22*), ABISELECT(2928,2400), "S19762C21");
    /*is_ambiguous_... S19762C22::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C22*), ABISELECT(3560,2916), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*), ABISELECT(3560,2916), "S19762C21");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(3560,2916), "S19762C21");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(3560,2916), "S19762C21");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(3560,2916), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C19*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(10112,8288), "S19762C21");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C19*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*), ABISELECT(10112,8288), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*), ABISELECT(10112,8288), "S19762C21");
    check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(10416,8532), "S19762C21");
    check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(10712,8776), "S19762C21");
    check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(11176,9176), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*), ABISELECT(10416,8532), "S19762C21");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(10416,8532), "S19762C21");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(10416,8532), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*), ABISELECT(14536,11928), "S19762C21");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C19*), ABISELECT(14536,11928), "S19762C21");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(14536,11928), "S19762C21");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(14536,11928), "S19762C21");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(14536,11928), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(14536,11928), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*), ABISELECT(14536,11928), "S19762C21");
    check_base_class_offset(lv, (S19762C12*)(S19762C22*), ABISELECT(3712,3040), "S19762C21");
    check_base_class_offset(lv, (S19762C22*), ABISELECT(2848,2348), "S19762C21");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C19*), ABISELECT(14704,12064), "S19762C21");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C19*), ABISELECT(34728,28556), "S19762C21");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(34728,28556), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(34728,28556), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*), ABISELECT(34728,28556), "S19762C21");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C19*), ABISELECT(14704,12064), "S19762C21");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(35192,28956), "S19762C21");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(35664,29364), "S19762C21");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(35664,29364), "S19762C21");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(36128,29744), "S19762C21");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(35664,29364), "S19762C21");
    check_base_class_offset(lv, (S19762C15*)(S19762C19*), ABISELECT(35192,28956), "S19762C21");
    check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C19*), ABISELECT(35192,28956), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C15*)(S19762C16*), ABISELECT(35192,28956), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C19*), ABISELECT(15168,12444), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(15312,12568), "S19762C21");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(15312,12568), "S19762C21");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(15776,12948), "S19762C21");
    check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(15776,12948), "S19762C21");
    check_base_class_offset(lv, (S19762C16*)(S19762C19*), ABISELECT(15168,12444), "S19762C21");
    check_base_class_offset(lv, (S19762C19*), ABISELECT(14704,12064), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*), 0, "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*), ABISELECT(144,124), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*), ABISELECT(144,124), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*), ABISELECT(608,504), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C13*)(S19762C16*), ABISELECT(608,504), "S19762C21");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C16*), 0, "S19762C21");
    check_field_offset(lv, s19762c21f0, ABISELECT(2812,2320), "S19762C21.s19762c21f0");
    check_field_offset(lv, s19762c21f1, ABISELECT(2816,2324), "S19762C21.s19762c21f1");
    check_field_offset(lv, s19762c21f2, ABISELECT(2824,2332), "S19762C21.s19762c21f2");
    test_class_info(&lv, &cd_S19762C21);
    dp->~S19762C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C21(Test_S19762C21, "S19762C21", ABISELECT(46672,38400));

#else // __cplusplus

extern void _ZN9S19762C21C1Ev();
extern void _ZN9S19762C21D1Ev();
Name_Map name_map_S19762C21[] = {
  NSPAIR(_ZN9S19762C21C1Ev),
  NSPAIR(_ZN9S19762C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C22;
extern VTBL_ENTRY _ZTI9S19762C22[];
extern  VTBL_ENTRY _ZTV9S19762C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C22[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C19;
extern VTBL_ENTRY _ZTI9S19762C19[];
extern  VTBL_ENTRY _ZTV9S19762C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C19[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
static Base_Class bases_S19762C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C9,    ABISELECT(2928,2400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S19762C13,    ABISELECT(2928,2400), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(3560,2916), //bcp->offset
    51, //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
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(10112,8288), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(10416,8532), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(10712,8776), //bcp->offset
    81, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(11176,9176), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(10416,8532), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(14536,11928), //bcp->offset
    89, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19762C12,    ABISELECT(3712,3040), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19762C22,    ABISELECT(2848,2348), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(14704,12064), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(34728,28556), //bcp->offset
    139, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(14704,12064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    26, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(35192,28956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(35664,29364), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C7,    ABISELECT(35664,29364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(36128,29744), //bcp->offset
    178, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(35664,29364), //bcp->offset
    164, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(35192,28956), //bcp->offset
    147, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(15168,12444), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(15312,12568), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(15312,12568), //bcp->offset
    126, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(15776,12948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(15776,12948), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(15168,12444), //bcp->offset
    113, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19762C19,    ABISELECT(14704,12064), //bcp->offset
    92, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(144,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
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(144,124), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(608,504), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19762C16,    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
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C21[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C21D1Ev();
extern void _ZN9S19762C21D0Ev();
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19762C21D1Ev,_ZThn504_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn608_N9S19762C21D0Ev,_ZThn504_N9S19762C21D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn3712_N9S19762C21D1Ev,_ZThn3040_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn3712_N9S19762C21D0Ev,_ZThn3040_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19762C21D1Ev,_ZThn8532_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19762C21D0Ev,_ZThn8532_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn14704_N9S19762C21D1Ev,_ZThn12064_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn14704_N9S19762C21D0Ev,_ZThn12064_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19762C21D1Ev,_ZThn28956_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19762C21D0Ev,_ZThn28956_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19762C21D1Ev,_ZThn29364_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19762C21D0Ev,_ZThn29364_N9S19762C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev)();
static  VTBL_ENTRY vtc_S19762C21[] = {
  ABISELECT(14704,12064),
  ABISELECT(3712,3040),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(34728,28556),
  ABISELECT(14536,11928),
  ABISELECT(3560,2916),
  ABISELECT(10416,8532),
  ABISELECT(35664,29364),
  ABISELECT(35192,28956),
  ABISELECT(10112,8288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
  ABISELECT(9968,8164),
  ABISELECT(3416,2792),
  ABISELECT(14392,11804),
  ABISELECT(34584,28432),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19762C21D1Ev,_ZThn504_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19762C21D0Ev,_ZThn504_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-2848,-2348),
  ABISELECT(11688,9580),
  ABISELECT(7568,6184),
  ABISELECT(7264,5940),
  ABISELECT(864,692),
  ABISELECT(712,568),
  ABISELECT(80,52),
  ABISELECT(-2848,-2348),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev),
  0,
  ABISELECT(-2928,-2400),
  0,
  ABISELECT(-2928,-2400),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  ABISELECT(-3560,-2916),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-3712,-3040),
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-3712,-3040),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev),
  0,
  ABISELECT(-10112,-8288),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10416,-8532),
  0,
  ABISELECT(-10416,-8532),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-10712,-8776),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-11176,-9176),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-10976,-9012),
  ABISELECT(-14536,-11928),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-14704,-12064),
  0,
  0,
  0,
  ABISELECT(-4288,-3532),
  ABISELECT(20960,17300),
  ABISELECT(20488,16892),
  ABISELECT(-4592,-3776),
  ABISELECT(-11144,-9148),
  ABISELECT(-168,-136),
  ABISELECT(20024,16492),
  ABISELECT(-14704,-12064),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev),
  ABISELECT(19560,16112),
  ABISELECT(-632,-516),
  ABISELECT(-11608,-9528),
  ABISELECT(-4752,-3912),
  ABISELECT(20496,16920),
  ABISELECT(20024,16512),
  ABISELECT(-5056,-4156),
  ABISELECT(-15168,-12444),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(-5200,-4280),
  ABISELECT(-11752,-9652),
  ABISELECT(-776,-640),
  ABISELECT(19416,15988),
  ABISELECT(-15312,-12568),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-15776,-12948),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-34728,-28556),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-35192,-28956),
  0,
  0,
  0,
  ABISELECT(-464,-400),
  ABISELECT(-20656,-17028),
  ABISELECT(-31632,-26040),
  ABISELECT(-24776,-20424),
  ABISELECT(472,408),
  ABISELECT(-25080,-20668),
  ABISELECT(-35192,-28956),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev),
  ABISELECT(-35664,-29364),
  0,
  0,
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  ABISELECT(-35664,-29364),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev),
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-36128,-29744),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S19762C21[];
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__A1__9S19762C21[] = {
  ABISELECT(34728,28556),
  ABISELECT(14536,11928),
  ABISELECT(3560,2916),
  ABISELECT(10416,8532),
  ABISELECT(35664,29364),
  ABISELECT(35192,28956),
  ABISELECT(10112,8288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A3__9S19762C21[] = {
  ABISELECT(9968,8164),
  ABISELECT(3416,2792),
  ABISELECT(14392,11804),
  ABISELECT(34584,28432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C16__A3__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-34584,-28432),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C16__A3__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-14392,-11804),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A3__9S19762C21[] = {
  0,
  ABISELECT(-3416,-2792),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C16__A3__9S19762C21[] = {
  0,
  ABISELECT(-9968,-8164),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C16__A1__9S19762C21[] = {
  0,
  ABISELECT(-10112,-8288),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19762C16D1Ev,_ZThn28956_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19762C16D0Ev,_ZThn28956_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-35192,-28956),
  0,
  0,
  0,
  ABISELECT(-464,-400),
  ABISELECT(-20656,-17028),
  ABISELECT(-31632,-26040),
  ABISELECT(-24776,-20424),
  ABISELECT(472,408),
  ABISELECT(-25080,-20668),
  ABISELECT(-35192,-28956),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19762C16D1Ev,_ZThn29364_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19762C16D0Ev,_ZThn29364_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-35664,-29364),
  0,
  0,
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  ABISELECT(-35664,-29364),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19762C16D1Ev,_ZThn8532_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19762C16D0Ev,_ZThn8532_N9S19762C16D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10416,-8532),
  0,
  ABISELECT(-10416,-8532),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-10712,-8776),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-11176,-9176),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C16__A1__9S19762C21[] = {
  0,
  ABISELECT(-3560,-2916),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-14536,-11928),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C16__A1__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-34728,-28556),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-36128,-29744),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C16__A1__9S19762C21[] = {
  ABISELECT(9968,8164),
  ABISELECT(3416,2792),
  ABISELECT(14392,11804),
  ABISELECT(34584,28432),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN9S19762C22D1Ev();
extern void _ZN9S19762C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C21[] = {
  ABISELECT(11688,9580),
  ABISELECT(7568,6184),
  ABISELECT(7264,5940),
  ABISELECT(864,692),
  ABISELECT(712,568),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN9S19762C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C22D0Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C22__9S19762C21[] = {
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C22__9S19762C21[] = {
  0,
  ABISELECT(-712,-568),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19762C22D1Ev,_ZThn692_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19762C22D0Ev,_ZThn692_N9S19762C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C22__9S19762C21[] = {
  ABISELECT(-864,-692),
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-864,-692),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C22__9S19762C21[] = {
  0,
  ABISELECT(-7264,-5940),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19762C22D1Ev,_ZThn6184_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19762C22D0Ev,_ZThn6184_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C22__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7568,-6184),
  0,
  ABISELECT(-7568,-6184),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C22__9S19762C21[] = {
  ABISELECT(-7864,-6428),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C22__9S19762C21[] = {
  ABISELECT(-8328,-6828),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C22__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-11688,-9580),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C21[] = {
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C12__9S19762C21[] = {
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C12__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C21[] = {
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C21[] = {
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C12__9S19762C21[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C21[] = {
  0,
  ABISELECT(10976,9012),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void _ZN9S19762C19D1Ev();
extern void _ZN9S19762C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C21[] = {
  ABISELECT(-4288,-3532),
  ABISELECT(20960,17300),
  ABISELECT(20488,16892),
  ABISELECT(-4592,-3776),
  ABISELECT(-11144,-9148),
  ABISELECT(-168,-136),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C19__9S19762C21[] = {
  ABISELECT(-4592,-3776),
  ABISELECT(-11144,-9148),
  ABISELECT(-168,-136),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C19__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C19__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C19__9S19762C21[] = {
  0,
  ABISELECT(11144,9148),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C19__9S19762C21[] = {
  0,
  ABISELECT(4592,3776),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(19560,16112),
  ABISELECT(-632,-516),
  ABISELECT(-11608,-9528),
  ABISELECT(-4752,-3912),
  ABISELECT(20496,16920),
  ABISELECT(20024,16512),
  ABISELECT(-5056,-4156),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21[] = {
  ABISELECT(-5200,-4280),
  ABISELECT(-11752,-9652),
  ABISELECT(-776,-640),
  ABISELECT(19416,15988),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A2__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-15988),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A2__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(776,640),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A2__9S19762C21[] = {
  0,
  ABISELECT(11752,9652),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A2__9S19762C21[] = {
  0,
  ABISELECT(5200,4280),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C19__9S19762C21[] = {
  0,
  ABISELECT(5056,4156),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C16D1Ev,_ZThn16512_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C16D0Ev,_ZThn16512_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(-20024,-16512),
  0,
  0,
  0,
  ABISELECT(-464,-400),
  ABISELECT(-20656,-17028),
  ABISELECT(-31632,-26040),
  ABISELECT(-24776,-20424),
  ABISELECT(472,408),
  ABISELECT(-25080,-20668),
  ABISELECT(-20024,-16512),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C16D1Ev,_ZThn16920_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C16D0Ev,_ZThn16920_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(-20496,-16920),
  0,
  0,
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  ABISELECT(-20496,-16920),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4752,3912),
  0,
  ABISELECT(4752,3912),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(4456,3668),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(3992,3268),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C19__9S19762C21[] = {
  0,
  ABISELECT(11608,9528),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(632,516),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C19__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-16112),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-20960,-17300),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C19__9S19762C21[] = {
  ABISELECT(-5200,-4280),
  ABISELECT(-11752,-9652),
  ABISELECT(-776,-640),
  ABISELECT(19416,15988),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__9S19762C19__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C19__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C19__9S19762C21[] = {
  0,
  ABISELECT(11144,9148),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C19__9S19762C21[] = {
  0,
  ABISELECT(4592,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20488_N9S19762C19D1Ev,_ZThn16892_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20488_N9S19762C19D0Ev,_ZThn16892_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C19__9S19762C21[] = {
  ABISELECT(-20488,-16892),
  0,
  0,
  0,
  ABISELECT(-464,-400),
  ABISELECT(-20656,-17028),
  ABISELECT(-31632,-26040),
  ABISELECT(-24776,-20424),
  ABISELECT(472,408),
  ABISELECT(-25080,-20668),
  ABISELECT(-20488,-16892),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20960_N9S19762C19D1Ev,_ZThn17300_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20960_N9S19762C19D0Ev,_ZThn17300_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C19__9S19762C21[] = {
  ABISELECT(-20960,-17300),
  0,
  0,
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  ABISELECT(-20960,-17300),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C19__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4288,3532),
  0,
  ABISELECT(4288,3532),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__9S19762C19__9S19762C21[] = {
  ABISELECT(3992,3288),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A2__9S19762C19__9S19762C21[] = {
  ABISELECT(3528,2888),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C19__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-21424,-17680),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__9S19762C19__9S19762C21[] = {
  ABISELECT(19560,16112),
  ABISELECT(-632,-516),
  ABISELECT(-11608,-9528),
  ABISELECT(-4752,-3912),
  ABISELECT(20496,16920),
  ABISELECT(20024,16512),
  ABISELECT(-5056,-4156),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A2__9S19762C19__9S19762C21[] = {
  ABISELECT(-5200,-4280),
  ABISELECT(-11752,-9652),
  ABISELECT(-776,-640),
  ABISELECT(19416,15988),
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C21[] = {
  ABISELECT(-464,-400),
  ABISELECT(-20656,-17028),
  ABISELECT(-31632,-26040),
  ABISELECT(-24776,-20424),
  ABISELECT(472,408),
  ABISELECT(-25080,-20668),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__9S19762C21[] = {
  0,
  ABISELECT(25080,20668),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__9S19762C21[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(24776,20424),
  0,
  ABISELECT(24776,20424),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C21[] = {
  ABISELECT(24480,20180),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C21[] = {
  ABISELECT(24016,19780),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__9S19762C21[] = {
  0,
  ABISELECT(31632,26040),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(20656,17028),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(464,400),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C21[] = {
  ABISELECT(-25248,-20832),
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A1__9S19762C21[] = {
  ABISELECT(-25552,-21076),
  ABISELECT(-32104,-26448),
  ABISELECT(-21128,-17436),
  ABISELECT(-936,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A1__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(936,808),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A1__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(21128,17436),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__9S19762C21[] = {
  0,
  ABISELECT(32104,26448),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A1__9S19762C21[] = {
  0,
  ABISELECT(25552,21076),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A1__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__A1__9S19762C21[] = {
  0,
  ABISELECT(26016,21456),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__A1__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(25712,21212),
  0,
  ABISELECT(25712,21212),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A1__9S19762C21[] = {
  ABISELECT(25416,20968),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A1__9S19762C21[] = {
  ABISELECT(24952,20568),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A1__9S19762C21[] = {
  0,
  ABISELECT(32568,26828),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__A1__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(21592,17816),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__9S19762C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(25248,20832),
  0,
  ABISELECT(25248,20832),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C21[] = {
  ABISELECT(24952,20588),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C21[] = {
  ABISELECT(24488,20188),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__9S19762C21[] = {
  0,
  ABISELECT(32104,26448),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__9S19762C21[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(21128,17436),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__9S19762C21[] = {
  0,
  0,
  0,
  ABISELECT(936,808),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__9S19762C21[] = {
  0,
  ABISELECT(25552,21076),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__9S19762C21[] = {
  ABISELECT(-21592,-17816),
  ABISELECT(-32568,-26828),
  ABISELECT(-25712,-21212),
  ABISELECT(-26016,-21456),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTT_ENTRY vtt_S19762C21[] = {
  {&(_ZTV9S19762C21[13]),  13,186},
  {&(_tg__ZTV9S19762C16__A1__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A3__9S19762C21[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C16__A3__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C16__A3__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C16__A3__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C16__A3__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C16__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C16__A1__9S19762C21[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C16__A1__9S19762C21[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C16__A1__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C16__A1__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C16__A1__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C16__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C16__A1__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C16__A1__9S19762C21[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C16__A1__9S19762C21[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C16__A1__9S19762C21[6]),  6,7},
  {&(_ZTV9S19762C21[40]),  40,186},
  {&(_ZTV9S19762C21[47]),  47,186},
  {&(_ZTV9S19762C21[54]),  54,186},
  {&(_ZTV9S19762C21[62]),  62,186},
  {&(_ZTV9S19762C21[67]),  67,186},
  {&(_ZTV9S19762C21[77]),  77,186},
  {&(_ZTV9S19762C21[83]),  83,186},
  {&(_ZTV9S19762C21[88]),  88,186},
  {&(_ZTV9S19762C21[92]),  92,186},
  {&(_ZTV9S19762C21[108]),  108,186},
  {&(_ZTV9S19762C21[144]),  144,186},
  {&(_ZTV9S19762C21[159]),  159,186},
  {&(_ZTV9S19762C21[174]),  174,186},
  {&(_ZTV9S19762C21[184]),  184,186},
  {&(_ZTV9S19762C21[122]),  122,186},
  {&(_ZTV9S19762C21[132]),  132,186},
  {&(_ZTV9S19762C21[135]),  135,186},
  {&(_ZTV9S19762C21[24]),  24,186},
  {&(_tg__ZTV9S19762C22__9S19762C21[8]),  8,10},
  {&(_tg__ZTV9S19762C13__9S19762C22__9S19762C21[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C22__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C22__9S19762C21[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C22__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C22__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C22__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C22__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C22__9S19762C21[3]),  3,3},
  {&(_tg__ZTV9S19762C12__9S19762C21[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C12__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C12__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C12__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C12__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C12__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C12__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C8__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C19__9S19762C21[9]),  9,14},
  {&(_tg__ZTV8S19762C79S19762C19__9S19762C21[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C19__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C19__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A2__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A2__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A2__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A2__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C19__9S19762C21[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C19__9S19762C21[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C19__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C19__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C19__9S19762C21[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__9S19762C21[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C19__9S19762C21[6]),  6,7},
  {&(_tg__ZTV8S19762C4__9S19762C19__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C8__9S19762C19__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C19__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C19__9S19762C21[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C19__9S19762C21[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C19__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__9S19762C19__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A2__9S19762C19__9S19762C21[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C19__9S19762C21[6]),  6,8},
  {&(_tg__ZTV9S19762C16__9S19762C19__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A2__9S19762C19__9S19762C21[6]),  6,7},
  {&(_tg__ZTV9S19762C15__9S19762C21[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__9S19762C21[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__9S19762C21[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C21[6]),  6,8},
  {&(_tg__ZTV9S19762C11__9S19762C21[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A1__9S19762C21[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A1__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A1__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__A1__9S19762C21[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__A1__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A1__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A1__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A1__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__A1__9S19762C21[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__9S19762C21[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__9S19762C21[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__9S19762C21[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__9S19762C21[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__9S19762C21[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__9S19762C21[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__9S19762C21[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__9S19762C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19762C21[];
extern  VTBL_ENTRY _ZTV9S19762C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C21[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19762C19D0Ev,_ZThn17300_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19762C19D1Ev,_ZThn17300_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19762C19D0Ev,_ZThn16892_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19762C19D1Ev,_ZThn16892_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D0Ev,_ZThn5492_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19762C12D1Ev,_ZThn5492_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19762C22D0Ev,_ZThn692_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19762C22D1Ev,_ZThn692_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19762C22D0Ev,_ZThn6184_N9S19762C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19762C22D1Ev,_ZThn6184_N9S19762C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19762C16D0Ev,_ZThn8532_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19762C16D1Ev,_ZThn8532_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C16D0Ev,_ZThn16920_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19762C16D0Ev,_ZThn29364_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C16D1Ev,_ZThn16920_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19762C16D1Ev,_ZThn29364_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C16D0Ev,_ZThn16512_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19762C16D0Ev,_ZThn28956_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C16D1Ev,_ZThn16512_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19762C16D1Ev,_ZThn28956_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19762C21D0Ev,_ZThn29364_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19762C21D1Ev,_ZThn29364_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19762C21D0Ev,_ZThn28956_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19762C21D1Ev,_ZThn28956_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19762C21D0Ev,_ZThn12064_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19762C21D1Ev,_ZThn12064_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19762C21D0Ev,_ZThn3040_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19762C21D1Ev,_ZThn3040_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19762C21D0Ev,_ZThn8532_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19762C21D1Ev,_ZThn8532_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C21 = {  "S19762C21", // class name
  bases_S19762C21, 33,
  &(vtc_S19762C21[0]), // expected_vtbl_contents
  &(vtt_S19762C21[0]), // expected_vtt_contents
  ABISELECT(46672,38400), // object size
  NSPAIRA(_ZTI9S19762C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C21),186, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C21),120, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C24_nt  {
  void *s19762c24f0;
  long s19762c24f1;
  int s19762c24f2;
  __tsi64 s19762c24f3;
  void *s19762c24f4;
  int s19762c24f5;
  int s19762c24f6;
  int s19762c24f7;
  int s19762c24f8;
  virtual void  v17(); // _ZN12S19762C24_nt3v17Ev
  virtual void  v18(); // _ZN12S19762C24_nt3v18Ev
  ~S19762C24_nt(); // tgen
  S19762C24_nt(); // tgen
};
//SIG(-1 S19762C24_nt) C1{ v1 v2 Fp Fl Fi FL Fp Fi[4]}


void  S19762C24_nt ::v17(){vfunc_called(this, "_ZN12S19762C24_nt3v17Ev");}
void  S19762C24_nt ::v18(){vfunc_called(this, "_ZN12S19762C24_nt3v18Ev");}
S19762C24_nt ::~S19762C24_nt(){ note_dtor("S19762C24_nt", this);} // tgen
S19762C24_nt ::S19762C24_nt(){ note_ctor("S19762C24_nt", this);} // tgen

//skip512 S19762C24_nt

#else // __cplusplus

extern void _ZN12S19762C24_ntC1Ev();
extern void _ZN12S19762C24_ntD1Ev();
Name_Map name_map_S19762C24_nt[] = {
  NSPAIR(_ZN12S19762C24_ntC1Ev),
  NSPAIR(_ZN12S19762C24_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19762C24_nt[];
extern void _ZN12S19762C24_nt3v17Ev();
extern void _ZN12S19762C24_nt3v18Ev();
static  VTBL_ENTRY vtc_S19762C24_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19762C24_nt[0]),
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI12S19762C24_nt[];
VTBL_ENTRY *P__ZTI12S19762C24_nt = _ZTI12S19762C24_nt; 
extern  VTBL_ENTRY _ZTV12S19762C24_nt[];
Class_Descriptor cd_S19762C24_nt = {  "S19762C24_nt", // class name
  0,0,//no base classes
  &(vtc_S19762C24_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI12S19762C24_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19762C24_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  S19762C20  : S19762C6 , virtual S19762C21 , virtual S19762C24_nt {
  int s19762c20f0;
  int s19762c20f1[6];
  __tsi64 s19762c20f2[3];
  __tsi64 s19762c20f3;
  int s19762c20f4;
  int s19762c20f5;
  int s19762c20f6;
  int s19762c20f7;
  char s19762c20f8:7;
  void *s19762c20f9;
  char s19762c20f10;
  ::S19762C7 s19762c20f11;
  int s19762c20f12;
  ~S19762C20(); // tgen
  S19762C20(); // tgen
};
//SIG(-1 S19762C20) C1{ BC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ BC3 VBC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC6{ VBC3 Fp FC3 Fi:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC5 BC3 vd v6 FL[2] Fp[8] FC4 Fp Fi FC4 Fi} BC9{ VBC8 VBC3 VBC6 BC4 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC4 FL[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs Fi:8} VBC12{ VBC13{ VBC11 VBC3 VBC10 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL} VBC15{ BC4 VBC16{ VBC7 BC5 VBC9 Fc:8 Fi} BC17{ BC3 VBC7 VBC16 BC4 BC11 vd v11 Fi FC4 Fi Fs FL:8 Fi} v12 v13 FC16 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC17 v14 Fi FL Fi[4]} VBC18{ v15 v16 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] FL[3] FL Fi Fi Fi Fi Fc:7 Fp Fc FC4 Fi}


S19762C20 ::~S19762C20(){ note_dtor("S19762C20", this);} // tgen
S19762C20 ::S19762C20(){ note_ctor("S19762C20", this);} // tgen

static void Test_S19762C20()
{
  extern Class_Descriptor cd_S19762C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4699,15447)];
    init_test(&cd_S19762C20, buf);
    S19762C20 *dp, &lv = *(dp=new (buf) S19762C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(75168,61784), "sizeof(S19762C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C20)");
    /*is_ambiguous_... S19762C6::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C6*), ABISELECT(27944,22960), "S19762C20");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*)(S19762C6*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C22::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C22*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(27944,22960), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), ABISELECT(28096,23084), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(28560,23464), "S19762C20");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(28560,23464), "S19762C20");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C19*), ABISELECT(28560,23464), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(28560,23464), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(28560,23464), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(28560,23464), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(29024,23864), "S19762C20");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*)(S19762C6*), ABISELECT(29024,23864), "S19762C20");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(29024,23864), "S19762C20");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C19*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(29024,23864), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(29200,24000), "S19762C20");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C19*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C19*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C21*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(29200,24000), "S19762C20");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C6*), ABISELECT(28096,23084), "S19762C20");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*)(S19762C6*), 0, "S19762C20");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*)(S19762C6*), ABISELECT(296,244), "S19762C20");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*)(S19762C6*), ABISELECT(760,644), "S19762C20");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C6*), 0, "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(29504,24244), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(29800,24488), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(30264,24888), "S19762C20");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*)(S19762C6*), ABISELECT(29504,24244), "S19762C20");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(29504,24244), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*), ABISELECT(29504,24244), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(29504,24244), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(29504,24244), "S19762C20");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C20");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C20");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*)(S19762C6*), ABISELECT(4592,3776), "S19762C20");
    check_base_class_offset(lv, (S19762C11*)(S19762C6*), ABISELECT(4128,3396), "S19762C20");
    check_base_class_offset(lv, (S19762C6*), 0, "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C13 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*), ABISELECT(36560,30040), "S19762C20");
    check_base_class_offset(lv, (S19762C13*)(S19762C22*), ABISELECT(36560,30040), "S19762C20");
    check_base_class_offset(lv, (S19762C12*)(S19762C22*), ABISELECT(37200,30556), "S19762C20");
    check_base_class_offset(lv, (S19762C22*)(S19762C21*), ABISELECT(36480,29988), "S19762C20");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C19*), ABISELECT(43600,35804), "S19762C20");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C19*), ABISELECT(43600,35804), "S19762C20");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(63624,52296), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(64096,52704), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(64096,52704), "S19762C20");
    /*is_ambiguous_... S19762C20::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(64560,53084), "S19762C20");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(64096,52704), "S19762C20");
    check_base_class_offset(lv, (S19762C15*)(S19762C19*), ABISELECT(63624,52296), "S19762C20");
    check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C19*), ABISELECT(63624,52296), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C21*), ABISELECT(63624,52296), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C19*), ABISELECT(44064,36184), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(44208,36308), "S19762C20");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(44208,36308), "S19762C20");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(44672,36688), "S19762C20");
    check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(44672,36688), "S19762C20");
    check_base_class_offset(lv, (S19762C16*)(S19762C19*), ABISELECT(44064,36184), "S19762C20");
    check_base_class_offset(lv, (S19762C19*)(S19762C21*), ABISELECT(43600,35804), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C21*), ABISELECT(33632,27640), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(33776,27764), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(33776,27764), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(34240,28144), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(34240,28144), "S19762C20");
    /*is_ambiguous_... S19762C21::S19762C16 */ AMB_check_base_class_offset(lv, (S19762C16*)(S19762C21*), ABISELECT(33632,27640), "S19762C20");
    check_base_class_offset(lv, (S19762C21*), ABISELECT(33632,27640), "S19762C20");
    check_base_class_offset(lv, (S19762C24_nt*), ABISELECT(75104,61740), "S19762C20");
    check_field_offset(lv, s19762c20f0, ABISELECT(26276,21584), "S19762C20.s19762c20f0");
    check_field_offset(lv, s19762c20f1, ABISELECT(26280,21588), "S19762C20.s19762c20f1");
    check_field_offset(lv, s19762c20f2, ABISELECT(26304,21612), "S19762C20.s19762c20f2");
    check_field_offset(lv, s19762c20f3, ABISELECT(26328,21636), "S19762C20.s19762c20f3");
    check_field_offset(lv, s19762c20f4, ABISELECT(26336,21644), "S19762C20.s19762c20f4");
    check_field_offset(lv, s19762c20f5, ABISELECT(26340,21648), "S19762C20.s19762c20f5");
    check_field_offset(lv, s19762c20f6, ABISELECT(26344,21652), "S19762C20.s19762c20f6");
    check_field_offset(lv, s19762c20f7, ABISELECT(26348,21656), "S19762C20.s19762c20f7");
    set_bf_and_test(lv, s19762c20f8, ABISELECT(26352,21660), 0, 7, 1, "S19762C20");
    set_bf_and_test(lv, s19762c20f8, ABISELECT(26352,21660), 0, 7, hide_sll(1LL<<6), "S19762C20");
    check_field_offset(lv, s19762c20f9, ABISELECT(26360,21664), "S19762C20.s19762c20f9");
    check_field_offset(lv, s19762c20f10, ABISELECT(26368,21668), "S19762C20.s19762c20f10");
    check_field_offset(lv, s19762c20f11, ABISELECT(26384,21672), "S19762C20.s19762c20f11");
    check_field_offset(lv, s19762c20f12, ABISELECT(27936,22956), "S19762C20.s19762c20f12");
    test_class_info(&lv, &cd_S19762C20);
    dp->~S19762C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C20(Test_S19762C20, "S19762C20", ABISELECT(75168,61784));

#else // __cplusplus

extern void _ZN9S19762C20C1Ev();
extern void _ZN9S19762C20D1Ev();
Name_Map name_map_S19762C20[] = {
  NSPAIR(_ZN9S19762C20C1Ev),
  NSPAIR(_ZN9S19762C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C6;
extern VTBL_ENTRY _ZTI8S19762C6[];
extern  VTBL_ENTRY _ZTV8S19762C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C6[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C22;
extern VTBL_ENTRY _ZTI9S19762C22[];
extern  VTBL_ENTRY _ZTV9S19762C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C22[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C19;
extern VTBL_ENTRY _ZTI9S19762C19[];
extern  VTBL_ENTRY _ZTV9S19762C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C19[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C21;
extern VTBL_ENTRY _ZTI9S19762C21[];
extern  VTBL_ENTRY _ZTV9S19762C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C21[];
extern Class_Descriptor cd_S19762C24_nt;
extern VTBL_ENTRY _ZTI12S19762C24_nt[];
extern  VTBL_ENTRY _ZTV12S19762C24_nt[];
static Base_Class bases_S19762C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C5,    ABISELECT(27944,22960), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(28096,23084), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(28560,23464), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(29024,23864), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(29200,24000), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(28096,23084), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(296,244), //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
    39, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(760,644), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19762C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(29504,24244), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(29800,24488), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(30264,24888), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(29504,24244), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(4592,3776), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(4128,3396), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19762C6,    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
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C9,    ABISELECT(36560,30040), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(36560,30040), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19762C12,    ABISELECT(37200,30556), //bcp->offset
    154, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19762C22,    ABISELECT(36480,29988), //bcp->offset
    134, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(43600,35804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(43600,35804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(63624,52296), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(64096,52704), //bcp->offset
    -1, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(64096,52704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(64560,53084), //bcp->offset
    241, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(64096,52704), //bcp->offset
    227, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(63624,52296), //bcp->offset
    210, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(44064,36184), //bcp->offset
    -1, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(44208,36308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(44208,36308), //bcp->offset
    197, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(44672,36688), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(44672,36688), //bcp->offset
    204, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(44064,36184), //bcp->offset
    184, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19762C19,    ABISELECT(43600,35804), //bcp->offset
    163, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(33632,27640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(33776,27764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(33776,27764), //bcp->offset
    121, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(34240,28144), //bcp->offset
    -1, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(34240,28144), //bcp->offset
    128, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(33632,27640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19762C21,    ABISELECT(33632,27640), //bcp->offset
    97, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C24_nt,    ABISELECT(75104,61740), //bcp->offset
    249, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19762C20[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN9S19762C20D1Ev();
extern void _ZN9S19762C20D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19762C20D1Ev,_ZThn3396_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19762C20D0Ev,_ZThn3396_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn4592_N9S19762C20D1Ev,_ZThn3776_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19762C20D0Ev,_ZThn3776_N9S19762C20D0Ev)();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn29504_N9S19762C20D1Ev,_ZThn24244_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn29504_N9S19762C20D0Ev,_ZThn24244_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn33632_N9S19762C20D1Ev,_ZThn27640_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn33632_N9S19762C20D0Ev,_ZThn27640_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19762C20D1Ev,_ZTvn504_n60_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19762C20D0Ev,_ZTvn504_n60_N9S19762C20D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn36480_N9S19762C20D1Ev,_ZThn29988_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn36480_N9S19762C20D0Ev,_ZThn29988_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn36560_N9S19762C20D1Ev,_ZThn30040_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn36560_N9S19762C20D0Ev,_ZThn30040_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn37200_N9S19762C20D1Ev,_ZThn30556_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn37200_N9S19762C20D0Ev,_ZThn30556_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn43600_N9S19762C20D1Ev,_ZThn35804_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn43600_N9S19762C20D0Ev,_ZThn35804_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C20D1Ev,_ZTvn380_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C20D0Ev,_ZTvn380_n52_N9S19762C20D0Ev)();
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C20D1Ev,_ZTvn884_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C20D0Ev,_ZTvn884_n52_N9S19762C20D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn63624_N9S19762C20D1Ev,_ZThn52296_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn63624_N9S19762C20D0Ev,_ZThn52296_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn64096_N9S19762C20D1Ev,_ZThn52704_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn64096_N9S19762C20D0Ev,_ZThn52704_N9S19762C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19762C20D1Ev,_ZTvn380_n40_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C20D0Ev,_ZTvn380_n40_N9S19762C20D0Ev)();
extern void _ZN12S19762C24_nt3v17Ev();
extern void _ZN12S19762C24_nt3v18Ev();
static  VTBL_ENTRY vtc_S19762C20[] = {
  ABISELECT(75104,61740),
  ABISELECT(64096,52704),
  ABISELECT(63624,52296),
  ABISELECT(43600,35804),
  ABISELECT(37200,30556),
  ABISELECT(36560,30040),
  ABISELECT(36480,29988),
  ABISELECT(33632,27640),
  ABISELECT(29504,24244),
  ABISELECT(29200,24000),
  ABISELECT(29024,23864),
  ABISELECT(28560,23464),
  ABISELECT(28096,23084),
  ABISELECT(27944,22960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19762C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(25376,20848),
  ABISELECT(25072,20604),
  ABISELECT(23816,19564),
  ABISELECT(24896,20468),
  ABISELECT(24432,20068),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19762C20D1Ev,_ZThn3396_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19762C20D0Ev,_ZThn3396_N9S19762C20D0Ev),
  ABISELECT(24432,20088),
  ABISELECT(23352,19184),
  ABISELECT(24912,20468),
  ABISELECT(24608,20224),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19762C20D1Ev,_ZThn3776_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19762C20D0Ev,_ZThn3776_N9S19762C20D0Ev),
  0,
  ABISELECT(-27944,-22960),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-28096,-23084),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-28560,-23464),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-29024,-23864),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  0,
  ABISELECT(-29200,-24000),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-29504,-24244),
  0,
  ABISELECT(-29504,-24244),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-29800,-24488),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-30264,-24888),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-33632,-27640),
  0,
  ABISELECT(9968,8164),
  ABISELECT(3568,2916),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  ABISELECT(-33632,-27640),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-33776,-27764),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-34240,-28144),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19762C20D1Ev,_ZTvn504_n60_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19762C20D0Ev,_ZTvn504_n60_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-36480,-29988),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-36480,-29988),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev),
  0,
  ABISELECT(-36560,-30040),
  0,
  ABISELECT(-36560,-30040),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-37200,-30556),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-37200,-30556),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev),
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-43600,-35804),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-43600,-35804),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev),
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-44064,-36184),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C20D1Ev,_ZTvn380_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C20D0Ev,_ZTvn380_n52_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-44208,-36308),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-44672,-36688),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C20D1Ev,_ZTvn884_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C20D0Ev,_ZTvn884_n52_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-63624,-52296),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-63624,-52296),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev),
  ABISELECT(-64096,-52704),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-64096,-52704),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev),
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-64560,-53084),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C20D1Ev,_ZTvn380_n40_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C20D0Ev,_ZTvn380_n40_N9S19762C20D0Ev),
  0,
  0,
  ABISELECT(-75104,-61740),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV9S19762C20[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C6D1Ev();
extern void _ZN8S19762C6D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C6__9S19762C20[] = {
  ABISELECT(29504,24244),
  ABISELECT(29200,24000),
  ABISELECT(29024,23864),
  ABISELECT(28560,23464),
  ABISELECT(28096,23084),
  ABISELECT(27944,22960),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(25376,20848),
  ABISELECT(25072,20604),
  ABISELECT(23816,19564),
  ABISELECT(24896,20468),
  ABISELECT(24432,20068),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C118S19762C6__A1__9S19762C20[] = {
  ABISELECT(25072,20604),
  ABISELECT(23816,19564),
  ABISELECT(24896,20468),
  ABISELECT(24432,20068),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C118S19762C6__A1__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-20068),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C118S19762C6__A1__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-24896,-20468),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C6__A1__9S19762C20[] = {
  0,
  ABISELECT(-23816,-19564),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C118S19762C6__A1__9S19762C20[] = {
  0,
  ABISELECT(-25072,-20604),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(24432,20088),
  ABISELECT(23352,19184),
  ABISELECT(24912,20468),
  ABISELECT(24608,20224),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-24608,-20224),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn24912_N9S19762C12D1Ev,_ZThn20468_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn24912_N9S19762C12D0Ev,_ZThn20468_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-24912,-20468),
  0,
  ABISELECT(-24912,-20468),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-25208,-20712),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-25672,-21112),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-23352,-19184),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-24432,-20088),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn25376_N9S19762C11D1Ev,_ZThn20848_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn25376_N9S19762C11D0Ev,_ZThn20848_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-25376,-20848),
  0,
  ABISELECT(-25376,-20848),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-25672,-21092),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-26136,-21492),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C118S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-23816,-19564),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-24896,-20468),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C118S19762C6__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-20068),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C118S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-25072,-20604),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C118S19762C6__9S19762C20[] = {
  ABISELECT(24432,20088),
  ABISELECT(23352,19184),
  ABISELECT(24912,20468),
  ABISELECT(24608,20224),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-27944,-22960),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C6__9S19762C20[] = {
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-28096,-23084),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C6__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(-28560,-23464),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C6__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-29024,-23864),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C6__9S19762C20[] = {
  0,
  ABISELECT(-29200,-24000),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C11__8S19762C6__9S19762C20[] = {
  ABISELECT(25376,20848),
  ABISELECT(25072,20604),
  ABISELECT(23816,19564),
  ABISELECT(24896,20468),
  ABISELECT(24432,20068),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn29504_N8S19762C6D1Ev,_ZThn24244_N8S19762C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev)();
extern void ABISELECT(_ZThn29504_N8S19762C6D0Ev,_ZThn24244_N8S19762C6D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__A1__8S19762C6__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-29504,-24244),
  0,
  ABISELECT(-29504,-24244),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__8S19762C6__9S19762C20[] = {
  ABISELECT(-29800,-24488),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A3__8S19762C6__9S19762C20[] = {
  ABISELECT(-30264,-24888),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__8S19762C6__9S19762C20[] = {
  ABISELECT(24432,20088),
  ABISELECT(23352,19184),
  ABISELECT(24912,20468),
  ABISELECT(24608,20224),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__9S19762C20[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__9S19762C20[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__9S19762C20[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C20[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__9S19762C20[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C21D1Ev();
extern void _ZN9S19762C21D0Ev();
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C21__9S19762C20[] = {
  ABISELECT(9968,8164),
  ABISELECT(3568,2916),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C21__A5__9S19762C20[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A5__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(5216,4300),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A5__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4752,3900),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A5__9S19762C20[] = {
  0,
  ABISELECT(5832,4804),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A5__9S19762C20[] = {
  0,
  ABISELECT(4576,3764),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C21__A1__9S19762C20[] = {
  0,
  ABISELECT(4432,3640),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C16D1Ev,_ZThn24656_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C16D0Ev,_ZThn24656_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-29992,-24656),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-29992,-24656),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C16D1Ev,_ZThn25064_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C16D0Ev,_ZThn25064_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-30464,-25064),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-30464,-25064),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4128,3396),
  0,
  ABISELECT(4128,3396),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(3832,3152),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(3368,2752),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A1__9S19762C20[] = {
  0,
  ABISELECT(5688,4680),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4608,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A1__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,4176),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-30928,-25444),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A1__9S19762C20[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C21__9S19762C20[] = {
  ABISELECT(-2848,-2348),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-2848,-2348),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C21__9S19762C20[] = {
  0,
  ABISELECT(-2928,-2400),
  0,
  ABISELECT(-2928,-2400),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C21__9S19762C20[] = {
  0,
  ABISELECT(5688,4680),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19762C21D1Ev,_ZThn2916_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19762C21D0Ev,_ZThn2916_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C21__9S19762C20[] = {
  ABISELECT(-3568,-2916),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-3568,-2916),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C21__9S19762C20[] = {
  0,
  ABISELECT(4432,3640),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C21__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4128,3396),
  0,
  ABISELECT(4128,3396),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C21__9S19762C20[] = {
  ABISELECT(3832,3152),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C21__9S19762C20[] = {
  ABISELECT(3368,2752),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C21__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4608,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19762C21D1Ev,_ZThn8164_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19762C21D0Ev,_ZThn8164_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C21__9S19762C20[] = {
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-9968,-8164),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-9968,-8164),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C21__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,4176),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C21D1Ev,_ZThn24656_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C21D0Ev,_ZThn24656_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C21__9S19762C20[] = {
  ABISELECT(-29992,-24656),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-29992,-24656),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C21D1Ev,_ZThn25064_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C21D0Ev,_ZThn25064_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C21__9S19762C20[] = {
  ABISELECT(-30464,-25064),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-30464,-25064),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A1__9S19762C21__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-30928,-25444),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C21__9S19762C20[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-10432,-8544),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__9S19762C20[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-10576,-8668),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__9S19762C20[] = {
  ABISELECT(-11040,-9048),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A3__9S19762C21__9S19762C20[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN9S19762C22D1Ev();
extern void _ZN9S19762C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C20[] = {
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN9S19762C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C22D0Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C22__9S19762C20[] = {
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C22__9S19762C20[] = {
  0,
  ABISELECT(8536,7028),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19762C22D1Ev,_ZThn568_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19762C22D0Ev,_ZThn568_N9S19762C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C22__9S19762C20[] = {
  ABISELECT(-720,-568),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-720,-568),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C22__9S19762C20[] = {
  0,
  ABISELECT(7280,5988),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C22__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(6976,5744),
  0,
  ABISELECT(6976,5744),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C22__9S19762C20[] = {
  ABISELECT(6680,5500),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C22__9S19762C20[] = {
  ABISELECT(6216,5100),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C22__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(7456,6124),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C12__A1__9S19762C20[] = {
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C12__A1__9S19762C20[] = {
  0,
  ABISELECT(8000,6556),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C12__A1__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(7696,6312),
  0,
  ABISELECT(7696,6312),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C12__A1__9S19762C20[] = {
  ABISELECT(7400,6068),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C12__A1__9S19762C20[] = {
  ABISELECT(6936,5668),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C12__A1__9S19762C20[] = {
  0,
  ABISELECT(9256,7596),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12__A1__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(8176,6692),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void _ZN9S19762C19D1Ev();
extern void _ZN9S19762C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C20[] = {
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C19__A2__9S19762C20[] = {
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C19__A2__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,12340),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C19__A2__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(14576,11940),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C19__A2__9S19762C20[] = {
  0,
  ABISELECT(15656,12844),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C19__A2__9S19762C20[] = {
  0,
  ABISELECT(14400,11804),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A4__9S19762C20[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A4__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(15648,12844),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A4__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(15184,12444),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A4__9S19762C20[] = {
  0,
  ABISELECT(16264,13348),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A4__9S19762C20[] = {
  0,
  ABISELECT(15008,12308),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C19__9S19762C20[] = {
  0,
  ABISELECT(14864,12184),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19762C16D1Ev,_ZThn16112_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19762C16D0Ev,_ZThn16112_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-19560,-16112),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-19560,-16112),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19762C16D1Ev,_ZThn16520_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19762C16D0Ev,_ZThn16520_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-20032,-16520),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-20032,-16520),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(14560,11940),
  0,
  ABISELECT(14560,11940),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(14264,11696),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(13800,11296),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C19__9S19762C20[] = {
  0,
  ABISELECT(16120,13224),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(15040,12320),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C19__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(15504,12720),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-20496,-16900),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C19__9S19762C20[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__9S19762C19__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,12340),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C19__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(14576,11940),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C19__9S19762C20[] = {
  0,
  ABISELECT(15656,12844),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C19__9S19762C20[] = {
  0,
  ABISELECT(14400,11804),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C19D1Ev,_ZThn16492_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C19D0Ev,_ZThn16492_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C19__9S19762C20[] = {
  ABISELECT(-20024,-16492),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C19D1Ev,_ZThn16900_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C19D0Ev,_ZThn16900_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C19__9S19762C20[] = {
  ABISELECT(-20496,-16900),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-20496,-16900),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C19__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(14096,11560),
  0,
  ABISELECT(14096,11560),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__9S19762C19__9S19762C20[] = {
  ABISELECT(13800,11316),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A2__9S19762C19__9S19762C20[] = {
  ABISELECT(13336,10916),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C19__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-20960,-17280),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__9S19762C19__9S19762C20[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A2__9S19762C19__9S19762C20[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C20[] = {
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__9S19762C20[] = {
  0,
  ABISELECT(34424,28296),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__9S19762C20[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(34120,28052),
  0,
  ABISELECT(34120,28052),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C20[] = {
  ABISELECT(33824,27808),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C20[] = {
  ABISELECT(33360,27408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__9S19762C20[] = {
  0,
  ABISELECT(35680,29336),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(34600,28432),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(35064,28832),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__A1__9S19762C20[] = {
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A3__9S19762C20[] = {
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A3__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,29240),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A3__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35072,28840),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A3__9S19762C20[] = {
  0,
  ABISELECT(36152,29744),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A3__9S19762C20[] = {
  0,
  ABISELECT(34896,28704),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A2__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__A2__9S19762C20[] = {
  0,
  ABISELECT(35360,29084),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__A2__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(35056,28840),
  0,
  ABISELECT(35056,28840),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A2__9S19762C20[] = {
  ABISELECT(34760,28596),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A2__9S19762C20[] = {
  ABISELECT(34296,28196),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A2__9S19762C20[] = {
  0,
  ABISELECT(36616,30124),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__A2__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35536,29220),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__A1__9S19762C20[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(34592,28460),
  0,
  ABISELECT(34592,28460),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__A1__9S19762C20[] = {
  ABISELECT(34296,28216),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__A1__9S19762C20[] = {
  ABISELECT(33832,27816),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__A1__9S19762C20[] = {
  0,
  ABISELECT(36152,29744),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__A1__9S19762C20[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35072,28840),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__A1__9S19762C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,29240),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__A1__9S19762C20[] = {
  0,
  ABISELECT(34896,28704),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__A1__9S19762C20[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTT_ENTRY vtt_S19762C20[] = {
  {&(_ZTV9S19762C20[16]),  16,255},
  {&(_tg__ZTV8S19762C6__9S19762C20[8]),  8,14},
  {&(_tg__ZTV9S19762C118S19762C6__9S19762C20[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C118S19762C6__A1__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C118S19762C6__A1__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C118S19762C6__A1__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C6__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C118S19762C6__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C118S19762C6__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C118S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C6__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C118S19762C6__9S19762C20[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C118S19762C6__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C118S19762C6__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C118S19762C6__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C118S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C118S19762C6__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C118S19762C6__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C118S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C118S19762C6__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C5__8S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C7__8S19762C6__9S19762C20[7]),  7,8},
  {&(_tg__ZTV8S19762C4__8S19762C6__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C6__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C9__8S19762C6__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C11__8S19762C6__9S19762C20[7]),  7,11},
  {&(_tg__ZTV9S19762C10__A1__8S19762C6__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__8S19762C6__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A3__8S19762C6__9S19762C20[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__8S19762C6__9S19762C20[6]),  6,8},
  {&(_ZTV9S19762C20[52]),  52,255},
  {&(_ZTV9S19762C20[60]),  60,255},
  {&(_ZTV9S19762C20[66]),  66,255},
  {&(_ZTV9S19762C20[72]),  72,255},
  {&(_ZTV9S19762C20[75]),  75,255},
  {&(_ZTV9S19762C20[37]),  37,255},
  {&(_ZTV9S19762C20[85]),  85,255},
  {&(_ZTV9S19762C20[91]),  91,255},
  {&(_ZTV9S19762C20[96]),  96,255},
  {&(_ZTV9S19762C20[47]),  47,255},
  {&(_ZTV9S19762C20[116]),  116,255},
  {&(_ZTV9S19762C20[143]),  143,255},
  {&(_ZTV9S19762C20[150]),  150,255},
  {&(_ZTV9S19762C20[161]),  161,255},
  {&(_ZTV9S19762C20[179]),  179,255},
  {&(_ZTV9S19762C20[222]),  222,255},
  {&(_ZTV9S19762C20[237]),  237,255},
  {&(_ZTV9S19762C20[247]),  247,255},
  {&(_ZTV9S19762C20[193]),  193,255},
  {&(_ZTV9S19762C20[203]),  203,255},
  {&(_ZTV9S19762C20[206]),  206,255},
  {&(_ZTV9S19762C20[127]),  127,255},
  {&(_ZTV9S19762C20[130]),  130,255},
  {&(_ZTV9S19762C20[253]),  253,255},
  {&(_tg__ZTV8S19762C7__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C21__9S19762C20[13]),  13,18},
  {&(_tg__ZTV9S19762C169S19762C21__A1__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C21__A5__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A5__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A5__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A5__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A5__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C21__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C21__A1__9S19762C20[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C21__A1__9S19762C20[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C21__A1__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A1__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A1__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C21__A1__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A1__9S19762C20[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A1__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A1__9S19762C20[6]),  6,7},
  {&(_tg__ZTV9S19762C22__9S19762C21__9S19762C20[9]),  9,11},
  {&(_tg__ZTV9S19762C13__9S19762C21__9S19762C20[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C21__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C21__9S19762C20[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C21__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C21__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C21__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C21__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C21__9S19762C20[3]),  3,3},
  {&(_tg__ZTV9S19762C19__9S19762C21__9S19762C20[16]),  16,21},
  {&(_tg__ZTV8S19762C4__A1__9S19762C21__9S19762C20[5]),  5,8},
  {&(_tg__ZTV9S19762C15__9S19762C21__9S19762C20[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C21__9S19762C20[10]),  10,14},
  {&(_tg__ZTV9S19762C129S19762C11__A1__9S19762C21__9S19762C20[6]),  6,8},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C21__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__9S19762C20[6]),  6,7},
  {&(_tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__9S19762C20[2]),  2,6},
  {&(_tg__ZTV8S19762C79S19762C16__A3__9S19762C21__9S19762C20[6]),  6,7},
  {&(_tg__ZTV9S19762C22__9S19762C20[8]),  8,10},
  {&(_tg__ZTV9S19762C13__9S19762C22__9S19762C20[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C22__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C22__9S19762C20[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C22__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C22__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C22__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C22__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C22__9S19762C20[3]),  3,3},
  {&(_tg__ZTV9S19762C12__A1__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C12__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C12__A1__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C12__A1__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C12__A1__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C12__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C12__A1__9S19762C20[3]),  3,3},
  {&(_tg__ZTV9S19762C19__9S19762C20[9]),  9,14},
  {&(_tg__ZTV8S19762C79S19762C19__A2__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C19__A2__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C19__A2__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C19__A2__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C19__A2__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A4__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A4__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A4__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A4__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A4__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C19__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C19__9S19762C20[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C19__9S19762C20[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C19__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C19__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C19__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C19__9S19762C20[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C19__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__9S19762C19__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__9S19762C19__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C19__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C19__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C19__9S19762C20[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C19__9S19762C20[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C19__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__9S19762C19__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A2__9S19762C19__9S19762C20[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C19__9S19762C20[6]),  6,8},
  {&(_tg__ZTV9S19762C16__9S19762C19__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A2__9S19762C19__9S19762C20[6]),  6,7},
  {&(_tg__ZTV9S19762C15__9S19762C20[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__9S19762C20[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__9S19762C20[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__9S19762C20[6]),  6,8},
  {&(_tg__ZTV9S19762C11__A1__9S19762C20[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A3__9S19762C20[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A3__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A3__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A3__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A3__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__A2__9S19762C20[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__A2__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__A2__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A2__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A2__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A2__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__A2__9S19762C20[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__A1__9S19762C20[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__A1__9S19762C20[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__A1__9S19762C20[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__A1__9S19762C20[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__A1__9S19762C20[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__A1__9S19762C20[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__A1__9S19762C20[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19762C20[];
extern  VTBL_ENTRY _ZTV9S19762C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C20[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C19D0Ev,_ZThn16900_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C19D1Ev,_ZThn16900_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C19D0Ev,_ZThn16492_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C19D1Ev,_ZThn16492_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19762C22D0Ev,_ZThn568_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19762C22D1Ev,_ZThn568_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C21D0Ev,_ZThn25064_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C21D1Ev,_ZThn25064_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C21D0Ev,_ZThn24656_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C21D1Ev,_ZThn24656_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19762C21D0Ev,_ZThn8164_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19762C21D1Ev,_ZThn8164_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19762C21D0Ev,_ZThn2916_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19762C21D1Ev,_ZThn2916_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19762C16D0Ev,_ZThn16520_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C16D0Ev,_ZThn25064_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19762C16D1Ev,_ZThn16520_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C16D1Ev,_ZThn25064_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19762C16D0Ev,_ZThn16112_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C16D0Ev,_ZThn24656_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19762C16D1Ev,_ZThn16112_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C16D1Ev,_ZThn24656_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19762C6D0Ev,_ZThn24244_N8S19762C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19762C6D1Ev,_ZThn24244_N8S19762C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19762C11D0Ev,_ZThn20848_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19762C11D1Ev,_ZThn20848_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19762C12D0Ev,_ZThn20468_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19762C12D1Ev,_ZThn20468_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19762C20D0Ev,_ZThn52704_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19762C20D1Ev,_ZThn52704_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19762C20D0Ev,_ZThn52296_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19762C20D1Ev,_ZThn52296_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19762C20D0Ev,_ZThn35804_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19762C20D1Ev,_ZThn35804_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19762C20D0Ev,_ZThn30556_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19762C20D1Ev,_ZThn30556_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19762C20D0Ev,_ZThn29988_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19762C20D1Ev,_ZThn29988_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19762C20D0Ev,_ZThn27640_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19762C20D1Ev,_ZThn27640_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19762C20D0Ev,_ZThn30040_N9S19762C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19762C20D0Ev,_ZThn24244_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19762C20D1Ev,_ZThn30040_N9S19762C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19762C20D1Ev,_ZThn24244_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C20 = {  "S19762C20", // class name
  bases_S19762C20, 46,
  &(vtc_S19762C20[0]), // expected_vtbl_contents
  &(vtt_S19762C20[0]), // expected_vtt_contents
  ABISELECT(75168,61784), // object size
  NSPAIRA(_ZTI9S19762C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19762C20),255, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19762C20),182, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19762C1  : virtual S19762C2 , virtual S19762C17 , S19762C20 , S19762C24_nt , S19762C21 {
  int s19762c1f0;
  int s19762c1f1;
  int s19762c1f2;
  int s19762c1f3;
  int s19762c1f4;
  ::S19762C5 s19762c1f5[2];
  int s19762c1f6;
  int s19762c1f7;
  int s19762c1f8;
  __tsi64 s19762c1f9;
  char s19762c1f10:8;
  virtual void  v1(); // _ZN8S19762C12v1Ev
  ~S19762C1(); // tgen
  S19762C1(); // tgen
};
//SIG(1 S19762C1) C1{ VBC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v4 v5 v6 Fi[2] FL[2] FC5{ v3 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 Fi:3} VBC9{ v7 FL FD Fp Fc FC5 Fp[2] FL[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v8 FL[2] Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v12 FC8 Fi Fp Fi}} v9 FC10 FL Fc:7} v10 v11 FC12 Fs Fi:8} BC14{ VBC8 FC12 Fi:6 Fi FL} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v13 Fi FC7 Fi Fs FL:8 Fi} v19 FC15 FC6} Fi} VBC17{ v2 FC18{} FC19{ BC7 VBC15 BC16 v14 v15 FC15 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5} BC20{ BC6 VBC21{ VBC22{ VBC13 VBC5 VBC12 vd Fi FD Fi Fp Fl FU23{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL} VBC19 BC16 v16 Fi FL Fi[4]} VBC24{ v17 v18 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] FL[3] FL Fi Fi Fi Fi Fc:7 Fp Fc FC7 Fi} BC24 BC21 v1 Fi Fi Fi Fi Fi FC5[2] Fi Fi Fi FL Fc:8}


void  S19762C1 ::v1(){vfunc_called(this, "_ZN8S19762C12v1Ev");}
S19762C1 ::~S19762C1(){ note_dtor("S19762C1", this);} // tgen
S19762C1 ::S19762C1(){ note_ctor("S19762C1", this);} // tgen

static void Test_S19762C1()
{
  extern Class_Descriptor cd_S19762C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13831,45488)];
    init_test(&cd_S19762C1, buf);
    S19762C1 *dp, &lv = *(dp=new (buf) S19762C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(221280,181948), "sizeof(S19762C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19762C1)");
    check_base_class_offset(lv, (S19762C2*), ABISELECT(31200,25644), "S19762C1");
    check_base_class_offset(lv, (S19762C17*), ABISELECT(137328,112872), "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C6*)(S19762C20*), ABISELECT(174056,143124), "S19762C1");
    check_base_class_offset(lv, (S19762C5*)(S19762C8*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C11::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C12::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C22::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C22*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C11*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C12*)(S19762C11*), ABISELECT(174056,143124), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*), ABISELECT(174208,143248), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*), ABISELECT(174672,143628), "S19762C1");
    check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C19*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C11*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(174672,143628), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*), ABISELECT(175136,144028), "S19762C1");
    check_base_class_offset(lv, (S19762C8*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175136,144028), "S19762C1");
    check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175136,144028), "S19762C1");
    check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C19*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C11*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C11*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C12*)(S19762C11*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C8*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(175136,144028), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*), ABISELECT(175312,144164), "S19762C1");
    check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C12::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C19*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C15::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C15*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C11*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C12*)(S19762C11*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C9 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C19*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C21*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C16*)(S19762C21*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(175312,144164), "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C6*)(S19762C20*), ABISELECT(174208,143248), "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*)(S19762C6*)(S19762C20*), 0, "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*)(S19762C6*)(S19762C20*), ABISELECT(296,244), "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*)(S19762C6*)(S19762C20*), ABISELECT(760,644), "S19762C1");
    /*is_ambiguous_... S19762C6::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C6*)(S19762C20*), 0, "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C10*), ABISELECT(175616,144408), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C10*), ABISELECT(175912,144652), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C10 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C10*), ABISELECT(176376,145052), "S19762C1");
    check_base_class_offset(lv, (S19762C10*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175616,144408), "S19762C1");
    check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(175616,144408), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C12 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*), ABISELECT(175616,144408), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C11*), ABISELECT(175616,144408), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C10*)(S19762C12*)(S19762C11*), ABISELECT(175616,144408), "S19762C1");
    /*is_ambiguous_... S19762C7::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(4128,3396), "S19762C1");
    check_base_class_offset(lv, (S19762C7*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(4128,3396), "S19762C1");
    check_base_class_offset(lv, (S19762C12*)(S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(4592,3776), "S19762C1");
    check_base_class_offset(lv, (S19762C11*)(S19762C6*)(S19762C20*), ABISELECT(4128,3396), "S19762C1");
    check_base_class_offset(lv, (S19762C6*)(S19762C20*), 0, "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C13 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*), ABISELECT(182672,150204), "S19762C1");
    check_base_class_offset(lv, (S19762C13*)(S19762C22*), ABISELECT(182672,150204), "S19762C1");
    check_base_class_offset(lv, (S19762C12*)(S19762C22*), ABISELECT(183312,150720), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C22*)(S19762C21*), ABISELECT(182592,150152), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C22*)(S19762C21*), ABISELECT(182592,150152), "S19762C1");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C19*), ABISELECT(189712,155968), "S19762C1");
    /*is_ambiguous_... S19762C19::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C19*), ABISELECT(189712,155968), "S19762C1");
    /*is_ambiguous_... S19762C15::S19762C4 */ AMB_check_base_class_offset(lv, (S19762C4*)(S19762C15*), ABISELECT(209736,172460), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C11*), ABISELECT(210208,172868), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C11*), ABISELECT(210208,172868), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C11 */ AMB_check_base_class_offset(lv, (S19762C12*)(S19762C11*), ABISELECT(210672,173248), "S19762C1");
    check_base_class_offset(lv, (S19762C11*)(S19762C15*), ABISELECT(210208,172868), "S19762C1");
    check_base_class_offset(lv, (S19762C15*)(S19762C19*), ABISELECT(209736,172460), "S19762C1");
    check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C19*), ABISELECT(209736,172460), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C21*), ABISELECT(209736,172460), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C15*)(S19762C16*)(S19762C21*), ABISELECT(209736,172460), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C5 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C19*), ABISELECT(190176,156348), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(190320,156472), "S19762C1");
    /*is_ambiguous_... S19762C16::S19762C7 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C19*), ABISELECT(190320,156472), "S19762C1");
    check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(190784,156852), "S19762C1");
    check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C19*), ABISELECT(190784,156852), "S19762C1");
    check_base_class_offset(lv, (S19762C16*)(S19762C19*), ABISELECT(190176,156348), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C19*)(S19762C21*), ABISELECT(189712,155968), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C19*)(S19762C21*), ABISELECT(189712,155968), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C21*), ABISELECT(179744,147804), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(179888,147928), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(179888,147928), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(180352,148308), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(180352,148308), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C16*)(S19762C21*), ABISELECT(179744,147804), "S19762C1");
    check_base_class_offset(lv, (S19762C21*)(S19762C20*), ABISELECT(179744,147804), "S19762C1");
    check_base_class_offset(lv, (S19762C24_nt*)(S19762C20*), ABISELECT(221216,181904), "S19762C1");
    check_base_class_offset(lv, (S19762C20*), 0, "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C24_nt */ AMB_check_base_class_offset(lv, (S19762C24_nt*), ABISELECT(27944,22960), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C16*)(S19762C21*), ABISELECT(28016,23004), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C5*)(S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(28160,23128), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C7*)(S19762C16*)(S19762C21*), ABISELECT(28160,23128), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C9*)(S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(28624,23508), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C13*)(S19762C16*)(S19762C21*), ABISELECT(28624,23508), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C16*)(S19762C21*), ABISELECT(28016,23004), "S19762C1");
    /*is_ambiguous_... S19762C1::S19762C21 */ AMB_check_base_class_offset(lv, (S19762C21*), ABISELECT(28016,23004), "S19762C1");
    check_field_offset(lv, s19762c1f0, ABISELECT(30856,25352), "S19762C1.s19762c1f0");
    check_field_offset(lv, s19762c1f1, ABISELECT(30860,25356), "S19762C1.s19762c1f1");
    check_field_offset(lv, s19762c1f2, ABISELECT(30864,25360), "S19762C1.s19762c1f2");
    check_field_offset(lv, s19762c1f3, ABISELECT(30868,25364), "S19762C1.s19762c1f3");
    check_field_offset(lv, s19762c1f4, ABISELECT(30872,25368), "S19762C1.s19762c1f4");
    check_field_offset(lv, s19762c1f5, ABISELECT(30880,25372), "S19762C1.s19762c1f5");
    check_field_offset(lv, s19762c1f6, ABISELECT(31168,25620), "S19762C1.s19762c1f6");
    check_field_offset(lv, s19762c1f7, ABISELECT(31172,25624), "S19762C1.s19762c1f7");
    check_field_offset(lv, s19762c1f8, ABISELECT(31176,25628), "S19762C1.s19762c1f8");
    check_field_offset(lv, s19762c1f9, ABISELECT(31184,25632), "S19762C1.s19762c1f9");
    set_bf_and_test(lv, s19762c1f10, ABISELECT(31192,25640), 0, 8, 1, "S19762C1");
    set_bf_and_test(lv, s19762c1f10, ABISELECT(31192,25640), 0, 8, hide_sll(1LL<<7), "S19762C1");
    test_class_info(&lv, &cd_S19762C1);
    dp->~S19762C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19762C1(Test_S19762C1, "S19762C1", ABISELECT(221280,181948));

#else // __cplusplus

extern void _ZN8S19762C1C1Ev();
extern void _ZN8S19762C1D1Ev();
Name_Map name_map_S19762C1[] = {
  NSPAIR(_ZN8S19762C1C1Ev),
  NSPAIR(_ZN8S19762C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C2;
extern VTBL_ENTRY _ZTI8S19762C2[];
extern Class_Descriptor cd_S19762C17;
extern VTBL_ENTRY _ZTI9S19762C17[];
extern  VTBL_ENTRY _ZTV9S19762C17[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C8;
extern VTBL_ENTRY _ZTI8S19762C8[];
extern  VTBL_ENTRY _ZTV8S19762C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C8[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C10;
extern VTBL_ENTRY _ZTI9S19762C10[];
extern  VTBL_ENTRY _ZTV9S19762C10[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C6;
extern VTBL_ENTRY _ZTI8S19762C6[];
extern  VTBL_ENTRY _ZTV8S19762C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C6[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C22;
extern VTBL_ENTRY _ZTI9S19762C22[];
extern  VTBL_ENTRY _ZTV9S19762C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C22[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C4;
extern VTBL_ENTRY _ZTI8S19762C4[];
extern  VTBL_ENTRY _ZTV8S19762C4[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C12;
extern VTBL_ENTRY _ZTI9S19762C12[];
extern  VTBL_ENTRY _ZTV9S19762C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C12[];
extern Class_Descriptor cd_S19762C11;
extern VTBL_ENTRY _ZTI9S19762C11[];
extern  VTBL_ENTRY _ZTV9S19762C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C11[];
extern Class_Descriptor cd_S19762C15;
extern VTBL_ENTRY _ZTI9S19762C15[];
extern  VTBL_ENTRY _ZTV9S19762C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C15[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C19;
extern VTBL_ENTRY _ZTI9S19762C19[];
extern  VTBL_ENTRY _ZTV9S19762C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C19[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C21;
extern VTBL_ENTRY _ZTI9S19762C21[];
extern  VTBL_ENTRY _ZTV9S19762C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C21[];
extern Class_Descriptor cd_S19762C24_nt;
extern VTBL_ENTRY _ZTI12S19762C24_nt[];
extern  VTBL_ENTRY _ZTV12S19762C24_nt[];
extern Class_Descriptor cd_S19762C20;
extern VTBL_ENTRY _ZTI9S19762C20[];
extern  VTBL_ENTRY _ZTV9S19762C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C20[];
extern Class_Descriptor cd_S19762C24_nt;
extern VTBL_ENTRY _ZTI12S19762C24_nt[];
extern  VTBL_ENTRY _ZTV12S19762C24_nt[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C5;
extern VTBL_ENTRY _ZTI8S19762C5[];
extern  VTBL_ENTRY _ZTV8S19762C5[];
extern Class_Descriptor cd_S19762C7;
extern VTBL_ENTRY _ZTI8S19762C7[];
extern  VTBL_ENTRY _ZTV8S19762C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C7[];
extern Class_Descriptor cd_S19762C9;
extern VTBL_ENTRY _ZTI8S19762C9[];
extern  VTBL_ENTRY _ZTV8S19762C9[];
extern Class_Descriptor cd_S19762C13;
extern VTBL_ENTRY _ZTI9S19762C13[];
extern  VTBL_ENTRY _ZTV9S19762C13[];
extern Class_Descriptor cd_S19762C16;
extern VTBL_ENTRY _ZTI9S19762C16[];
extern  VTBL_ENTRY _ZTV9S19762C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C16[];
extern Class_Descriptor cd_S19762C21;
extern VTBL_ENTRY _ZTI9S19762C21[];
extern  VTBL_ENTRY _ZTV9S19762C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19762C21[];
static Base_Class bases_S19762C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C2,    ABISELECT(31200,25644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19762C17,    ABISELECT(137328,112872), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19762C5,    ABISELECT(174056,143124), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(174208,143248), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19762C4,    ABISELECT(174672,143628), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19762C8,    ABISELECT(175136,144028), //bcp->offset
    111, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19762C9,    ABISELECT(175312,144164), //bcp->offset
    114, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19762C7,    ABISELECT(174208,143248), //bcp->offset
    95, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19762C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(296,244), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(760,644), //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
    41, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19762C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(175616,144408), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(175912,144652), //bcp->offset
    131, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(176376,145052), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19762C10,    ABISELECT(175616,144408), //bcp->offset
    118, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(4592,3776), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(4128,3396), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19762C6,    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
    47, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(182672,150204), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(182672,150204), //bcp->offset
    187, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19762C12,    ABISELECT(183312,150720), //bcp->offset
    196, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19762C22,    ABISELECT(182592,150152), //bcp->offset
    176, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(189712,155968), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(189712,155968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19762C4,    ABISELECT(209736,172460), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(210208,172868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(210208,172868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C12,    ABISELECT(210672,173248), //bcp->offset
    283, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19762C11,    ABISELECT(210208,172868), //bcp->offset
    269, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19762C15,    ABISELECT(209736,172460), //bcp->offset
    252, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(190176,156348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(190320,156472), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(190320,156472), //bcp->offset
    239, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(190784,156852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(190784,156852), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(190176,156348), //bcp->offset
    226, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19762C19,    ABISELECT(189712,155968), //bcp->offset
    205, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19762C5,    ABISELECT(179744,147804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(179888,147928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(179888,147928), //bcp->offset
    163, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(180352,148308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(180352,148308), //bcp->offset
    170, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(179744,147804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19762C21,    ABISELECT(179744,147804), //bcp->offset
    139, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19762C24_nt,    ABISELECT(221216,181904), //bcp->offset
    291, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19762C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C24_nt,    ABISELECT(27944,22960), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19762C5,    ABISELECT(28016,23004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19762C5,    ABISELECT(28160,23128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19762C7,    ABISELECT(28160,23128), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19762C9,    ABISELECT(28624,23508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19762C13,    ABISELECT(28624,23508), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19762C16,    ABISELECT(28016,23004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19762C21,    ABISELECT(28016,23004), //bcp->offset
    56, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19762C1[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C1D1Ev();
extern void _ZN8S19762C1D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
extern void _ZN8S19762C12v1Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C1D1Ev,_ZThn3396_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C1D0Ev,_ZThn3396_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C1D1Ev,_ZThn3776_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C1D0Ev,_ZThn3776_N8S19762C1D0Ev)();
extern void _ZN12S19762C24_nt3v17Ev();
extern void _ZN12S19762C24_nt3v18Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZThn28016_N8S19762C1D1Ev,_ZThn23004_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn28016_N8S19762C1D0Ev,_ZThn23004_N8S19762C1D0Ev)();
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZThn28624_N8S19762C1D1Ev,_ZThn23508_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn28624_N8S19762C1D0Ev,_ZThn23508_N8S19762C1D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN9S19762C172v2Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C1D1Ev,_ZTv0_n16_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19762C1D1Ev,_ZThn144408_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C1D0Ev,_ZTv0_n16_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19762C1D0Ev,_ZThn144408_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N8S19762C1D1Ev,_ZTv0_n60_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn179744_N8S19762C1D1Ev,_ZThn147804_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19762C1D0Ev,_ZTv0_n60_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn179744_N8S19762C1D0Ev,_ZThn147804_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N8S19762C1D1Ev,_ZTvn504_n60_N8S19762C1D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N8S19762C1D0Ev,_ZTvn504_n60_N8S19762C1D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N8S19762C1D1Ev,_ZTv0_n36_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn182592_N8S19762C1D1Ev,_ZThn150152_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19762C1D0Ev,_ZTv0_n36_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn182592_N8S19762C1D0Ev,_ZThn150152_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C1D1Ev,_ZTv0_n16_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn182672_N8S19762C1D1Ev,_ZThn150204_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C1D0Ev,_ZTv0_n16_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn182672_N8S19762C1D0Ev,_ZThn150204_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S19762C1D1Ev,_ZTv0_n28_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn183312_N8S19762C1D1Ev,_ZThn150720_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19762C1D0Ev,_ZTv0_n28_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn183312_N8S19762C1D0Ev,_ZThn150720_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N8S19762C1D1Ev,_ZTv0_n52_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn189712_N8S19762C1D1Ev,_ZThn155968_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19762C1D0Ev,_ZTv0_n52_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn189712_N8S19762C1D0Ev,_ZThn155968_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N8S19762C1D1Ev,_ZTvn380_n52_N8S19762C1D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N8S19762C1D0Ev,_ZTvn380_n52_N8S19762C1D0Ev)();
extern void _ZN9S19762C163v13Ev();
extern void _ZN8S19762C52v3Ev();
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N8S19762C1D1Ev,_ZTvn884_n52_N8S19762C1D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N8S19762C1D0Ev,_ZTvn884_n52_N8S19762C1D0Ev)();
extern void _ZN9S19762C133v12Ev();
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19762C1D1Ev,_ZTv0_n48_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn209736_N8S19762C1D1Ev,_ZThn172460_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19762C1D0Ev,_ZTv0_n48_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn209736_N8S19762C1D0Ev,_ZThn172460_N8S19762C1D0Ev)() __attribute__((weak));
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19762C1D1Ev,_ZTv0_n40_N8S19762C1D1Ev)();
extern void ABISELECT(_ZThn210208_N8S19762C1D1Ev,_ZThn172868_N8S19762C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19762C1D0Ev,_ZTv0_n40_N8S19762C1D0Ev)();
extern void ABISELECT(_ZThn210208_N8S19762C1D0Ev,_ZThn172868_N8S19762C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19762C1D1Ev,_ZTvn380_n40_N8S19762C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19762C1D0Ev,_ZTvn380_n40_N8S19762C1D0Ev)();
extern void _ZN12S19762C24_nt3v17Ev();
extern void _ZN12S19762C24_nt3v18Ev();
static  VTBL_ENTRY vtc_S19762C1[] = {
  ABISELECT(137328,112872),
  ABISELECT(31200,25644),
  ABISELECT(221216,181904),
  ABISELECT(210208,172868),
  ABISELECT(209736,172460),
  ABISELECT(189712,155968),
  ABISELECT(183312,150720),
  ABISELECT(182672,150204),
  ABISELECT(182592,150152),
  ABISELECT(179744,147804),
  ABISELECT(175616,144408),
  ABISELECT(175312,144164),
  ABISELECT(175136,144028),
  ABISELECT(174672,143628),
  ABISELECT(174208,143248),
  ABISELECT(174056,143124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19762C12v1Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(171488,141012),
  ABISELECT(171184,140768),
  ABISELECT(169928,139728),
  ABISELECT(171008,140632),
  ABISELECT(170544,140232),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C1D1Ev,_ZThn3396_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C1D0Ev,_ZThn3396_N8S19762C1D0Ev),
  ABISELECT(170544,140252),
  ABISELECT(169464,139348),
  ABISELECT(171024,140632),
  ABISELECT(170720,140388),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C1D1Ev,_ZThn3776_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C1D0Ev,_ZThn3776_N8S19762C1D0Ev),
  ABISELECT(-27944,-22960),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v18Ev,
  ABISELECT(161696,132964),
  ABISELECT(155296,127716),
  ABISELECT(154656,127200),
  ABISELECT(154576,127148),
  ABISELECT(146656,120624),
  ABISELECT(147120,121024),
  ABISELECT(146040,120120),
  ABISELECT(147600,121404),
  ABISELECT(182192,149864),
  ABISELECT(181720,149456),
  ABISELECT(147296,121160),
  ABISELECT(-28016,-23004),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19762C1D1Ev,_ZThn23004_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19762C1D0Ev,_ZThn23004_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
  ABISELECT(147152,121036),
  ABISELECT(145896,119996),
  ABISELECT(146976,120900),
  ABISELECT(146512,120500),
  ABISELECT(-28160,-23128),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-28624,-23508),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19762C1D1Ev,_ZThn23508_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19762C1D0Ev,_ZThn23508_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  0,
  ABISELECT(-137328,-112872),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN9S19762C172v2Ev,
  0,
  ABISELECT(-174056,-143124),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-174208,-143248),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-174672,-143628),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-175136,-144028),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  0,
  ABISELECT(-175312,-144164),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-175616,-144408),
  0,
  ABISELECT(-175616,-144408),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C1D1Ev,_ZTv0_n16_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C1D0Ev,_ZTv0_n16_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  ABISELECT(-175912,-144652),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  ABISELECT(-176376,-145052),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  0,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-179744,-147804),
  0,
  ABISELECT(9968,8164),
  ABISELECT(3568,2916),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  ABISELECT(-179744,-147804),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19762C1D1Ev,_ZTv0_n60_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19762C1D0Ev,_ZTv0_n60_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-179888,-147928),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-180352,-148308),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19762C1D1Ev,_ZTvn504_n60_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19762C1D0Ev,_ZTvn504_n60_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-182592,-150152),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-182592,-150152),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19762C1D1Ev,_ZTv0_n36_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19762C1D0Ev,_ZTv0_n36_N8S19762C1D0Ev),
  0,
  ABISELECT(-182672,-150204),
  0,
  ABISELECT(-182672,-150204),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C1D1Ev,_ZTv0_n16_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C1D0Ev,_ZTv0_n16_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-183312,-150720),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-183312,-150720),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19762C1D1Ev,_ZTv0_n28_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19762C1D0Ev,_ZTv0_n28_N8S19762C1D0Ev),
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-189712,-155968),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-189712,-155968),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19762C1D1Ev,_ZTv0_n52_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19762C1D0Ev,_ZTv0_n52_N8S19762C1D0Ev),
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-190176,-156348),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19762C1D1Ev,_ZTvn380_n52_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19762C1D0Ev,_ZTvn380_n52_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-190320,-156472),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  ABISELECT(-190784,-156852),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19762C1D1Ev,_ZTvn884_n52_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19762C1D0Ev,_ZTvn884_n52_N8S19762C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
  ABISELECT(-209736,-172460),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-209736,-172460),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19762C1D1Ev,_ZTv0_n48_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19762C1D0Ev,_ZTv0_n48_N8S19762C1D0Ev),
  ABISELECT(-210208,-172868),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-210208,-172868),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19762C1D1Ev,_ZTv0_n40_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19762C1D0Ev,_ZTv0_n40_N8S19762C1D0Ev),
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-210672,-173248),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19762C1D1Ev,_ZTvn380_n40_N8S19762C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19762C1D0Ev,_ZTvn380_n40_N8S19762C1D0Ev),
  0,
  0,
  ABISELECT(-221216,-181904),
  (VTBL_ENTRY)&(_ZTI8S19762C1[0]),
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV8S19762C1[];
extern void _ZN8S19762C92v7Ev();
extern void _ZN9S19762C20D1Ev();
extern void _ZN9S19762C20D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C20__8S19762C1[] = {
  ABISELECT(221216,181904),
  ABISELECT(210208,172868),
  ABISELECT(209736,172460),
  ABISELECT(189712,155968),
  ABISELECT(183312,150720),
  ABISELECT(182672,150204),
  ABISELECT(182592,150152),
  ABISELECT(179744,147804),
  ABISELECT(175616,144408),
  ABISELECT(175312,144164),
  ABISELECT(175136,144028),
  ABISELECT(174672,143628),
  ABISELECT(174208,143248),
  ABISELECT(174056,143124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19762C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void _ZN8S19762C6D1Ev();
extern void _ZN8S19762C6D0Ev();
extern void _ZN9S19762C102v8Ev();
extern void _ZN8S19762C63v10Ev();
extern void _ZN8S19762C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(175616,144408),
  ABISELECT(175312,144164),
  ABISELECT(175136,144028),
  ABISELECT(174672,143628),
  ABISELECT(174208,143248),
  ABISELECT(174056,143124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19762C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19762C63v11Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(171488,141012),
  ABISELECT(171184,140768),
  ABISELECT(169928,139728),
  ABISELECT(171008,140632),
  ABISELECT(170544,140232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[] = {
  ABISELECT(171184,140768),
  ABISELECT(169928,139728),
  ABISELECT(171008,140632),
  ABISELECT(170544,140232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-140232),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-171008,-140632),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[] = {
  0,
  ABISELECT(-169928,-139728),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[] = {
  0,
  ABISELECT(-171184,-140768),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(170544,140252),
  ABISELECT(169464,139348),
  ABISELECT(171024,140632),
  ABISELECT(170720,140388),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-170720,-140388),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZThn171024_N9S19762C12D1Ev,_ZThn140632_N9S19762C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void ABISELECT(_ZThn171024_N9S19762C12D0Ev,_ZThn140632_N9S19762C12D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-171024,-140632),
  0,
  ABISELECT(-171024,-140632),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-171320,-140876),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-171784,-141276),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-169464,-139348),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-170544,-140252),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn171488_N9S19762C11D1Ev,_ZThn141012_N9S19762C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void ABISELECT(_ZThn171488_N9S19762C11D0Ev,_ZThn141012_N9S19762C11D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-171488,-141012),
  0,
  ABISELECT(-171488,-141012),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-171784,-141256),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-172248,-141656),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-169928,-139728),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-171008,-140632),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-140232),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-171184,-140768),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C118S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(170544,140252),
  ABISELECT(169464,139348),
  ABISELECT(171024,140632),
  ABISELECT(170720,140388),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-174056,-143124),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-174208,-143248),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C69S19762C20__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-143628),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-175136,-144028),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C69S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-175312,-144164),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C11__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(171488,141012),
  ABISELECT(171184,140768),
  ABISELECT(169928,139728),
  ABISELECT(171008,140632),
  ABISELECT(170544,140232),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D1Ev,_ZThn3396_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19762C6D0Ev,_ZThn3396_N8S19762C6D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19762C6D1Ev,_ZThn144408_N8S19762C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19762C6D0Ev,_ZThn144408_N8S19762C6D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__A1__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-175616,-144408),
  0,
  ABISELECT(-175616,-144408),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-175912,-144652),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A3__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(-176376,-145052),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__8S19762C69S19762C20__8S19762C1[] = {
  ABISELECT(170544,140252),
  ABISELECT(169464,139348),
  ABISELECT(171024,140632),
  ABISELECT(170720,140388),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S19762C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D1Ev,_ZThn3776_N8S19762C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19762C6D0Ev,_ZThn3776_N8S19762C6D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-174056,-143124),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__9S19762C20__8S19762C1[] = {
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-174208,-143248),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__9S19762C20__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-143628),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C20__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-175136,-144028),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-175312,-144164),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19762C20D1Ev,_ZThn3396_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19762C20D0Ev,_ZThn3396_N9S19762C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C118S19762C6__9S19762C20__8S19762C1[] = {
  ABISELECT(171488,141012),
  ABISELECT(171184,140768),
  ABISELECT(169928,139728),
  ABISELECT(171008,140632),
  ABISELECT(170544,140232),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19762C20D1Ev,_ZThn3396_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19762C20D0Ev,_ZThn3396_N9S19762C20D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn175616_N9S19762C20D1Ev,_ZThn144408_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn175616_N9S19762C20D0Ev,_ZThn144408_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__A1__9S19762C20__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-175616,-144408),
  0,
  ABISELECT(-175616,-144408),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__9S19762C20__8S19762C1[] = {
  ABISELECT(-175912,-144652),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A3__9S19762C20__8S19762C1[] = {
  ABISELECT(-176376,-145052),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S19762C20D1Ev,_ZThn3776_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19762C20D0Ev,_ZThn3776_N9S19762C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C118S19762C6__9S19762C20__8S19762C1[] = {
  ABISELECT(170544,140252),
  ABISELECT(169464,139348),
  ABISELECT(171024,140632),
  ABISELECT(170720,140388),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19762C20D1Ev,_ZThn3776_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19762C20D0Ev,_ZThn3776_N9S19762C20D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn179744_N9S19762C20D1Ev,_ZThn147804_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn179744_N9S19762C20D0Ev,_ZThn147804_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C21__9S19762C20__8S19762C1[] = {
  0,
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-179744,-147804),
  0,
  ABISELECT(9968,8164),
  ABISELECT(3568,2916),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  ABISELECT(-179744,-147804),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn182592_N9S19762C20D1Ev,_ZThn150152_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn182592_N9S19762C20D0Ev,_ZThn150152_N9S19762C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C20__8S19762C1[] = {
  ABISELECT(-182592,-150152),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-182592,-150152),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn182672_N9S19762C20D1Ev,_ZThn150204_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn182672_N9S19762C20D0Ev,_ZThn150204_N9S19762C20D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C20__8S19762C1[] = {
  0,
  ABISELECT(-182672,-150204),
  0,
  ABISELECT(-182672,-150204),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn183312_N9S19762C20D1Ev,_ZThn150720_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn183312_N9S19762C20D0Ev,_ZThn150720_N9S19762C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__A1__9S19762C20__8S19762C1[] = {
  ABISELECT(-183312,-150720),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-183312,-150720),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn189712_N9S19762C20D1Ev,_ZThn155968_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn189712_N9S19762C20D0Ev,_ZThn155968_N9S19762C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C20__8S19762C1[] = {
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-189712,-155968),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-189712,-155968),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn209736_N9S19762C20D1Ev,_ZThn172460_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn209736_N9S19762C20D0Ev,_ZThn172460_N9S19762C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C20__8S19762C1[] = {
  ABISELECT(-209736,-172460),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-209736,-172460),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev)();
extern void ABISELECT(_ZThn210208_N9S19762C20D1Ev,_ZThn172868_N9S19762C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev)();
extern void ABISELECT(_ZThn210208_N9S19762C20D0Ev,_ZThn172868_N9S19762C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__A1__9S19762C20__8S19762C1[] = {
  ABISELECT(-210208,-172868),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-210208,-172868),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C20D1Ev,_ZTvn380_n40_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C20D0Ev,_ZTvn380_n40_N9S19762C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A2__9S19762C20__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-210672,-173248),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C20D1Ev,_ZTvn380_n40_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C20D0Ev,_ZTvn380_n40_N9S19762C20D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C20D1Ev,_ZTvn380_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C20D0Ev,_ZTvn380_n52_N9S19762C20D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C20__8S19762C1[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-190176,-156348),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C20D1Ev,_ZTvn380_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C20D0Ev,_ZTvn380_n52_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A4__9S19762C20__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-190320,-156472),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C20D1Ev,_ZTvn884_n52_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C20D0Ev,_ZTvn884_n52_N9S19762C20D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C20__8S19762C1[] = {
  ABISELECT(-190784,-156852),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C20D1Ev,_ZTvn884_n52_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C20D0Ev,_ZTvn884_n52_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C21__A5__9S19762C20__8S19762C1[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-179888,-147928),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19762C20D1Ev,_ZTvn504_n60_N9S19762C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19762C20D0Ev,_ZTvn504_n60_N9S19762C20D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C139S19762C169S19762C21__A2__9S19762C20__8S19762C1[] = {
  ABISELECT(-180352,-148308),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19762C20D1Ev,_ZTvn504_n60_N9S19762C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19762C20D0Ev,_ZTvn504_n60_N9S19762C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN12S19762C24_nt3v17Ev();
extern void _ZN12S19762C24_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV12S19762C24_nt__9S19762C20__8S19762C1[] = {
  0,
  0,
  ABISELECT(-221216,-181904),
  (VTBL_ENTRY)&(_ZTI9S19762C20[0]),
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S19762C24_nt3v18Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C21D1Ev();
extern void _ZN9S19762C21D0Ev();
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C21__A__8S19762C1[] = {
  ABISELECT(161696,132964),
  ABISELECT(155296,127716),
  ABISELECT(154656,127200),
  ABISELECT(154576,127148),
  ABISELECT(146656,120624),
  ABISELECT(147120,121024),
  ABISELECT(146040,120120),
  ABISELECT(147600,121404),
  ABISELECT(182192,149864),
  ABISELECT(181720,149456),
  ABISELECT(147296,121160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(146656,120624),
  ABISELECT(147120,121024),
  ABISELECT(146040,120120),
  ABISELECT(147600,121404),
  ABISELECT(182192,149864),
  ABISELECT(181720,149456),
  ABISELECT(147296,121160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C21__A6__8S19762C1[] = {
  ABISELECT(147152,121036),
  ABISELECT(145896,119996),
  ABISELECT(146976,120900),
  ABISELECT(146512,120500),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A6__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-146512,-120500),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A6__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-146976,-120900),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A6__8S19762C1[] = {
  0,
  ABISELECT(-145896,-119996),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A6__8S19762C1[] = {
  0,
  ABISELECT(-147152,-121036),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C21__A2__8S19762C1[] = {
  0,
  ABISELECT(-147296,-121160),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19762C16D1Ev,_ZThn149456_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19762C16D0Ev,_ZThn149456_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-181720,-149456),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-181720,-149456),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19762C16D1Ev,_ZThn149864_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19762C16D0Ev,_ZThn149864_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-182192,-149864),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-182192,-149864),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19762C16D1Ev,_ZThn121404_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19762C16D0Ev,_ZThn121404_N9S19762C16D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-147600,-121404),
  0,
  ABISELECT(-147600,-121404),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-147896,-121648),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-148360,-122048),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A2__8S19762C1[] = {
  0,
  ABISELECT(-146040,-120120),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-147120,-121024),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A2__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-120624),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-182656,-150244),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A2__8S19762C1[] = {
  ABISELECT(147152,121036),
  ABISELECT(145896,119996),
  ABISELECT(146976,120900),
  ABISELECT(146512,120500),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn154576_N9S19762C21D1Ev,_ZThn127148_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn154576_N9S19762C21D0Ev,_ZThn127148_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-154576,-127148),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-154576,-127148),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn154656_N9S19762C21D1Ev,_ZThn127200_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn154656_N9S19762C21D0Ev,_ZThn127200_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C21__A__8S19762C1[] = {
  0,
  ABISELECT(-154656,-127200),
  0,
  ABISELECT(-154656,-127200),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C21__A__8S19762C1[] = {
  0,
  ABISELECT(-146040,-120120),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn155296_N9S19762C21D1Ev,_ZThn127716_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn155296_N9S19762C21D0Ev,_ZThn127716_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-155296,-127716),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-155296,-127716),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C21__A__8S19762C1[] = {
  0,
  ABISELECT(-147296,-121160),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19762C21D1Ev,_ZThn121404_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19762C21D0Ev,_ZThn121404_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C21__A__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-147600,-121404),
  0,
  ABISELECT(-147600,-121404),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-147896,-121648),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-148360,-122048),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-147120,-121024),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn161696_N9S19762C21D1Ev,_ZThn132964_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn161696_N9S19762C21D0Ev,_ZThn132964_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C21__A__8S19762C1[] = {
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-161696,-132964),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-161696,-132964),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C21__A__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-120624),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19762C21D1Ev,_ZThn149456_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19762C21D0Ev,_ZThn149456_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-181720,-149456),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-181720,-149456),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19762C21D1Ev,_ZThn149864_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19762C21D0Ev,_ZThn149864_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-182192,-149864),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-182192,-149864),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A1__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-182656,-150244),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-162160,-133344),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-162304,-133468),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__A__8S19762C1[] = {
  ABISELECT(-162768,-133848),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A3__9S19762C21__A__8S19762C1[] = {
  ABISELECT(147152,121036),
  ABISELECT(145896,119996),
  ABISELECT(146976,120900),
  ABISELECT(146512,120500),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__8S19762C1[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C7__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C7__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C7__8S19762C1[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C7__8S19762C1[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C1[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__8S19762C8__8S19762C1[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI8S19762C8[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C21D1Ev();
extern void _ZN9S19762C21D0Ev();
extern void _ZN9S19762C163v13Ev();
extern void _ZN9S19762C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C21__8S19762C1[] = {
  ABISELECT(9968,8164),
  ABISELECT(3568,2916),
  ABISELECT(2928,2400),
  ABISELECT(2848,2348),
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19762C213v16Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-5072,-4176),
  ABISELECT(-4608,-3776),
  ABISELECT(-5688,-4680),
  ABISELECT(-4128,-3396),
  ABISELECT(30464,25064),
  ABISELECT(29992,24656),
  ABISELECT(-4432,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C21__A5__8S19762C1[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A5__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(5216,4300),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A5__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4752,3900),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A5__8S19762C1[] = {
  0,
  ABISELECT(5832,4804),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A5__8S19762C1[] = {
  0,
  ABISELECT(4576,3764),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C21__A1__8S19762C1[] = {
  0,
  ABISELECT(4432,3640),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C16D1Ev,_ZThn24656_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C16D0Ev,_ZThn24656_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-29992,-24656),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-29992,-24656),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C16D1Ev,_ZThn25064_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C16D0Ev,_ZThn25064_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-30464,-25064),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-30464,-25064),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4128,3396),
  0,
  ABISELECT(4128,3396),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(3832,3152),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(3368,2752),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A1__8S19762C1[] = {
  0,
  ABISELECT(5688,4680),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4608,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A1__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,4176),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-30928,-25444),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A1__8S19762C1[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C22__9S19762C21__8S19762C1[] = {
  ABISELECT(-2848,-2348),
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  ABISELECT(-2848,-2348),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C21__8S19762C1[] = {
  0,
  ABISELECT(-2928,-2400),
  0,
  ABISELECT(-2928,-2400),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C21__8S19762C1[] = {
  0,
  ABISELECT(5688,4680),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19762C21D1Ev,_ZThn2916_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19762C21D0Ev,_ZThn2916_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C21__8S19762C1[] = {
  ABISELECT(-3568,-2916),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-3568,-2916),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C21__8S19762C1[] = {
  0,
  ABISELECT(4432,3640),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C21__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4128,3396),
  0,
  ABISELECT(4128,3396),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C21__8S19762C1[] = {
  ABISELECT(3832,3152),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C21__8S19762C1[] = {
  ABISELECT(3368,2752),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C21__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(4608,3776),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19762C21D1Ev,_ZThn8164_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19762C21D0Ev,_ZThn8164_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C19__9S19762C21__8S19762C1[] = {
  ABISELECT(1072,884),
  ABISELECT(1072,884),
  ABISELECT(464,380),
  ABISELECT(-9968,-8164),
  0,
  0,
  0,
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  ABISELECT(-9968,-8164),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C21__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,4176),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C21D1Ev,_ZThn24656_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19762C21D0Ev,_ZThn24656_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C21__8S19762C1[] = {
  ABISELECT(-29992,-24656),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-29992,-24656),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C21D1Ev,_ZThn25064_N9S19762C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19762C21D0Ev,_ZThn25064_N9S19762C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C21__8S19762C1[] = {
  ABISELECT(-30464,-25064),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-30464,-25064),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A1__9S19762C21__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-30928,-25444),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D1Ev,_ZTvn380_n40_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C21D0Ev,_ZTvn380_n40_N9S19762C21D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__9S19762C21__8S19762C1[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-10432,-8544),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D1Ev,_ZTvn380_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19762C21D0Ev,_ZTvn380_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-10576,-8668),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev)();
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__8S19762C1[] = {
  ABISELECT(-11040,-9048),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D1Ev,_ZTvn884_n52_N9S19762C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19762C21D0Ev,_ZTvn884_n52_N9S19762C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A3__9S19762C21__8S19762C1[] = {
  ABISELECT(-4576,-3764),
  ABISELECT(-5832,-4804),
  ABISELECT(-4752,-3900),
  ABISELECT(-5216,-4300),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C21[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN9S19762C22D1Ev();
extern void _ZN9S19762C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C22__8S19762C1[] = {
  ABISELECT(-7456,-6124),
  ABISELECT(-6976,-5744),
  ABISELECT(-7280,-5988),
  ABISELECT(720,568),
  ABISELECT(-8536,-7028),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN9S19762C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C22D0Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev)() __attribute__((weak));
extern void _ZN9S19762C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C13__9S19762C22__8S19762C1[] = {
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C133v12Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__9S19762C22__8S19762C1[] = {
  0,
  ABISELECT(8536,7028),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19762C22D1Ev,_ZThn568_N9S19762C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19762C22D0Ev,_ZThn568_N9S19762C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C22__8S19762C1[] = {
  ABISELECT(-720,-568),
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  ABISELECT(-720,-568),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev),
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C22__8S19762C1[] = {
  0,
  ABISELECT(7280,5988),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C22__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(6976,5744),
  0,
  ABISELECT(6976,5744),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C22__8S19762C1[] = {
  ABISELECT(6680,5500),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C22__8S19762C1[] = {
  ABISELECT(6216,5100),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C22__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(7456,6124),
  (VTBL_ENTRY)&(_ZTI9S19762C22[0]),
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C12__A1__8S19762C1[] = {
  ABISELECT(-8176,-6692),
  ABISELECT(-9256,-7596),
  ABISELECT(-7696,-6312),
  ABISELECT(-8000,-6556),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C12__A1__8S19762C1[] = {
  0,
  ABISELECT(8000,6556),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C12__A1__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(7696,6312),
  0,
  ABISELECT(7696,6312),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C12__A1__8S19762C1[] = {
  ABISELECT(7400,6068),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C12__A1__8S19762C1[] = {
  ABISELECT(6936,5668),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C12__A1__8S19762C1[] = {
  0,
  ABISELECT(9256,7596),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C12__A1__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(8176,6692),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C193v14Ev();
extern void _ZN9S19762C193v15Ev();
extern void _ZN9S19762C19D1Ev();
extern void _ZN9S19762C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C19__8S19762C1[] = {
  ABISELECT(-14096,-11560),
  ABISELECT(20496,16900),
  ABISELECT(20024,16492),
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19762C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C19D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C19__A2__8S19762C1[] = {
  ABISELECT(-14400,-11804),
  ABISELECT(-15656,-12844),
  ABISELECT(-14576,-11940),
  ABISELECT(-15040,-12340),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C19__A2__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,12340),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C19__A2__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(14576,11940),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C19__A2__8S19762C1[] = {
  0,
  ABISELECT(15656,12844),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C19__A2__8S19762C1[] = {
  0,
  ABISELECT(14400,11804),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C16D1Ev();
extern void _ZN9S19762C16D0Ev();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C169S19762C19__A4__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A4__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(15648,12844),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A4__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(15184,12444),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A4__8S19762C1[] = {
  0,
  ABISELECT(16264,13348),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A4__8S19762C1[] = {
  0,
  ABISELECT(15008,12308),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C169S19762C19__8S19762C1[] = {
  0,
  ABISELECT(14864,12184),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19762C16D1Ev,_ZThn16112_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19762C16D0Ev,_ZThn16112_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-19560,-16112),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-19560,-16112),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19762C16D1Ev,_ZThn16520_N9S19762C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19762C16D0Ev,_ZThn16520_N9S19762C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-20032,-16520),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-20032,-16520),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(14560,11940),
  0,
  ABISELECT(14560,11940),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(14264,11696),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(13800,11296),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A2__9S19762C169S19762C19__8S19762C1[] = {
  0,
  ABISELECT(16120,13224),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(15040,12320),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C169S19762C19__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(15504,12720),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-20496,-16900),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D1Ev,_ZTvn380_n40_N9S19762C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C16D0Ev,_ZTvn380_n40_N9S19762C16D0Ev),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C7__A1__9S19762C169S19762C19__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S19762C16[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__9S19762C19__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,12340),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C19__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(14576,11940),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C19__8S19762C1[] = {
  0,
  ABISELECT(15656,12844),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C19__8S19762C1[] = {
  0,
  ABISELECT(14400,11804),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C19D1Ev,_ZThn16492_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19762C19D0Ev,_ZThn16492_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C15__9S19762C19__8S19762C1[] = {
  ABISELECT(-20024,-16492),
  0,
  0,
  0,
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C19D1Ev,_ZThn16900_N9S19762C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19762C19D0Ev,_ZThn16900_N9S19762C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C19__8S19762C1[] = {
  ABISELECT(-20496,-16900),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-20496,-16900),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C19__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(14096,11560),
  0,
  ABISELECT(14096,11560),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D1Ev,_ZTv0_n16_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C19D0Ev,_ZTv0_n16_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A2__9S19762C19__8S19762C1[] = {
  ABISELECT(13800,11316),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__A2__9S19762C19__8S19762C1[] = {
  ABISELECT(13336,10916),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C19__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-20960,-17280),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D1Ev,_ZTvn380_n40_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C19D0Ev,_ZTvn380_n40_N9S19762C19D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev)();
extern void _ZN9S19762C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C16__9S19762C19__8S19762C1[] = {
  ABISELECT(-15504,-12720),
  ABISELECT(-15040,-12320),
  ABISELECT(-16120,-13224),
  ABISELECT(-14560,-11940),
  ABISELECT(20032,16520),
  ABISELECT(19560,16112),
  ABISELECT(-14864,-12184),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D1Ev,_ZThn380_N9S19762C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C19D0Ev,_ZThn380_N9S19762C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C163v13Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C16__A2__9S19762C19__8S19762C1[] = {
  ABISELECT(-15008,-12308),
  ABISELECT(-16264,-13348),
  ABISELECT(-15184,-12444),
  ABISELECT(-15648,-12844),
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S19762C19[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
extern void _ZN9S19762C15D1Ev();
extern void _ZN9S19762C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C15__8S19762C1[] = {
  ABISELECT(-35064,-28832),
  ABISELECT(-34600,-28432),
  ABISELECT(-35680,-29336),
  ABISELECT(-34120,-28052),
  ABISELECT(472,408),
  ABISELECT(-34424,-28296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C15D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C15__8S19762C1[] = {
  0,
  ABISELECT(34424,28296),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19762C11__9S19762C15__8S19762C1[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C15__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(34120,28052),
  0,
  ABISELECT(34120,28052),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D1Ev,_ZTv0_n16_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C15D0Ev,_ZTv0_n16_N9S19762C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__A1__9S19762C15__8S19762C1[] = {
  ABISELECT(33824,27808),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C15__8S19762C1[] = {
  ABISELECT(33360,27408),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C15__8S19762C1[] = {
  0,
  ABISELECT(35680,29336),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C15__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(34600,28432),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A2__9S19762C15__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(35064,28832),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__9S19762C15__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S19762C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D1Ev,_ZTvn380_n40_N9S19762C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19762C15D0Ev,_ZTvn380_n40_N9S19762C15D0Ev),
};
extern void _ZN8S19762C52v3Ev();
extern void _ZN9S19762C112v9Ev();
extern void _ZN9S19762C11D1Ev();
extern void _ZN9S19762C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C11__A1__8S19762C1[] = {
  ABISELECT(-34592,-28460),
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19762C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C11D0Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C79S19762C11__A3__8S19762C1[] = {
  ABISELECT(-34896,-28704),
  ABISELECT(-36152,-29744),
  ABISELECT(-35072,-28840),
  ABISELECT(-35536,-29240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__8S19762C79S19762C11__A3__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,29240),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__8S19762C79S19762C11__A3__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35072,28840),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A3__8S19762C1[] = {
  0,
  ABISELECT(36152,29744),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__8S19762C79S19762C11__A3__8S19762C1[] = {
  0,
  ABISELECT(34896,28704),
  (VTBL_ENTRY)&(_ZTI8S19762C7[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN9S19762C12D1Ev();
extern void _ZN9S19762C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C129S19762C11__A2__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  0,
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN9S19762C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19762C12D0Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__9S19762C129S19762C11__A2__8S19762C1[] = {
  0,
  ABISELECT(35360,29084),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C129S19762C11__A2__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(35056,28840),
  0,
  ABISELECT(35056,28840),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A2__8S19762C1[] = {
  ABISELECT(34760,28596),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A2__8S19762C1[] = {
  ABISELECT(34296,28196),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A2__8S19762C1[] = {
  0,
  ABISELECT(36616,30124),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C129S19762C11__A2__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35536,29220),
  (VTBL_ENTRY)&(_ZTI9S19762C12[0]),
};
extern void _ZN8S19762C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev)();
extern void _ZN9S19762C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19762C10__9S19762C11__A1__8S19762C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(34592,28460),
  0,
  ABISELECT(34592,28460),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19762C102v8Ev,
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C49S19762C10__9S19762C11__A1__8S19762C1[] = {
  ABISELECT(34296,28216),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C59S19762C10__9S19762C11__A1__8S19762C1[] = {
  ABISELECT(33832,27816),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
extern void _ZN8S19762C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C5__A1__9S19762C11__A1__8S19762C1[] = {
  0,
  ABISELECT(36152,29744),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19762C8__9S19762C11__A1__8S19762C1[] = {
  ABISELECT(-1080,-904),
  ABISELECT(35072,28840),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
};
extern void _ZN8S19762C42v4Ev();
extern void _ZN8S19762C42v5Ev();
extern void _ZN8S19762C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C4__A1__9S19762C11__A1__8S19762C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,29240),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19762C42v6Ev,
};
extern void _ZN8S19762C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19762C9__A1__9S19762C11__A1__8S19762C1[] = {
  0,
  ABISELECT(34896,28704),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&_ZN8S19762C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19762C12__9S19762C11__A1__8S19762C1[] = {
  ABISELECT(-35536,-29220),
  ABISELECT(-36616,-30124),
  ABISELECT(-35056,-28840),
  ABISELECT(-35360,-29084),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19762C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D1Ev,_ZThn380_N9S19762C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19762C11D0Ev,_ZThn380_N9S19762C11D0Ev),
};
static  VTT_ENTRY vtt_S19762C1[] = {
  {&(_ZTV8S19762C1[18]),  18,297},
  {&(_tg__ZTV9S19762C20__8S19762C1[16]),  16,22},
  {&(_tg__ZTV8S19762C69S19762C20__8S19762C1[8]),  8,14},
  {&(_tg__ZTV9S19762C118S19762C69S19762C20__8S19762C1[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C118S19762C69S19762C20__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C118S19762C69S19762C20__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C118S19762C69S19762C20__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C118S19762C69S19762C20__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C118S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C118S19762C69S19762C20__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C118S19762C69S19762C20__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C118S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C118S19762C69S19762C20__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C5__8S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C7__8S19762C69S19762C20__8S19762C1[7]),  7,8},
  {&(_tg__ZTV8S19762C4__8S19762C69S19762C20__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C69S19762C20__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C9__8S19762C69S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C11__8S19762C69S19762C20__8S19762C1[7]),  7,11},
  {&(_tg__ZTV9S19762C10__A1__8S19762C69S19762C20__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__8S19762C69S19762C20__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A3__8S19762C69S19762C20__8S19762C1[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__8S19762C69S19762C20__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C5__9S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C7__9S19762C20__8S19762C1[7]),  7,8},
  {&(_tg__ZTV8S19762C4__9S19762C20__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__9S19762C20__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C9__9S19762C20__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C118S19762C6__9S19762C20__8S19762C1[7]),  7,11},
  {&(_tg__ZTV9S19762C10__A1__9S19762C20__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__9S19762C20__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A3__9S19762C20__8S19762C1[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C118S19762C6__9S19762C20__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C21__9S19762C20__8S19762C1[19]),  19,24},
  {&(_tg__ZTV9S19762C22__9S19762C20__8S19762C1[9]),  9,11},
  {&(_tg__ZTV9S19762C13__9S19762C20__8S19762C1[5]),  5,9},
  {&(_tg__ZTV9S19762C12__A1__9S19762C20__8S19762C1[7]),  7,9},
  {&(_tg__ZTV9S19762C19__9S19762C20__8S19762C1[16]),  16,21},
  {&(_tg__ZTV9S19762C15__9S19762C20__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__A1__9S19762C20__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C129S19762C11__A2__9S19762C20__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C20__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A4__9S19762C20__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C20__8S19762C1[2]),  2,6},
  {&(_tg__ZTV8S19762C79S19762C169S19762C21__A5__9S19762C20__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C139S19762C169S19762C21__A2__9S19762C20__8S19762C1[2]),  2,6},
  {&(_tg__ZTV12S19762C24_nt__9S19762C20__8S19762C1[4]),  4,6},
  {&(_tg__ZTV9S19762C21__A__8S19762C1[13]),  13,18},
  {&(_tg__ZTV9S19762C169S19762C21__A2__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C21__A6__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A6__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A6__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A6__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A6__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C21__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C21__A2__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C21__A2__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C21__A2__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A2__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A2__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C21__A2__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A2__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A2__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A2__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C22__9S19762C21__A__8S19762C1[9]),  9,11},
  {&(_tg__ZTV9S19762C13__9S19762C21__A__8S19762C1[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C21__A__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C21__A__8S19762C1[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C21__A__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C21__A__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C21__A__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C21__A__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C21__A__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C19__9S19762C21__A__8S19762C1[16]),  16,21},
  {&(_tg__ZTV8S19762C4__A1__9S19762C21__A__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C15__9S19762C21__A__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C21__A__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C129S19762C11__A1__9S19762C21__A__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C21__A__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__A__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__A__8S19762C1[2]),  2,6},
  {&(_tg__ZTV8S19762C79S19762C16__A3__9S19762C21__A__8S19762C1[6]),  6,7},
  {&(_ZTV8S19762C1[90]),  90,297},
  {&(_ZTV8S19762C1[94]),  94,297},
  {&(_ZTV8S19762C1[102]),  102,297},
  {&(_ZTV8S19762C1[108]),  108,297},
  {&(_ZTV8S19762C1[114]),  114,297},
  {&(_ZTV8S19762C1[117]),  117,297},
  {&(_ZTV8S19762C1[40]),  40,297},
  {&(_ZTV8S19762C1[127]),  127,297},
  {&(_ZTV8S19762C1[133]),  133,297},
  {&(_ZTV8S19762C1[138]),  138,297},
  {&(_ZTV8S19762C1[50]),  50,297},
  {&(_ZTV8S19762C1[158]),  158,297},
  {&(_ZTV8S19762C1[185]),  185,297},
  {&(_ZTV8S19762C1[192]),  192,297},
  {&(_ZTV8S19762C1[203]),  203,297},
  {&(_ZTV8S19762C1[221]),  221,297},
  {&(_ZTV8S19762C1[264]),  264,297},
  {&(_ZTV8S19762C1[279]),  279,297},
  {&(_ZTV8S19762C1[289]),  289,297},
  {&(_ZTV8S19762C1[235]),  235,297},
  {&(_ZTV8S19762C1[245]),  245,297},
  {&(_ZTV8S19762C1[248]),  248,297},
  {&(_ZTV8S19762C1[169]),  169,297},
  {&(_ZTV8S19762C1[172]),  172,297},
  {&(_ZTV8S19762C1[295]),  295,297},
  {&(_ZTV8S19762C1[69]),  69,297},
  {&(_ZTV8S19762C1[80]),  80,297},
  {&(_tg__ZTV8S19762C7__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C7__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C7__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C7__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C7__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__8S19762C8__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C21__8S19762C1[13]),  13,18},
  {&(_tg__ZTV9S19762C169S19762C21__A1__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C21__A5__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C21__A5__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C21__A5__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C21__A5__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C21__A5__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C21__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C21__A1__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C21__A1__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C21__A1__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C21__A1__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C21__A1__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C21__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C21__A1__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C21__A1__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C21__A1__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C21__A1__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C22__9S19762C21__8S19762C1[9]),  9,11},
  {&(_tg__ZTV9S19762C13__9S19762C21__8S19762C1[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C21__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C21__8S19762C1[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C21__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C21__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C21__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C21__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C21__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C19__9S19762C21__8S19762C1[16]),  16,21},
  {&(_tg__ZTV8S19762C4__A1__9S19762C21__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C15__9S19762C21__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C21__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C129S19762C11__A1__9S19762C21__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C169S19762C19__9S19762C21__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A2__9S19762C21__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C139S19762C169S19762C19__A1__9S19762C21__8S19762C1[2]),  2,6},
  {&(_tg__ZTV8S19762C79S19762C16__A3__9S19762C21__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C22__8S19762C1[8]),  8,10},
  {&(_tg__ZTV9S19762C13__9S19762C22__8S19762C1[5]),  5,9},
  {&(_tg__ZTV8S19762C5__9S19762C22__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C22__8S19762C1[7]),  7,9},
  {&(_tg__ZTV8S19762C9__A1__9S19762C22__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C22__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C22__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C22__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C8__9S19762C22__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C12__A1__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C12__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C12__A1__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C12__A1__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C12__A1__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C12__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C12__A1__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C19__8S19762C1[9]),  9,14},
  {&(_tg__ZTV8S19762C79S19762C19__A2__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C19__A2__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C19__A2__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C19__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C19__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C169S19762C19__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C169S19762C19__A4__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C169S19762C19__A4__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C169S19762C19__A4__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C169S19762C19__A4__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C169S19762C19__A4__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C169S19762C19__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C169S19762C19__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C169S19762C19__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C169S19762C19__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C169S19762C19__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A1__9S19762C169S19762C19__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A2__9S19762C169S19762C19__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C169S19762C19__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C169S19762C19__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C169S19762C19__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C7__A1__9S19762C169S19762C19__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__9S19762C19__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__9S19762C19__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C19__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__9S19762C19__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C15__9S19762C19__8S19762C1[12]),  12,17},
  {&(_tg__ZTV9S19762C11__9S19762C19__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C19__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A2__9S19762C19__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__A2__9S19762C19__8S19762C1[2]),  2,3},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C19__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C16__9S19762C19__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C79S19762C16__A2__9S19762C19__8S19762C1[6]),  6,7},
  {&(_tg__ZTV9S19762C15__8S19762C1[8]),  8,13},
  {&(_tg__ZTV8S19762C9__9S19762C15__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C11__9S19762C15__8S19762C1[10]),  10,14},
  {&(_tg__ZTV9S19762C10__9S19762C15__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__A1__9S19762C15__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C15__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C15__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C15__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A2__9S19762C15__8S19762C1[5]),  5,8},
  {&(_tg__ZTV9S19762C129S19762C11__9S19762C15__8S19762C1[6]),  6,8},
  {&(_tg__ZTV9S19762C11__A1__8S19762C1[7]),  7,11},
  {&(_tg__ZTV8S19762C79S19762C11__A3__8S19762C1[6]),  6,7},
  {&(_tg__ZTV8S19762C4__8S19762C79S19762C11__A3__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C8__8S19762C79S19762C11__A3__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C5__A1__8S19762C79S19762C11__A3__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C9__8S19762C79S19762C11__A3__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C129S19762C11__A2__8S19762C1[6]),  6,8},
  {&(_tg__ZTV8S19762C9__9S19762C129S19762C11__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C10__9S19762C129S19762C11__A2__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C129S19762C11__A2__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C129S19762C11__A2__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C129S19762C11__A2__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C129S19762C11__A2__8S19762C1[3]),  3,3},
  {&(_tg__ZTV9S19762C10__9S19762C11__A1__8S19762C1[9]),  9,13},
  {&(_tg__ZTV8S19762C49S19762C10__9S19762C11__A1__8S19762C1[2]),  2,5},
  {&(_tg__ZTV8S19762C59S19762C10__9S19762C11__A1__8S19762C1[2]),  2,3},
  {&(_tg__ZTV8S19762C5__A1__9S19762C11__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV8S19762C8__9S19762C11__A1__8S19762C1[3]),  3,3},
  {&(_tg__ZTV8S19762C4__A1__9S19762C11__A1__8S19762C1[5]),  5,8},
  {&(_tg__ZTV8S19762C9__A1__9S19762C11__A1__8S19762C1[3]),  3,4},
  {&(_tg__ZTV9S19762C12__9S19762C11__A1__8S19762C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S19762C1[];
extern  VTBL_ENTRY _ZTV8S19762C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19762C1[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D0Ev,_ZTv0_n40_N9S19762C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D0Ev,_ZThn408_N9S19762C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C15D1Ev,_ZTv0_n40_N9S19762C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19762C15D1Ev,_ZThn408_N9S19762C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D0Ev,_ZTv0_n40_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C19D0Ev,_ZThn16900_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C19D1Ev,_ZTv0_n40_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19762C19D1Ev,_ZThn16900_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D0Ev,_ZTv0_n48_N9S19762C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C19D0Ev,_ZThn16492_N9S19762C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C19D1Ev,_ZTv0_n48_N9S19762C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19762C19D1Ev,_ZThn16492_N9S19762C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D0Ev,_ZTv0_n28_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19762C22D0Ev,_ZThn568_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C22D1Ev,_ZTv0_n28_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19762C22D1Ev,_ZThn568_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D0Ev,_ZTv0_n16_N9S19762C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D0Ev,_ZThn52_N9S19762C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C22D1Ev,_ZTv0_n16_N9S19762C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19762C22D1Ev,_ZThn52_N9S19762C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D0Ev,_ZTv0_n40_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C21D0Ev,_ZThn25064_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19762C21D0Ev,_ZThn149864_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C21D1Ev,_ZTv0_n40_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C21D1Ev,_ZThn25064_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19762C21D1Ev,_ZThn149864_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D0Ev,_ZTv0_n48_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C21D0Ev,_ZThn24656_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19762C21D0Ev,_ZThn149456_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C21D1Ev,_ZTv0_n48_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C21D1Ev,_ZThn24656_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19762C21D1Ev,_ZThn149456_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D0Ev,_ZTv0_n52_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19762C21D0Ev,_ZThn8164_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19762C21D0Ev,_ZThn132964_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C21D1Ev,_ZTv0_n52_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19762C21D1Ev,_ZThn8164_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19762C21D1Ev,_ZThn132964_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D0Ev,_ZTv0_n28_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19762C21D0Ev,_ZThn2916_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19762C21D0Ev,_ZThn127716_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C21D1Ev,_ZTv0_n28_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19762C21D1Ev,_ZThn2916_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19762C21D1Ev,_ZThn127716_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D0Ev,_ZTv0_n16_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D0Ev,_ZThn2400_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19762C21D0Ev,_ZThn121404_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19762C21D0Ev,_ZThn127200_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C21D1Ev,_ZTv0_n16_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19762C21D1Ev,_ZThn2400_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19762C21D1Ev,_ZThn121404_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19762C21D1Ev,_ZThn127200_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D0Ev,_ZTv0_n36_N9S19762C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D0Ev,_ZThn2348_N9S19762C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19762C21D0Ev,_ZThn127148_N9S19762C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C21D1Ev,_ZTv0_n36_N9S19762C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19762C21D1Ev,_ZThn2348_N9S19762C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19762C21D1Ev,_ZThn127148_N9S19762C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D0Ev,_ZTv0_n16_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19762C16D0Ev,_ZThn121404_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C16D1Ev,_ZTv0_n16_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19762C16D1Ev,_ZThn121404_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D0Ev,_ZTv0_n40_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19762C16D0Ev,_ZThn16520_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C16D0Ev,_ZThn25064_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19762C16D0Ev,_ZThn149864_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C16D1Ev,_ZTv0_n40_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19762C16D1Ev,_ZThn16520_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19762C16D1Ev,_ZThn25064_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19762C16D1Ev,_ZThn149864_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D0Ev,_ZTv0_n48_N9S19762C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19762C16D0Ev,_ZThn16112_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C16D0Ev,_ZThn24656_N9S19762C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19762C16D0Ev,_ZThn149456_N9S19762C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C16D1Ev,_ZTv0_n48_N9S19762C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19762C16D1Ev,_ZThn16112_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19762C16D1Ev,_ZThn24656_N9S19762C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19762C16D1Ev,_ZThn149456_N9S19762C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C20D0Ev,_ZTv0_n40_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19762C20D0Ev,_ZThn172868_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19762C20D1Ev,_ZTv0_n40_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19762C20D1Ev,_ZThn172868_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C20D0Ev,_ZTv0_n48_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19762C20D0Ev,_ZThn172460_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19762C20D1Ev,_ZTv0_n48_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19762C20D1Ev,_ZThn172460_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C20D0Ev,_ZTv0_n52_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19762C20D0Ev,_ZThn155968_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19762C20D1Ev,_ZTv0_n52_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19762C20D1Ev,_ZThn155968_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C20D0Ev,_ZTv0_n28_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19762C20D0Ev,_ZThn150720_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19762C20D1Ev,_ZTv0_n28_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19762C20D1Ev,_ZThn150720_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C20D0Ev,_ZTv0_n36_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19762C20D0Ev,_ZThn150152_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19762C20D1Ev,_ZTv0_n36_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19762C20D1Ev,_ZThn150152_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19762C20D0Ev,_ZTv0_n60_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19762C20D0Ev,_ZThn147804_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19762C20D1Ev,_ZTv0_n60_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19762C20D1Ev,_ZThn147804_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C20D0Ev,_ZTv0_n16_N9S19762C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19762C20D0Ev,_ZThn150204_N9S19762C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19762C20D0Ev,_ZThn144408_N9S19762C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C20D1Ev,_ZTv0_n16_N9S19762C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19762C20D1Ev,_ZThn150204_N9S19762C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19762C20D1Ev,_ZThn144408_N9S19762C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D0Ev,_ZTv0_n16_N8S19762C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19762C6D0Ev,_ZThn144408_N8S19762C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C6D1Ev,_ZTv0_n16_N8S19762C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19762C6D1Ev,_ZThn144408_N8S19762C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D0Ev,_ZTv0_n16_N9S19762C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19762C11D0Ev,_ZThn141012_N9S19762C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C11D1Ev,_ZTv0_n16_N9S19762C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19762C11D1Ev,_ZThn141012_N9S19762C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D0Ev,_ZTv0_n16_N9S19762C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19762C12D0Ev,_ZThn140632_N9S19762C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19762C12D1Ev,_ZTv0_n16_N9S19762C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19762C12D1Ev,_ZThn140632_N9S19762C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19762C1D0Ev,_ZTv0_n40_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19762C1D0Ev,_ZThn172868_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19762C1D1Ev,_ZTv0_n40_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19762C1D1Ev,_ZThn172868_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19762C1D0Ev,_ZTv0_n48_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19762C1D0Ev,_ZThn172460_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19762C1D1Ev,_ZTv0_n48_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19762C1D1Ev,_ZThn172460_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19762C1D0Ev,_ZTv0_n52_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19762C1D0Ev,_ZThn155968_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19762C1D1Ev,_ZTv0_n52_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19762C1D1Ev,_ZThn155968_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19762C1D0Ev,_ZTv0_n28_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19762C1D0Ev,_ZThn150720_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19762C1D1Ev,_ZTv0_n28_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19762C1D1Ev,_ZThn150720_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19762C1D0Ev,_ZTv0_n36_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19762C1D0Ev,_ZThn150152_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19762C1D1Ev,_ZTv0_n36_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19762C1D1Ev,_ZThn150152_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19762C1D0Ev,_ZTv0_n60_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19762C1D0Ev,_ZThn147804_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19762C1D1Ev,_ZTv0_n60_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19762C1D1Ev,_ZThn147804_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C1D0Ev,_ZTv0_n16_N8S19762C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19762C1D0Ev,_ZThn150204_N8S19762C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19762C1D0Ev,_ZThn144408_N8S19762C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19762C1D1Ev,_ZTv0_n16_N8S19762C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19762C1D1Ev,_ZThn150204_N8S19762C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19762C1D1Ev,_ZThn144408_N8S19762C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19762C1 = {  "S19762C1", // class name
  bases_S19762C1, 57,
  &(vtc_S19762C1[0]), // expected_vtbl_contents
  &(vtt_S19762C1[0]), // expected_vtt_contents
  ABISELECT(221280,181948), // object size
  NSPAIRA(_ZTI8S19762C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19762C1),297, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19762C1),246, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S245C6  {
  int s245c6f0;
  __tsi64 s245c6f1;
  void *s245c6f2[4];
  int s245c6f3[2];
  void *s245c6f4;
  ::S3222C4_nt s245c6f5;
  void *s245c6f6[2];
  virtual  ~S245C6(); // _ZN6S245C6D1Ev
  virtual void  v5(); // _ZN6S245C62v5Ev
  virtual void  v6(); // _ZN6S245C62v6Ev
  virtual void  v7(); // _ZN6S245C62v7Ev
  virtual void  v8(); // _ZN6S245C62v8Ev
  virtual void  v9(); // _ZN6S245C62v9Ev
  virtual void  v10(); // _ZN6S245C63v10Ev
  virtual void  v11(); // _ZN6S245C63v11Ev
  virtual void  v12(); // _ZN6S245C63v12Ev
  virtual void  v13(); // _ZN6S245C63v13Ev
  virtual void  v14(); // _ZN6S245C63v14Ev
  virtual void  v15(); // _ZN6S245C63v15Ev
  virtual void  v16(); // _ZN6S245C63v16Ev
  virtual void  v17(); // _ZN6S245C63v17Ev
  virtual void  v18(); // _ZN6S245C63v18Ev
  virtual void  v19(); // _ZN6S245C63v19Ev
  virtual void  v20(); // _ZN6S245C63v20Ev
  virtual void  v21(); // _ZN6S245C63v21Ev
  virtual void  v22(); // _ZN6S245C63v22Ev
  virtual void  v23(); // _ZN6S245C63v23Ev
  virtual void  v24(); // _ZN6S245C63v24Ev
  virtual void  v25(); // _ZN6S245C63v25Ev
  virtual void  v26(); // _ZN6S245C63v26Ev
  virtual void  v27(); // _ZN6S245C63v27Ev
  virtual void  v28(); // _ZN6S245C63v28Ev
  virtual void  v29(); // _ZN6S245C63v29Ev
  virtual void  v30(); // _ZN6S245C63v30Ev
  virtual void  v31(); // _ZN6S245C63v31Ev
  virtual void  v32(); // _ZN6S245C63v32Ev
  virtual void  v33(); // _ZN6S245C63v33Ev
  virtual void  v34(); // _ZN6S245C63v34Ev
  virtual void  v35(); // _ZN6S245C63v35Ev
  virtual void  v36(); // _ZN6S245C63v36Ev
  virtual void  v37(); // _ZN6S245C63v37Ev
  virtual void  v38(); // _ZN6S245C63v38Ev
  virtual void  v39(); // _ZN6S245C63v39Ev
  virtual void  v40(); // _ZN6S245C63v40Ev
  virtual void  v41(); // _ZN6S245C63v41Ev
  virtual void  v42(); // _ZN6S245C63v42Ev
  virtual void  v43(); // _ZN6S245C63v43Ev
  virtual void  v44(); // _ZN6S245C63v44Ev
  virtual void  v45(); // _ZN6S245C63v45Ev
  virtual void  v46(); // _ZN6S245C63v46Ev
  virtual void  v47(); // _ZN6S245C63v47Ev
  virtual void  v48(); // _ZN6S245C63v48Ev
  virtual void  v49(); // _ZN6S245C63v49Ev
  virtual void  v50(); // _ZN6S245C63v50Ev
  virtual void  v51(); // _ZN6S245C63v51Ev
  virtual void  v52(); // _ZN6S245C63v52Ev
  virtual void  v53(); // _ZN6S245C63v53Ev
  virtual void  v54(); // _ZN6S245C63v54Ev
  virtual void  v55(); // _ZN6S245C63v55Ev
  virtual void  v56(); // _ZN6S245C63v56Ev
  virtual void  v57(); // _ZN6S245C63v57Ev
  virtual void  v58(); // _ZN6S245C63v58Ev
  virtual void  v59(); // _ZN6S245C63v59Ev
  virtual void  v60(); // _ZN6S245C63v60Ev
  virtual void  v61(); // _ZN6S245C63v61Ev
  virtual void  v62(); // _ZN6S245C63v62Ev
  virtual void  v63(); // _ZN6S245C63v63Ev
  virtual void  v64(); // _ZN6S245C63v64Ev
  virtual void  v65(); // _ZN6S245C63v65Ev
  virtual void  v66(); // _ZN6S245C63v66Ev
  virtual void  v67(); // _ZN6S245C63v67Ev
  virtual void  v68(); // _ZN6S245C63v68Ev
  S245C6(); // tgen
};
//SIG(-1 S245C6) 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]}


 S245C6 ::~S245C6(){ note_dtor("S245C6", this);}
void  S245C6 ::v5(){vfunc_called(this, "_ZN6S245C62v5Ev");}
void  S245C6 ::v6(){vfunc_called(this, "_ZN6S245C62v6Ev");}
void  S245C6 ::v7(){vfunc_called(this, "_ZN6S245C62v7Ev");}
void  S245C6 ::v8(){vfunc_called(this, "_ZN6S245C62v8Ev");}
void  S245C6 ::v9(){vfunc_called(this, "_ZN6S245C62v9Ev");}
void  S245C6 ::v10(){vfunc_called(this, "_ZN6S245C63v10Ev");}
void  S245C6 ::v11(){vfunc_called(this, "_ZN6S245C63v11Ev");}
void  S245C6 ::v12(){vfunc_called(this, "_ZN6S245C63v12Ev");}
void  S245C6 ::v13(){vfunc_called(this, "_ZN6S245C63v13Ev");}
void  S245C6 ::v14(){vfunc_called(this, "_ZN6S245C63v14Ev");}
void  S245C6 ::v15(){vfunc_called(this, "_ZN6S245C63v15Ev");}
void  S245C6 ::v16(){vfunc_called(this, "_ZN6S245C63v16Ev");}
void  S245C6 ::v17(){vfunc_called(this, "_ZN6S245C63v17Ev");}
void  S245C6 ::v18(){vfunc_called(this, "_ZN6S245C63v18Ev");}
void  S245C6 ::v19(){vfunc_called(this, "_ZN6S245C63v19Ev");}
void  S245C6 ::v20(){vfunc_called(this, "_ZN6S245C63v20Ev");}
void  S245C6 ::v21(){vfunc_called(this, "_ZN6S245C63v21Ev");}
void  S245C6 ::v22(){vfunc_called(this, "_ZN6S245C63v22Ev");}
void  S245C6 ::v23(){vfunc_called(this, "_ZN6S245C63v23Ev");}
void  S245C6 ::v24(){vfunc_called(this, "_ZN6S245C63v24Ev");}
void  S245C6 ::v25(){vfunc_called(this, "_ZN6S245C63v25Ev");}
void  S245C6 ::v26(){vfunc_called(this, "_ZN6S245C63v26Ev");}
void  S245C6 ::v27(){vfunc_called(this, "_ZN6S245C63v27Ev");}
void  S245C6 ::v28(){vfunc_called(this, "_ZN6S245C63v28Ev");}
void  S245C6 ::v29(){vfunc_called(this, "_ZN6S245C63v29Ev");}
void  S245C6 ::v30(){vfunc_called(this, "_ZN6S245C63v30Ev");}
void  S245C6 ::v31(){vfunc_called(this, "_ZN6S245C63v31Ev");}
void  S245C6 ::v32(){vfunc_called(this, "_ZN6S245C63v32Ev");}
void  S245C6 ::v33(){vfunc_called(this, "_ZN6S245C63v33Ev");}
void  S245C6 ::v34(){vfunc_called(this, "_ZN6S245C63v34Ev");}
void  S245C6 ::v35(){vfunc_called(this, "_ZN6S245C63v35Ev");}
void  S245C6 ::v36(){vfunc_called(this, "_ZN6S245C63v36Ev");}
void  S245C6 ::v37(){vfunc_called(this, "_ZN6S245C63v37Ev");}
void  S245C6 ::v38(){vfunc_called(this, "_ZN6S245C63v38Ev");}
void  S245C6 ::v39(){vfunc_called(this, "_ZN6S245C63v39Ev");}
void  S245C6 ::v40(){vfunc_called(this, "_ZN6S245C63v40Ev");}
void  S245C6 ::v41(){vfunc_called(this, "_ZN6S245C63v41Ev");}
void  S245C6 ::v42(){vfunc_called(this, "_ZN6S245C63v42Ev");}
void  S245C6 ::v43(){vfunc_called(this, "_ZN6S245C63v43Ev");}
void  S245C6 ::v44(){vfunc_called(this, "_ZN6S245C63v44Ev");}
void  S245C6 ::v45(){vfunc_called(this, "_ZN6S245C63v45Ev");}
void  S245C6 ::v46(){vfunc_called(this, "_ZN6S245C63v46Ev");}
void  S245C6 ::v47(){vfunc_called(this, "_ZN6S245C63v47Ev");}
void  S245C6 ::v48(){vfunc_called(this, "_ZN6S245C63v48Ev");}
void  S245C6 ::v49(){vfunc_called(this, "_ZN6S245C63v49Ev");}
void  S245C6 ::v50(){vfunc_called(this, "_ZN6S245C63v50Ev");}
void  S245C6 ::v51(){vfunc_called(this, "_ZN6S245C63v51Ev");}
void  S245C6 ::v52(){vfunc_called(this, "_ZN6S245C63v52Ev");}
void  S245C6 ::v53(){vfunc_called(this, "_ZN6S245C63v53Ev");}
void  S245C6 ::v54(){vfunc_called(this, "_ZN6S245C63v54Ev");}
void  S245C6 ::v55(){vfunc_called(this, "_ZN6S245C63v55Ev");}
void  S245C6 ::v56(){vfunc_called(this, "_ZN6S245C63v56Ev");}
void  S245C6 ::v57(){vfunc_called(this, "_ZN6S245C63v57Ev");}
void  S245C6 ::v58(){vfunc_called(this, "_ZN6S245C63v58Ev");}
void  S245C6 ::v59(){vfunc_called(this, "_ZN6S245C63v59Ev");}
void  S245C6 ::v60(){vfunc_called(this, "_ZN6S245C63v60Ev");}
void  S245C6 ::v61(){vfunc_called(this, "_ZN6S245C63v61Ev");}
void  S245C6 ::v62(){vfunc_called(this, "_ZN6S245C63v62Ev");}
void  S245C6 ::v63(){vfunc_called(this, "_ZN6S245C63v63Ev");}
void  S245C6 ::v64(){vfunc_called(this, "_ZN6S245C63v64Ev");}
void  S245C6 ::v65(){vfunc_called(this, "_ZN6S245C63v65Ev");}
void  S245C6 ::v66(){vfunc_called(this, "_ZN6S245C63v66Ev");}
void  S245C6 ::v67(){vfunc_called(this, "_ZN6S245C63v67Ev");}
void  S245C6 ::v68(){vfunc_called(this, "_ZN6S245C63v68Ev");}
S245C6 ::S245C6(){ note_ctor("S245C6", this);} // tgen

static void Test_S245C6()
{
  extern Class_Descriptor cd_S245C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S245C6, buf);
    S245C6 *dp, &lv = *(dp=new (buf) S245C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S245C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C6)");
    check_field_offset(lv, s245c6f0, ABISELECT(8,4), "S245C6.s245c6f0");
    check_field_offset(lv, s245c6f1, ABISELECT(16,8), "S245C6.s245c6f1");
    check_field_offset(lv, s245c6f2, ABISELECT(24,16), "S245C6.s245c6f2");
    check_field_offset(lv, s245c6f3, ABISELECT(56,32), "S245C6.s245c6f3");
    check_field_offset(lv, s245c6f4, ABISELECT(64,40), "S245C6.s245c6f4");
    check_field_offset(lv, s245c6f5, ABISELECT(72,44), "S245C6.s245c6f5");
    check_field_offset(lv, s245c6f6, ABISELECT(80,52), "S245C6.s245c6f6");
    test_class_info(&lv, &cd_S245C6);
    dp->~S245C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C6(Test_S245C6, "S245C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S245C6C1Ev();
extern void _ZN6S245C6D1Ev();
Name_Map name_map_S245C6[] = {
  NSPAIR(_ZN6S245C6C1Ev),
  NSPAIR(_ZN6S245C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S245C6[];
extern void _ZN6S245C6D1Ev();
extern void _ZN6S245C6D0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
static  VTBL_ENTRY vtc_S245C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S245C6[0]),
  (VTBL_ENTRY)&_ZN6S245C6D1Ev,
  (VTBL_ENTRY)&_ZN6S245C6D0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
};
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
Class_Descriptor cd_S245C6 = {  "S245C6", // class name
  0,0,//no base classes
  &(vtc_S245C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S245C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S245C6),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  S245C10  : S3222C7_nt {
};
//SIG(-1 S245C10) C1{ BC2{ m Fp Fi[2]}}



static void Test_S245C10()
{
  extern Class_Descriptor cd_S245C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S245C10, buf);
    S245C10 &lv = *(new (buf) S245C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S245C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C10)");
    check_base_class_offset(lv, (S3222C7_nt*), 0, "S245C10");
    test_class_info(&lv, &cd_S245C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C10(Test_S245C10, "S245C10", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
static Base_Class bases_S245C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S245C10 = {  "S245C10", // class name
  bases_S245C10, 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  S245C9  : S245C10 {
};
//SIG(-1 S245C9) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S245C9()
{
  extern Class_Descriptor cd_S245C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S245C9, buf);
    S245C9 &lv = *(new (buf) S245C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S245C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C9)");
    check_base_class_offset(lv, (S3222C7_nt*)(S245C10*), 0, "S245C9");
    check_base_class_offset(lv, (S245C10*), 0, "S245C9");
    test_class_info(&lv, &cd_S245C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C9(Test_S245C9, "S245C9", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S245C10;
static Base_Class bases_S245C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S245C9 = {  "S245C9", // class name
  bases_S245C9, 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  S245C8_nt  : S245C9 {
};
//SIG(-1 S245C8_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S245C8_nt

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S245C10;
extern Class_Descriptor cd_S245C9;
static Base_Class bases_S245C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S245C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S245C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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  S245C5_nt  : S245C6 {
  int s245c5f0[2];
  void *s245c5f1;
  int s245c5f2[2];
  ::S245C8_nt s245c5f3;
  ::S245C8_nt s245c5f4;
  ::S2014C38 s245c5f5;
  ::S245C8_nt s245c5f6;
  unsigned int s245c5f7:1;
  unsigned int s245c5f8:1;
  unsigned int s245c5f9:1;
  unsigned int s245c5f10:1;
  unsigned int s245c5f11:1;
  int s245c5f12[2];
  virtual  ~S245C5_nt(); // _ZN9S245C5_ntD1Ev
  virtual void  v69(); // _ZN9S245C5_nt3v69Ev
  virtual void  v70(); // _ZN9S245C5_nt3v70Ev
  virtual void  v71(); // _ZN9S245C5_nt3v71Ev
  virtual void  v72(); // _ZN9S245C5_nt3v72Ev
  virtual void  v73(); // _ZN9S245C5_nt3v73Ev
  virtual void  v74(); // _ZN9S245C5_nt3v74Ev
  virtual void  v75(); // _ZN9S245C5_nt3v75Ev
  virtual void  v76(); // _ZN9S245C5_nt3v76Ev
  virtual void  v77(); // _ZN9S245C5_nt3v77Ev
  virtual void  v78(); // _ZN9S245C5_nt3v78Ev
  virtual void  v79(); // _ZN9S245C5_nt3v79Ev
  virtual void  v80(); // _ZN9S245C5_nt3v80Ev
  virtual void  v81(); // _ZN9S245C5_nt3v81Ev
  virtual void  v82(); // _ZN9S245C5_nt3v82Ev
  virtual void  v83(); // _ZN9S245C5_nt3v83Ev
  virtual void  v84(); // _ZN9S245C5_nt3v84Ev
  virtual void  v85(); // _ZN9S245C5_nt3v85Ev
  virtual void  v86(); // _ZN9S245C5_nt3v86Ev
  virtual void  v87(); // _ZN9S245C5_nt3v87Ev
  virtual void  v88(); // _ZN9S245C5_nt3v88Ev
  virtual void  v89(); // _ZN9S245C5_nt3v89Ev
  virtual void  v90(); // _ZN9S245C5_nt3v90Ev
  S245C5_nt(); // tgen
};
//SIG(-1 S245C5_nt) C1{ BC2{ vd 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 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S245C5_nt ::~S245C5_nt(){ note_dtor("S245C5_nt", this);}
void  S245C5_nt ::v69(){vfunc_called(this, "_ZN9S245C5_nt3v69Ev");}
void  S245C5_nt ::v70(){vfunc_called(this, "_ZN9S245C5_nt3v70Ev");}
void  S245C5_nt ::v71(){vfunc_called(this, "_ZN9S245C5_nt3v71Ev");}
void  S245C5_nt ::v72(){vfunc_called(this, "_ZN9S245C5_nt3v72Ev");}
void  S245C5_nt ::v73(){vfunc_called(this, "_ZN9S245C5_nt3v73Ev");}
void  S245C5_nt ::v74(){vfunc_called(this, "_ZN9S245C5_nt3v74Ev");}
void  S245C5_nt ::v75(){vfunc_called(this, "_ZN9S245C5_nt3v75Ev");}
void  S245C5_nt ::v76(){vfunc_called(this, "_ZN9S245C5_nt3v76Ev");}
void  S245C5_nt ::v77(){vfunc_called(this, "_ZN9S245C5_nt3v77Ev");}
void  S245C5_nt ::v78(){vfunc_called(this, "_ZN9S245C5_nt3v78Ev");}
void  S245C5_nt ::v79(){vfunc_called(this, "_ZN9S245C5_nt3v79Ev");}
void  S245C5_nt ::v80(){vfunc_called(this, "_ZN9S245C5_nt3v80Ev");}
void  S245C5_nt ::v81(){vfunc_called(this, "_ZN9S245C5_nt3v81Ev");}
void  S245C5_nt ::v82(){vfunc_called(this, "_ZN9S245C5_nt3v82Ev");}
void  S245C5_nt ::v83(){vfunc_called(this, "_ZN9S245C5_nt3v83Ev");}
void  S245C5_nt ::v84(){vfunc_called(this, "_ZN9S245C5_nt3v84Ev");}
void  S245C5_nt ::v85(){vfunc_called(this, "_ZN9S245C5_nt3v85Ev");}
void  S245C5_nt ::v86(){vfunc_called(this, "_ZN9S245C5_nt3v86Ev");}
void  S245C5_nt ::v87(){vfunc_called(this, "_ZN9S245C5_nt3v87Ev");}
void  S245C5_nt ::v88(){vfunc_called(this, "_ZN9S245C5_nt3v88Ev");}
void  S245C5_nt ::v89(){vfunc_called(this, "_ZN9S245C5_nt3v89Ev");}
void  S245C5_nt ::v90(){vfunc_called(this, "_ZN9S245C5_nt3v90Ev");}
S245C5_nt ::S245C5_nt(){ note_ctor("S245C5_nt", this);} // tgen

//skip512 S245C5_nt

#else // __cplusplus

extern void _ZN9S245C5_ntC1Ev();
extern void _ZN9S245C5_ntD1Ev();
Name_Map name_map_S245C5_nt[] = {
  NSPAIR(_ZN9S245C5_ntC1Ev),
  NSPAIR(_ZN9S245C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S245C6;
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
static Base_Class bases_S245C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S245C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S245C5_nt[];
extern void _ZN9S245C5_ntD1Ev();
extern void _ZN9S245C5_ntD0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
extern void _ZN9S245C5_nt3v69Ev();
extern void _ZN9S245C5_nt3v70Ev();
extern void _ZN9S245C5_nt3v71Ev();
extern void _ZN9S245C5_nt3v72Ev();
extern void _ZN9S245C5_nt3v73Ev();
extern void _ZN9S245C5_nt3v74Ev();
extern void _ZN9S245C5_nt3v75Ev();
extern void _ZN9S245C5_nt3v76Ev();
extern void _ZN9S245C5_nt3v77Ev();
extern void _ZN9S245C5_nt3v78Ev();
extern void _ZN9S245C5_nt3v79Ev();
extern void _ZN9S245C5_nt3v80Ev();
extern void _ZN9S245C5_nt3v81Ev();
extern void _ZN9S245C5_nt3v82Ev();
extern void _ZN9S245C5_nt3v83Ev();
extern void _ZN9S245C5_nt3v84Ev();
extern void _ZN9S245C5_nt3v85Ev();
extern void _ZN9S245C5_nt3v86Ev();
extern void _ZN9S245C5_nt3v87Ev();
extern void _ZN9S245C5_nt3v88Ev();
extern void _ZN9S245C5_nt3v89Ev();
extern void _ZN9S245C5_nt3v90Ev();
static  VTBL_ENTRY vtc_S245C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S245C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S245C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S245C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v90Ev,
};
extern VTBL_ENTRY _ZTI9S245C5_nt[];
VTBL_ENTRY *P__ZTI9S245C5_nt = _ZTI9S245C5_nt; 
extern  VTBL_ENTRY _ZTV9S245C5_nt[];
Class_Descriptor cd_S245C5_nt = {  "S245C5_nt", // class name
  bases_S245C5_nt, 1,
  &(vtc_S245C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S245C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S245C5_nt),90, //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  S245C20  : S3222C7_nt {
};
//SIG(-1 S245C20) C1{ BC2{ m Fp Fi[2]}}



static void Test_S245C20()
{
  extern Class_Descriptor cd_S245C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S245C20, buf);
    S245C20 &lv = *(new (buf) S245C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S245C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C20)");
    check_base_class_offset(lv, (S3222C7_nt*), 0, "S245C20");
    test_class_info(&lv, &cd_S245C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C20(Test_S245C20, "S245C20", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
static Base_Class bases_S245C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S245C20 = {  "S245C20", // class name
  bases_S245C20, 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  S245C19  : S245C20 {
};
//SIG(-1 S245C19) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S245C19()
{
  extern Class_Descriptor cd_S245C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S245C19, buf);
    S245C19 &lv = *(new (buf) S245C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S245C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C19)");
    check_base_class_offset(lv, (S3222C7_nt*)(S245C20*), 0, "S245C19");
    check_base_class_offset(lv, (S245C20*), 0, "S245C19");
    test_class_info(&lv, &cd_S245C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C19(Test_S245C19, "S245C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3222C7_nt;
extern Class_Descriptor cd_S245C20;
static Base_Class bases_S245C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C7_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_S245C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S245C19 = {  "S245C19", // class name
  bases_S245C19, 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  S245C4_nt  : S245C5_nt {
  unsigned int s245c4f0:1;
  unsigned int s245c4f1:1;
  unsigned int s245c4f2:1;
  ::S3222C17 s245c4f3;
  ::S3222C11 s245c4f4;
  ::S3222C5_nt s245c4f5;
  ::S245C19 s245c4f6;
  int s245c4f7[3];
  virtual  ~S245C4_nt(); // _ZN9S245C4_ntD1Ev
  virtual void  v91(); // _ZN9S245C4_nt3v91Ev
  virtual void  v92(); // _ZN9S245C4_nt3v92Ev
  virtual void  v93(); // _ZN9S245C4_nt3v93Ev
  virtual void  v94(); // _ZN9S245C4_nt3v94Ev
  virtual void  v95(); // _ZN9S245C4_nt3v95Ev
  virtual void  v96(); // _ZN9S245C4_nt3v96Ev
  virtual void  v97(); // _ZN9S245C4_nt3v97Ev
  virtual void  v98(); // _ZN9S245C4_nt3v98Ev
  virtual void  v99(); // _ZN9S245C4_nt3v99Ev
  virtual void  v100(); // _ZN9S245C4_nt4v100Ev
  virtual void  v101(); // _ZN9S245C4_nt4v101Ev
  virtual void  v102(); // _ZN9S245C4_nt4v102Ev
  virtual void  v103(); // _ZN9S245C4_nt4v103Ev
  virtual void  v104(); // _ZN9S245C4_nt4v104Ev
  virtual void  v105(); // _ZN9S245C4_nt4v105Ev
  virtual void  v106(); // _ZN9S245C4_nt4v106Ev
  virtual void  v107(); // _ZN9S245C4_nt4v107Ev
  virtual void  v108(); // _ZN9S245C4_nt4v108Ev
  virtual void  v109(); // _ZN9S245C4_nt4v109Ev
  virtual void  v110(); // _ZN9S245C4_nt4v110Ev
  S245C4_nt(); // tgen
};
//SIG(-1 S245C4_nt) C1{ BC2{ BC3{ vd 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 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} FC16{ BC17{ BC8}} Fi[3]}


 S245C4_nt ::~S245C4_nt(){ note_dtor("S245C4_nt", this);}
void  S245C4_nt ::v91(){vfunc_called(this, "_ZN9S245C4_nt3v91Ev");}
void  S245C4_nt ::v92(){vfunc_called(this, "_ZN9S245C4_nt3v92Ev");}
void  S245C4_nt ::v93(){vfunc_called(this, "_ZN9S245C4_nt3v93Ev");}
void  S245C4_nt ::v94(){vfunc_called(this, "_ZN9S245C4_nt3v94Ev");}
void  S245C4_nt ::v95(){vfunc_called(this, "_ZN9S245C4_nt3v95Ev");}
void  S245C4_nt ::v96(){vfunc_called(this, "_ZN9S245C4_nt3v96Ev");}
void  S245C4_nt ::v97(){vfunc_called(this, "_ZN9S245C4_nt3v97Ev");}
void  S245C4_nt ::v98(){vfunc_called(this, "_ZN9S245C4_nt3v98Ev");}
void  S245C4_nt ::v99(){vfunc_called(this, "_ZN9S245C4_nt3v99Ev");}
void  S245C4_nt ::v100(){vfunc_called(this, "_ZN9S245C4_nt4v100Ev");}
void  S245C4_nt ::v101(){vfunc_called(this, "_ZN9S245C4_nt4v101Ev");}
void  S245C4_nt ::v102(){vfunc_called(this, "_ZN9S245C4_nt4v102Ev");}
void  S245C4_nt ::v103(){vfunc_called(this, "_ZN9S245C4_nt4v103Ev");}
void  S245C4_nt ::v104(){vfunc_called(this, "_ZN9S245C4_nt4v104Ev");}
void  S245C4_nt ::v105(){vfunc_called(this, "_ZN9S245C4_nt4v105Ev");}
void  S245C4_nt ::v106(){vfunc_called(this, "_ZN9S245C4_nt4v106Ev");}
void  S245C4_nt ::v107(){vfunc_called(this, "_ZN9S245C4_nt4v107Ev");}
void  S245C4_nt ::v108(){vfunc_called(this, "_ZN9S245C4_nt4v108Ev");}
void  S245C4_nt ::v109(){vfunc_called(this, "_ZN9S245C4_nt4v109Ev");}
void  S245C4_nt ::v110(){vfunc_called(this, "_ZN9S245C4_nt4v110Ev");}
S245C4_nt ::S245C4_nt(){ note_ctor("S245C4_nt", this);} // tgen

//skip512 S245C4_nt

#else // __cplusplus

extern void _ZN9S245C4_ntC1Ev();
extern void _ZN9S245C4_ntD1Ev();
Name_Map name_map_S245C4_nt[] = {
  NSPAIR(_ZN9S245C4_ntC1Ev),
  NSPAIR(_ZN9S245C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S245C6;
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
extern Class_Descriptor cd_S245C5_nt;
extern VTBL_ENTRY _ZTI9S245C5_nt[];
extern  VTBL_ENTRY _ZTV9S245C5_nt[];
static Base_Class bases_S245C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S245C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S245C5_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 _ZTI9S245C4_nt[];
extern void _ZN9S245C4_ntD1Ev();
extern void _ZN9S245C4_ntD0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
extern void _ZN9S245C5_nt3v69Ev();
extern void _ZN9S245C5_nt3v70Ev();
extern void _ZN9S245C5_nt3v71Ev();
extern void _ZN9S245C5_nt3v72Ev();
extern void _ZN9S245C5_nt3v73Ev();
extern void _ZN9S245C5_nt3v74Ev();
extern void _ZN9S245C5_nt3v75Ev();
extern void _ZN9S245C5_nt3v76Ev();
extern void _ZN9S245C5_nt3v77Ev();
extern void _ZN9S245C5_nt3v78Ev();
extern void _ZN9S245C5_nt3v79Ev();
extern void _ZN9S245C5_nt3v80Ev();
extern void _ZN9S245C5_nt3v81Ev();
extern void _ZN9S245C5_nt3v82Ev();
extern void _ZN9S245C5_nt3v83Ev();
extern void _ZN9S245C5_nt3v84Ev();
extern void _ZN9S245C5_nt3v85Ev();
extern void _ZN9S245C5_nt3v86Ev();
extern void _ZN9S245C5_nt3v87Ev();
extern void _ZN9S245C5_nt3v88Ev();
extern void _ZN9S245C5_nt3v89Ev();
extern void _ZN9S245C5_nt3v90Ev();
extern void _ZN9S245C4_nt3v91Ev();
extern void _ZN9S245C4_nt3v92Ev();
extern void _ZN9S245C4_nt3v93Ev();
extern void _ZN9S245C4_nt3v94Ev();
extern void _ZN9S245C4_nt3v95Ev();
extern void _ZN9S245C4_nt3v96Ev();
extern void _ZN9S245C4_nt3v97Ev();
extern void _ZN9S245C4_nt3v98Ev();
extern void _ZN9S245C4_nt3v99Ev();
extern void _ZN9S245C4_nt4v100Ev();
extern void _ZN9S245C4_nt4v101Ev();
extern void _ZN9S245C4_nt4v102Ev();
extern void _ZN9S245C4_nt4v103Ev();
extern void _ZN9S245C4_nt4v104Ev();
extern void _ZN9S245C4_nt4v105Ev();
extern void _ZN9S245C4_nt4v106Ev();
extern void _ZN9S245C4_nt4v107Ev();
extern void _ZN9S245C4_nt4v108Ev();
extern void _ZN9S245C4_nt4v109Ev();
extern void _ZN9S245C4_nt4v110Ev();
static  VTBL_ENTRY vtc_S245C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S245C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S245C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S245C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v110Ev,
};
extern VTBL_ENTRY _ZTI9S245C4_nt[];
VTBL_ENTRY *P__ZTI9S245C4_nt = _ZTI9S245C4_nt; 
extern  VTBL_ENTRY _ZTV9S245C4_nt[];
Class_Descriptor cd_S245C4_nt = {  "S245C4_nt", // class name
  bases_S245C4_nt, 2,
  &(vtc_S245C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S245C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S245C4_nt),110, //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  S245C3_nt  : S245C4_nt {
  ::S3222C4_nt s245c3f0;
  unsigned int s245c3f1:1;
  ::S245C19 s245c3f2;
  virtual  ~S245C3_nt(); // _ZN9S245C3_ntD1Ev
  virtual void  v111(); // _ZN9S245C3_nt4v111Ev
  virtual void  v112(); // _ZN9S245C3_nt4v112Ev
  virtual void  v113(); // _ZN9S245C3_nt4v113Ev
  virtual void  v114(); // _ZN9S245C3_nt4v114Ev
  S245C3_nt(); // tgen
};
//SIG(-1 S245C3_nt) C1{ BC2{ BC3{ BC4{ 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 FC5{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi[2] Fp Fi[2] FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC6 FC10{ m} FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 Fi:1 Fi:1 Fi:1 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} FC17{ BC18{ BC9}} Fi[3]} vd v1 v2 v3 v4 FC5 Fi:1 FC17}


 S245C3_nt ::~S245C3_nt(){ note_dtor("S245C3_nt", this);}
void  S245C3_nt ::v111(){vfunc_called(this, "_ZN9S245C3_nt4v111Ev");}
void  S245C3_nt ::v112(){vfunc_called(this, "_ZN9S245C3_nt4v112Ev");}
void  S245C3_nt ::v113(){vfunc_called(this, "_ZN9S245C3_nt4v113Ev");}
void  S245C3_nt ::v114(){vfunc_called(this, "_ZN9S245C3_nt4v114Ev");}
S245C3_nt ::S245C3_nt(){ note_ctor("S245C3_nt", this);} // tgen

//skip512 S245C3_nt

#else // __cplusplus

extern void _ZN9S245C3_ntC1Ev();
extern void _ZN9S245C3_ntD1Ev();
Name_Map name_map_S245C3_nt[] = {
  NSPAIR(_ZN9S245C3_ntC1Ev),
  NSPAIR(_ZN9S245C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S245C6;
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
extern Class_Descriptor cd_S245C5_nt;
extern VTBL_ENTRY _ZTI9S245C5_nt[];
extern  VTBL_ENTRY _ZTV9S245C5_nt[];
extern Class_Descriptor cd_S245C4_nt;
extern VTBL_ENTRY _ZTI9S245C4_nt[];
extern  VTBL_ENTRY _ZTV9S245C4_nt[];
static Base_Class bases_S245C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S245C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S245C5_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_S245C4_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 _ZTI9S245C3_nt[];
extern void _ZN9S245C3_ntD1Ev();
extern void _ZN9S245C3_ntD0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
extern void _ZN9S245C5_nt3v69Ev();
extern void _ZN9S245C5_nt3v70Ev();
extern void _ZN9S245C5_nt3v71Ev();
extern void _ZN9S245C5_nt3v72Ev();
extern void _ZN9S245C5_nt3v73Ev();
extern void _ZN9S245C5_nt3v74Ev();
extern void _ZN9S245C5_nt3v75Ev();
extern void _ZN9S245C5_nt3v76Ev();
extern void _ZN9S245C5_nt3v77Ev();
extern void _ZN9S245C5_nt3v78Ev();
extern void _ZN9S245C5_nt3v79Ev();
extern void _ZN9S245C5_nt3v80Ev();
extern void _ZN9S245C5_nt3v81Ev();
extern void _ZN9S245C5_nt3v82Ev();
extern void _ZN9S245C5_nt3v83Ev();
extern void _ZN9S245C5_nt3v84Ev();
extern void _ZN9S245C5_nt3v85Ev();
extern void _ZN9S245C5_nt3v86Ev();
extern void _ZN9S245C5_nt3v87Ev();
extern void _ZN9S245C5_nt3v88Ev();
extern void _ZN9S245C5_nt3v89Ev();
extern void _ZN9S245C5_nt3v90Ev();
extern void _ZN9S245C4_nt3v91Ev();
extern void _ZN9S245C4_nt3v92Ev();
extern void _ZN9S245C4_nt3v93Ev();
extern void _ZN9S245C4_nt3v94Ev();
extern void _ZN9S245C4_nt3v95Ev();
extern void _ZN9S245C4_nt3v96Ev();
extern void _ZN9S245C4_nt3v97Ev();
extern void _ZN9S245C4_nt3v98Ev();
extern void _ZN9S245C4_nt3v99Ev();
extern void _ZN9S245C4_nt4v100Ev();
extern void _ZN9S245C4_nt4v101Ev();
extern void _ZN9S245C4_nt4v102Ev();
extern void _ZN9S245C4_nt4v103Ev();
extern void _ZN9S245C4_nt4v104Ev();
extern void _ZN9S245C4_nt4v105Ev();
extern void _ZN9S245C4_nt4v106Ev();
extern void _ZN9S245C4_nt4v107Ev();
extern void _ZN9S245C4_nt4v108Ev();
extern void _ZN9S245C4_nt4v109Ev();
extern void _ZN9S245C4_nt4v110Ev();
extern void _ZN9S245C3_nt4v111Ev();
extern void _ZN9S245C3_nt4v112Ev();
extern void _ZN9S245C3_nt4v113Ev();
extern void _ZN9S245C3_nt4v114Ev();
static  VTBL_ENTRY vtc_S245C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S245C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S245C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S245C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v114Ev,
};
extern VTBL_ENTRY _ZTI9S245C3_nt[];
VTBL_ENTRY *P__ZTI9S245C3_nt = _ZTI9S245C3_nt; 
extern  VTBL_ENTRY _ZTV9S245C3_nt[];
Class_Descriptor cd_S245C3_nt = {  "S245C3_nt", // class name
  bases_S245C3_nt, 3,
  &(vtc_S245C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S245C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S245C3_nt),114, //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  S245C2_nt  : S245C3_nt {
  int s245c2f0;
  unsigned int s245c2f1:1;
  virtual  ~S245C2_nt(); // _ZN9S245C2_ntD1Ev
  virtual void  v115(); // _ZN9S245C2_nt4v115Ev
  virtual void  v116(); // _ZN9S245C2_nt4v116Ev
  virtual void  v117(); // _ZN9S245C2_nt4v117Ev
  virtual void  v118(); // _ZN9S245C2_nt4v118Ev
  virtual void  v119(); // _ZN9S245C2_nt4v119Ev
  virtual void  v120(); // _ZN9S245C2_nt4v120Ev
  virtual void  v121(); // _ZN9S245C2_nt4v121Ev
  virtual void  v122(); // _ZN9S245C2_nt4v122Ev
  S245C2_nt(); // tgen
};
//SIG(-1 S245C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ m Fi[2]} Fp[2]} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi[2] Fp Fi[2] FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} FC7 FC11{ m} FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 Fi:1 Fi:1 Fi:1 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v115 v116 v117 v118 FC6 Fi:1 FC18} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S245C2_nt ::~S245C2_nt(){ note_dtor("S245C2_nt", this);}
void  S245C2_nt ::v115(){vfunc_called(this, "_ZN9S245C2_nt4v115Ev");}
void  S245C2_nt ::v116(){vfunc_called(this, "_ZN9S245C2_nt4v116Ev");}
void  S245C2_nt ::v117(){vfunc_called(this, "_ZN9S245C2_nt4v117Ev");}
void  S245C2_nt ::v118(){vfunc_called(this, "_ZN9S245C2_nt4v118Ev");}
void  S245C2_nt ::v119(){vfunc_called(this, "_ZN9S245C2_nt4v119Ev");}
void  S245C2_nt ::v120(){vfunc_called(this, "_ZN9S245C2_nt4v120Ev");}
void  S245C2_nt ::v121(){vfunc_called(this, "_ZN9S245C2_nt4v121Ev");}
void  S245C2_nt ::v122(){vfunc_called(this, "_ZN9S245C2_nt4v122Ev");}
S245C2_nt ::S245C2_nt(){ note_ctor("S245C2_nt", this);} // tgen

//skip512 S245C2_nt

#else // __cplusplus

extern void _ZN9S245C2_ntC1Ev();
extern void _ZN9S245C2_ntD1Ev();
Name_Map name_map_S245C2_nt[] = {
  NSPAIR(_ZN9S245C2_ntC1Ev),
  NSPAIR(_ZN9S245C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S245C6;
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
extern Class_Descriptor cd_S245C5_nt;
extern VTBL_ENTRY _ZTI9S245C5_nt[];
extern  VTBL_ENTRY _ZTV9S245C5_nt[];
extern Class_Descriptor cd_S245C4_nt;
extern VTBL_ENTRY _ZTI9S245C4_nt[];
extern  VTBL_ENTRY _ZTV9S245C4_nt[];
extern Class_Descriptor cd_S245C3_nt;
extern VTBL_ENTRY _ZTI9S245C3_nt[];
extern  VTBL_ENTRY _ZTV9S245C3_nt[];
static Base_Class bases_S245C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S245C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S245C5_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_S245C4_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_S245C3_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 _ZTI9S245C2_nt[];
extern void _ZN9S245C2_ntD1Ev();
extern void _ZN9S245C2_ntD0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
extern void _ZN9S245C5_nt3v69Ev();
extern void _ZN9S245C5_nt3v70Ev();
extern void _ZN9S245C5_nt3v71Ev();
extern void _ZN9S245C5_nt3v72Ev();
extern void _ZN9S245C5_nt3v73Ev();
extern void _ZN9S245C5_nt3v74Ev();
extern void _ZN9S245C5_nt3v75Ev();
extern void _ZN9S245C5_nt3v76Ev();
extern void _ZN9S245C5_nt3v77Ev();
extern void _ZN9S245C5_nt3v78Ev();
extern void _ZN9S245C5_nt3v79Ev();
extern void _ZN9S245C5_nt3v80Ev();
extern void _ZN9S245C5_nt3v81Ev();
extern void _ZN9S245C5_nt3v82Ev();
extern void _ZN9S245C5_nt3v83Ev();
extern void _ZN9S245C5_nt3v84Ev();
extern void _ZN9S245C5_nt3v85Ev();
extern void _ZN9S245C5_nt3v86Ev();
extern void _ZN9S245C5_nt3v87Ev();
extern void _ZN9S245C5_nt3v88Ev();
extern void _ZN9S245C5_nt3v89Ev();
extern void _ZN9S245C5_nt3v90Ev();
extern void _ZN9S245C4_nt3v91Ev();
extern void _ZN9S245C4_nt3v92Ev();
extern void _ZN9S245C4_nt3v93Ev();
extern void _ZN9S245C4_nt3v94Ev();
extern void _ZN9S245C4_nt3v95Ev();
extern void _ZN9S245C4_nt3v96Ev();
extern void _ZN9S245C4_nt3v97Ev();
extern void _ZN9S245C4_nt3v98Ev();
extern void _ZN9S245C4_nt3v99Ev();
extern void _ZN9S245C4_nt4v100Ev();
extern void _ZN9S245C4_nt4v101Ev();
extern void _ZN9S245C4_nt4v102Ev();
extern void _ZN9S245C4_nt4v103Ev();
extern void _ZN9S245C4_nt4v104Ev();
extern void _ZN9S245C4_nt4v105Ev();
extern void _ZN9S245C4_nt4v106Ev();
extern void _ZN9S245C4_nt4v107Ev();
extern void _ZN9S245C4_nt4v108Ev();
extern void _ZN9S245C4_nt4v109Ev();
extern void _ZN9S245C4_nt4v110Ev();
extern void _ZN9S245C3_nt4v111Ev();
extern void _ZN9S245C3_nt4v112Ev();
extern void _ZN9S245C3_nt4v113Ev();
extern void _ZN9S245C3_nt4v114Ev();
extern void _ZN9S245C2_nt4v115Ev();
extern void _ZN9S245C2_nt4v116Ev();
extern void _ZN9S245C2_nt4v117Ev();
extern void _ZN9S245C2_nt4v118Ev();
extern void _ZN9S245C2_nt4v119Ev();
extern void _ZN9S245C2_nt4v120Ev();
extern void _ZN9S245C2_nt4v121Ev();
extern void _ZN9S245C2_nt4v122Ev();
static  VTBL_ENTRY vtc_S245C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S245C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S245C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S245C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v122Ev,
};
extern VTBL_ENTRY _ZTI9S245C2_nt[];
VTBL_ENTRY *P__ZTI9S245C2_nt = _ZTI9S245C2_nt; 
extern  VTBL_ENTRY _ZTV9S245C2_nt[];
Class_Descriptor cd_S245C2_nt = {  "S245C2_nt", // class name
  bases_S245C2_nt, 4,
  &(vtc_S245C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI9S245C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S245C2_nt),122, //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  S245C1  : S245C2_nt {
  ::S245C8_nt s245c1f0;
  ::S245C8_nt s245c1f1;
  ::S245C8_nt s245c1f2;
  unsigned int s245c1f3:1;
  unsigned int s245c1f4:1;
  unsigned int s245c1f5:1;
  ::S245C8_nt s245c1f6;
  virtual  ~S245C1(); // _ZN6S245C1D1Ev
  virtual void  v1(); // _ZN6S245C12v1Ev
  virtual void  v2(); // _ZN6S245C12v2Ev
  virtual void  v3(); // _ZN6S245C12v3Ev
  virtual void  v4(); // _ZN6S245C12v4Ev
  S245C1(); // tgen
};
//SIG(1 S245C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ 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 FC7{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi[2] Fp Fi[2] FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} FC8 FC12{ m} FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 Fi:1 Fi:1 Fi:1 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} FC19{ BC20{ BC11}} Fi[3]} vd v111 v112 v113 v114 FC7 Fi:1 FC19} vd v115 v116 v117 v118 v119 v120 v121 v122 Fi Fi:1} vd v1 v2 v3 v4 FC8 FC8 FC8 Fi:1 Fi:1 Fi:1 FC8}


 S245C1 ::~S245C1(){ note_dtor("S245C1", this);}
void  S245C1 ::v1(){vfunc_called(this, "_ZN6S245C12v1Ev");}
void  S245C1 ::v2(){vfunc_called(this, "_ZN6S245C12v2Ev");}
void  S245C1 ::v3(){vfunc_called(this, "_ZN6S245C12v3Ev");}
void  S245C1 ::v4(){vfunc_called(this, "_ZN6S245C12v4Ev");}
S245C1 ::S245C1(){ note_ctor("S245C1", this);} // tgen

static void Test_S245C1()
{
  extern Class_Descriptor cd_S245C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,71)];
    init_test(&cd_S245C1, buf);
    S245C1 *dp, &lv = *(dp=new (buf) S245C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,280), "sizeof(S245C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S245C1)");
    check_base_class_offset(lv, (S245C6*)(S245C5_nt*)(S245C4_nt*)(S245C3_nt*)(S245C2_nt*), 0, "S245C1");
    check_base_class_offset(lv, (S245C5_nt*)(S245C4_nt*)(S245C3_nt*)(S245C2_nt*), 0, "S245C1");
    check_base_class_offset(lv, (S245C4_nt*)(S245C3_nt*)(S245C2_nt*), 0, "S245C1");
    check_base_class_offset(lv, (S245C3_nt*)(S245C2_nt*), 0, "S245C1");
    check_base_class_offset(lv, (S245C2_nt*), 0, "S245C1");
    check_field_offset(lv, s245c1f0, ABISELECT(304,228), "S245C1.s245c1f0");
    check_field_offset(lv, s245c1f1, ABISELECT(320,240), "S245C1.s245c1f1");
    check_field_offset(lv, s245c1f2, ABISELECT(336,252), "S245C1.s245c1f2");
    set_bf_and_test(lv, s245c1f3, ABISELECT(352,264), 0, 1, 1, "S245C1");
    set_bf_and_test(lv, s245c1f4, ABISELECT(352,264), 1, 1, 1, "S245C1");
    set_bf_and_test(lv, s245c1f5, ABISELECT(352,264), 2, 1, 1, "S245C1");
    check_field_offset(lv, s245c1f6, ABISELECT(360,268), "S245C1.s245c1f6");
    test_class_info(&lv, &cd_S245C1);
    dp->~S245C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS245C1(Test_S245C1, "S245C1", ABISELECT(376,280));

#else // __cplusplus

extern void _ZN6S245C1C1Ev();
extern void _ZN6S245C1D1Ev();
Name_Map name_map_S245C1[] = {
  NSPAIR(_ZN6S245C1C1Ev),
  NSPAIR(_ZN6S245C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S245C6;
extern VTBL_ENTRY _ZTI6S245C6[];
extern  VTBL_ENTRY _ZTV6S245C6[];
extern Class_Descriptor cd_S245C5_nt;
extern VTBL_ENTRY _ZTI9S245C5_nt[];
extern  VTBL_ENTRY _ZTV9S245C5_nt[];
extern Class_Descriptor cd_S245C4_nt;
extern VTBL_ENTRY _ZTI9S245C4_nt[];
extern  VTBL_ENTRY _ZTV9S245C4_nt[];
extern Class_Descriptor cd_S245C3_nt;
extern VTBL_ENTRY _ZTI9S245C3_nt[];
extern  VTBL_ENTRY _ZTV9S245C3_nt[];
extern Class_Descriptor cd_S245C2_nt;
extern VTBL_ENTRY _ZTI9S245C2_nt[];
extern  VTBL_ENTRY _ZTV9S245C2_nt[];
static Base_Class bases_S245C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S245C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S245C5_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_S245C4_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_S245C3_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_S245C2_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 _ZTI6S245C1[];
extern void _ZN6S245C1D1Ev();
extern void _ZN6S245C1D0Ev();
extern void _ZN6S245C62v5Ev();
extern void _ZN6S245C62v6Ev();
extern void _ZN6S245C62v7Ev();
extern void _ZN6S245C62v8Ev();
extern void _ZN6S245C62v9Ev();
extern void _ZN6S245C63v10Ev();
extern void _ZN6S245C63v11Ev();
extern void _ZN6S245C63v12Ev();
extern void _ZN6S245C63v13Ev();
extern void _ZN6S245C63v14Ev();
extern void _ZN6S245C63v15Ev();
extern void _ZN6S245C63v16Ev();
extern void _ZN6S245C63v17Ev();
extern void _ZN6S245C63v18Ev();
extern void _ZN6S245C63v19Ev();
extern void _ZN6S245C63v20Ev();
extern void _ZN6S245C63v21Ev();
extern void _ZN6S245C63v22Ev();
extern void _ZN6S245C63v23Ev();
extern void _ZN6S245C63v24Ev();
extern void _ZN6S245C63v25Ev();
extern void _ZN6S245C63v26Ev();
extern void _ZN6S245C63v27Ev();
extern void _ZN6S245C63v28Ev();
extern void _ZN6S245C63v29Ev();
extern void _ZN6S245C63v30Ev();
extern void _ZN6S245C63v31Ev();
extern void _ZN6S245C63v32Ev();
extern void _ZN6S245C63v33Ev();
extern void _ZN6S245C63v34Ev();
extern void _ZN6S245C63v35Ev();
extern void _ZN6S245C63v36Ev();
extern void _ZN6S245C63v37Ev();
extern void _ZN6S245C63v38Ev();
extern void _ZN6S245C63v39Ev();
extern void _ZN6S245C63v40Ev();
extern void _ZN6S245C63v41Ev();
extern void _ZN6S245C63v42Ev();
extern void _ZN6S245C63v43Ev();
extern void _ZN6S245C63v44Ev();
extern void _ZN6S245C63v45Ev();
extern void _ZN6S245C63v46Ev();
extern void _ZN6S245C63v47Ev();
extern void _ZN6S245C63v48Ev();
extern void _ZN6S245C63v49Ev();
extern void _ZN6S245C63v50Ev();
extern void _ZN6S245C63v51Ev();
extern void _ZN6S245C63v52Ev();
extern void _ZN6S245C63v53Ev();
extern void _ZN6S245C63v54Ev();
extern void _ZN6S245C63v55Ev();
extern void _ZN6S245C63v56Ev();
extern void _ZN6S245C63v57Ev();
extern void _ZN6S245C63v58Ev();
extern void _ZN6S245C63v59Ev();
extern void _ZN6S245C63v60Ev();
extern void _ZN6S245C63v61Ev();
extern void _ZN6S245C63v62Ev();
extern void _ZN6S245C63v63Ev();
extern void _ZN6S245C63v64Ev();
extern void _ZN6S245C63v65Ev();
extern void _ZN6S245C63v66Ev();
extern void _ZN6S245C63v67Ev();
extern void _ZN6S245C63v68Ev();
extern void _ZN9S245C5_nt3v69Ev();
extern void _ZN9S245C5_nt3v70Ev();
extern void _ZN9S245C5_nt3v71Ev();
extern void _ZN9S245C5_nt3v72Ev();
extern void _ZN9S245C5_nt3v73Ev();
extern void _ZN9S245C5_nt3v74Ev();
extern void _ZN9S245C5_nt3v75Ev();
extern void _ZN9S245C5_nt3v76Ev();
extern void _ZN9S245C5_nt3v77Ev();
extern void _ZN9S245C5_nt3v78Ev();
extern void _ZN9S245C5_nt3v79Ev();
extern void _ZN9S245C5_nt3v80Ev();
extern void _ZN9S245C5_nt3v81Ev();
extern void _ZN9S245C5_nt3v82Ev();
extern void _ZN9S245C5_nt3v83Ev();
extern void _ZN9S245C5_nt3v84Ev();
extern void _ZN9S245C5_nt3v85Ev();
extern void _ZN9S245C5_nt3v86Ev();
extern void _ZN9S245C5_nt3v87Ev();
extern void _ZN9S245C5_nt3v88Ev();
extern void _ZN9S245C5_nt3v89Ev();
extern void _ZN9S245C5_nt3v90Ev();
extern void _ZN9S245C4_nt3v91Ev();
extern void _ZN9S245C4_nt3v92Ev();
extern void _ZN9S245C4_nt3v93Ev();
extern void _ZN9S245C4_nt3v94Ev();
extern void _ZN9S245C4_nt3v95Ev();
extern void _ZN9S245C4_nt3v96Ev();
extern void _ZN9S245C4_nt3v97Ev();
extern void _ZN9S245C4_nt3v98Ev();
extern void _ZN9S245C4_nt3v99Ev();
extern void _ZN9S245C4_nt4v100Ev();
extern void _ZN9S245C4_nt4v101Ev();
extern void _ZN9S245C4_nt4v102Ev();
extern void _ZN9S245C4_nt4v103Ev();
extern void _ZN9S245C4_nt4v104Ev();
extern void _ZN9S245C4_nt4v105Ev();
extern void _ZN9S245C4_nt4v106Ev();
extern void _ZN9S245C4_nt4v107Ev();
extern void _ZN9S245C4_nt4v108Ev();
extern void _ZN9S245C4_nt4v109Ev();
extern void _ZN9S245C4_nt4v110Ev();
extern void _ZN9S245C3_nt4v111Ev();
extern void _ZN9S245C3_nt4v112Ev();
extern void _ZN9S245C3_nt4v113Ev();
extern void _ZN9S245C3_nt4v114Ev();
extern void _ZN9S245C2_nt4v115Ev();
extern void _ZN9S245C2_nt4v116Ev();
extern void _ZN9S245C2_nt4v117Ev();
extern void _ZN9S245C2_nt4v118Ev();
extern void _ZN9S245C2_nt4v119Ev();
extern void _ZN9S245C2_nt4v120Ev();
extern void _ZN9S245C2_nt4v121Ev();
extern void _ZN9S245C2_nt4v122Ev();
extern void _ZN6S245C12v1Ev();
extern void _ZN6S245C12v2Ev();
extern void _ZN6S245C12v3Ev();
extern void _ZN6S245C12v4Ev();
static  VTBL_ENTRY vtc_S245C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S245C1[0]),
  (VTBL_ENTRY)&_ZN6S245C1D1Ev,
  (VTBL_ENTRY)&_ZN6S245C1D0Ev,
  (VTBL_ENTRY)&_ZN6S245C62v5Ev,
  (VTBL_ENTRY)&_ZN6S245C62v6Ev,
  (VTBL_ENTRY)&_ZN6S245C62v7Ev,
  (VTBL_ENTRY)&_ZN6S245C62v8Ev,
  (VTBL_ENTRY)&_ZN6S245C62v9Ev,
  (VTBL_ENTRY)&_ZN6S245C63v10Ev,
  (VTBL_ENTRY)&_ZN6S245C63v11Ev,
  (VTBL_ENTRY)&_ZN6S245C63v12Ev,
  (VTBL_ENTRY)&_ZN6S245C63v13Ev,
  (VTBL_ENTRY)&_ZN6S245C63v14Ev,
  (VTBL_ENTRY)&_ZN6S245C63v15Ev,
  (VTBL_ENTRY)&_ZN6S245C63v16Ev,
  (VTBL_ENTRY)&_ZN6S245C63v17Ev,
  (VTBL_ENTRY)&_ZN6S245C63v18Ev,
  (VTBL_ENTRY)&_ZN6S245C63v19Ev,
  (VTBL_ENTRY)&_ZN6S245C63v20Ev,
  (VTBL_ENTRY)&_ZN6S245C63v21Ev,
  (VTBL_ENTRY)&_ZN6S245C63v22Ev,
  (VTBL_ENTRY)&_ZN6S245C63v23Ev,
  (VTBL_ENTRY)&_ZN6S245C63v24Ev,
  (VTBL_ENTRY)&_ZN6S245C63v25Ev,
  (VTBL_ENTRY)&_ZN6S245C63v26Ev,
  (VTBL_ENTRY)&_ZN6S245C63v27Ev,
  (VTBL_ENTRY)&_ZN6S245C63v28Ev,
  (VTBL_ENTRY)&_ZN6S245C63v29Ev,
  (VTBL_ENTRY)&_ZN6S245C63v30Ev,
  (VTBL_ENTRY)&_ZN6S245C63v31Ev,
  (VTBL_ENTRY)&_ZN6S245C63v32Ev,
  (VTBL_ENTRY)&_ZN6S245C63v33Ev,
  (VTBL_ENTRY)&_ZN6S245C63v34Ev,
  (VTBL_ENTRY)&_ZN6S245C63v35Ev,
  (VTBL_ENTRY)&_ZN6S245C63v36Ev,
  (VTBL_ENTRY)&_ZN6S245C63v37Ev,
  (VTBL_ENTRY)&_ZN6S245C63v38Ev,
  (VTBL_ENTRY)&_ZN6S245C63v39Ev,
  (VTBL_ENTRY)&_ZN6S245C63v40Ev,
  (VTBL_ENTRY)&_ZN6S245C63v41Ev,
  (VTBL_ENTRY)&_ZN6S245C63v42Ev,
  (VTBL_ENTRY)&_ZN6S245C63v43Ev,
  (VTBL_ENTRY)&_ZN6S245C63v44Ev,
  (VTBL_ENTRY)&_ZN6S245C63v45Ev,
  (VTBL_ENTRY)&_ZN6S245C63v46Ev,
  (VTBL_ENTRY)&_ZN6S245C63v47Ev,
  (VTBL_ENTRY)&_ZN6S245C63v48Ev,
  (VTBL_ENTRY)&_ZN6S245C63v49Ev,
  (VTBL_ENTRY)&_ZN6S245C63v50Ev,
  (VTBL_ENTRY)&_ZN6S245C63v51Ev,
  (VTBL_ENTRY)&_ZN6S245C63v52Ev,
  (VTBL_ENTRY)&_ZN6S245C63v53Ev,
  (VTBL_ENTRY)&_ZN6S245C63v54Ev,
  (VTBL_ENTRY)&_ZN6S245C63v55Ev,
  (VTBL_ENTRY)&_ZN6S245C63v56Ev,
  (VTBL_ENTRY)&_ZN6S245C63v57Ev,
  (VTBL_ENTRY)&_ZN6S245C63v58Ev,
  (VTBL_ENTRY)&_ZN6S245C63v59Ev,
  (VTBL_ENTRY)&_ZN6S245C63v60Ev,
  (VTBL_ENTRY)&_ZN6S245C63v61Ev,
  (VTBL_ENTRY)&_ZN6S245C63v62Ev,
  (VTBL_ENTRY)&_ZN6S245C63v63Ev,
  (VTBL_ENTRY)&_ZN6S245C63v64Ev,
  (VTBL_ENTRY)&_ZN6S245C63v65Ev,
  (VTBL_ENTRY)&_ZN6S245C63v66Ev,
  (VTBL_ENTRY)&_ZN6S245C63v67Ev,
  (VTBL_ENTRY)&_ZN6S245C63v68Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S245C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S245C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S245C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S245C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN6S245C12v1Ev,
  (VTBL_ENTRY)&_ZN6S245C12v2Ev,
  (VTBL_ENTRY)&_ZN6S245C12v3Ev,
  (VTBL_ENTRY)&_ZN6S245C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S245C1[];
extern  VTBL_ENTRY _ZTV6S245C1[];
Class_Descriptor cd_S245C1 = {  "S245C1", // class name
  bases_S245C1, 5,
  &(vtc_S245C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,280), // object size
  NSPAIRA(_ZTI6S245C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S245C1),126, //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  S6002C5  {
  short s6002c5f0:6;
  long s6002c5f1;
  short s6002c5f2:4;
  __tsi64 s6002c5f3[13];
  void *s6002c5f4;
  virtual void  v5(); // _ZN7S6002C52v5Ev
  ~S6002C5(); // tgen
  S6002C5(); // tgen
};
//SIG(-1 S6002C5) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S6002C5 ::v5(){vfunc_called(this, "_ZN7S6002C52v5Ev");}
S6002C5 ::~S6002C5(){ note_dtor("S6002C5", this);} // tgen
S6002C5 ::S6002C5(){ note_ctor("S6002C5", this);} // tgen

static void Test_S6002C5()
{
  extern Class_Descriptor cd_S6002C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,32)];
    init_test(&cd_S6002C5, buf);
    S6002C5 *dp, &lv = *(dp=new (buf) S6002C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,124), "sizeof(S6002C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6002C5)");
    set_bf_and_test(lv, s6002c5f0, ABISELECT(8,4), 0, 6, 1, "S6002C5");
    set_bf_and_test(lv, s6002c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S6002C5");
    check_field_offset(lv, s6002c5f1, ABISELECT(16,8), "S6002C5.s6002c5f1");
    set_bf_and_test(lv, s6002c5f2, ABISELECT(24,12), 0, 4, 1, "S6002C5");
    set_bf_and_test(lv, s6002c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S6002C5");
    check_field_offset(lv, s6002c5f3, ABISELECT(32,16), "S6002C5.s6002c5f3");
    check_field_offset(lv, s6002c5f4, ABISELECT(136,120), "S6002C5.s6002c5f4");
    test_class_info(&lv, &cd_S6002C5);
    dp->~S6002C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C5(Test_S6002C5, "S6002C5", ABISELECT(144,124));

#else // __cplusplus

extern void _ZN7S6002C5C1Ev();
extern void _ZN7S6002C5D1Ev();
Name_Map name_map_S6002C5[] = {
  NSPAIR(_ZN7S6002C5C1Ev),
  NSPAIR(_ZN7S6002C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6002C5[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C5[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
Class_Descriptor cd_S6002C5 = {  "S6002C5", // class name
  0,0,//no base classes
  &(vtc_S6002C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI7S6002C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6002C5),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  S6002C4  {
  int s6002c4f0[2];
  __tsi64 s6002c4f1[2];
  ::S6002C5 s6002c4f2[3];
  virtual void  v2(); // _ZN7S6002C42v2Ev
  virtual void  v3(); // _ZN7S6002C42v3Ev
  virtual void  v4(); // _ZN7S6002C42v4Ev
  ~S6002C4(); // tgen
  S6002C4(); // tgen
};
//SIG(-1 S6002C4) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S6002C4 ::v2(){vfunc_called(this, "_ZN7S6002C42v2Ev");}
void  S6002C4 ::v3(){vfunc_called(this, "_ZN7S6002C42v3Ev");}
void  S6002C4 ::v4(){vfunc_called(this, "_ZN7S6002C42v4Ev");}
S6002C4 ::~S6002C4(){ note_dtor("S6002C4", this);} // tgen
S6002C4 ::S6002C4(){ note_ctor("S6002C4", this);} // tgen

static void Test_S6002C4()
{
  extern Class_Descriptor cd_S6002C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,101)];
    init_test(&cd_S6002C4, buf);
    S6002C4 *dp, &lv = *(dp=new (buf) S6002C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,400), "sizeof(S6002C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6002C4)");
    check_field_offset(lv, s6002c4f0, ABISELECT(8,4), "S6002C4.s6002c4f0");
    check_field_offset(lv, s6002c4f1, ABISELECT(16,12), "S6002C4.s6002c4f1");
    check_field_offset(lv, s6002c4f2, ABISELECT(32,28), "S6002C4.s6002c4f2");
    test_class_info(&lv, &cd_S6002C4);
    dp->~S6002C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C4(Test_S6002C4, "S6002C4", ABISELECT(464,400));

#else // __cplusplus

extern void _ZN7S6002C4C1Ev();
extern void _ZN7S6002C4D1Ev();
Name_Map name_map_S6002C4[] = {
  NSPAIR(_ZN7S6002C4C1Ev),
  NSPAIR(_ZN7S6002C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6002C4[];
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY vtc_S6002C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C4[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
Class_Descriptor cd_S6002C4 = {  "S6002C4", // class name
  0,0,//no base classes
  &(vtc_S6002C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI7S6002C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6002C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C9  {
  __tsi64 s6002c9f0;
  long double s6002c9f1;
  void *s6002c9f2;
  char s6002c9f3;
  ::S6002C5 s6002c9f4;
  void *s6002c9f5[2];
  __tsi64 s6002c9f6[8];
  short s6002c9f7;
  void *s6002c9f8;
  __tsi64 s6002c9f9:64;
  virtual void  v1(); // _ZN7S6002C92v1Ev
  ~S6002C9(); // tgen
  S6002C9(); // tgen
};
//SIG(-1 S6002C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


void  S6002C9 ::v1(){vfunc_called(this, "_ZN7S6002C92v1Ev");}
S6002C9 ::~S6002C9(){ note_dtor("S6002C9", this);} // tgen
S6002C9 ::S6002C9(){ note_ctor("S6002C9", this);} // tgen

static void Test_S6002C9()
{
  extern Class_Descriptor cd_S6002C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,62)];
    init_test(&cd_S6002C9, buf);
    S6002C9 *dp, &lv = *(dp=new (buf) S6002C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,244), "sizeof(S6002C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C9)");
    check_field_offset(lv, s6002c9f0, ABISELECT(8,4), "S6002C9.s6002c9f0");
    check_field_offset(lv, s6002c9f1, ABISELECT(16,12), "S6002C9.s6002c9f1");
    check_field_offset(lv, s6002c9f2, ABISELECT(32,24), "S6002C9.s6002c9f2");
    check_field_offset(lv, s6002c9f3, ABISELECT(40,28), "S6002C9.s6002c9f3");
    check_field_offset(lv, s6002c9f4, ABISELECT(48,32), "S6002C9.s6002c9f4");
    check_field_offset(lv, s6002c9f5, ABISELECT(192,156), "S6002C9.s6002c9f5");
    check_field_offset(lv, s6002c9f6, ABISELECT(208,164), "S6002C9.s6002c9f6");
    check_field_offset(lv, s6002c9f7, ABISELECT(272,228), "S6002C9.s6002c9f7");
    check_field_offset(lv, s6002c9f8, ABISELECT(280,232), "S6002C9.s6002c9f8");
    set_bf_and_test(lv, s6002c9f9, ABISELECT(288,236), 0, 64, 1, "S6002C9");
    set_bf_and_test(lv, s6002c9f9, ABISELECT(288,236), 0, 64, hide_sll(1LL<<63), "S6002C9");
    test_class_info(&lv, &cd_S6002C9);
    dp->~S6002C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C9(Test_S6002C9, "S6002C9", ABISELECT(304,244));

#else // __cplusplus

extern void _ZN7S6002C9C1Ev();
extern void _ZN7S6002C9D1Ev();
Name_Map name_map_S6002C9[] = {
  NSPAIR(_ZN7S6002C9C1Ev),
  NSPAIR(_ZN7S6002C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6002C9[];
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY vtc_S6002C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C9[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
Class_Descriptor cd_S6002C9 = {  "S6002C9", // class name
  0,0,//no base classes
  &(vtc_S6002C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI7S6002C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6002C9),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C8  : virtual S6002C5 {
  void *s6002c8f0;
  ::S6002C5 s6002c8f1;
  int s6002c8f2:3;
  ~S6002C8(); // tgen
  S6002C8(); // tgen
};
//SIG(-1 S6002C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S6002C8 ::~S6002C8(){ note_dtor("S6002C8", this);} // tgen
S6002C8 ::S6002C8(){ note_ctor("S6002C8", this);} // tgen

static void Test_S6002C8()
{
  extern Class_Descriptor cd_S6002C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,66)];
    init_test(&cd_S6002C8, buf);
    S6002C8 *dp, &lv = *(dp=new (buf) S6002C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,260), "sizeof(S6002C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6002C8)");
    check_base_class_offset(lv, (S6002C5*), ABISELECT(168,136), "S6002C8");
    check_field_offset(lv, s6002c8f0, ABISELECT(8,4), "S6002C8.s6002c8f0");
    check_field_offset(lv, s6002c8f1, ABISELECT(16,8), "S6002C8.s6002c8f1");
    set_bf_and_test(lv, s6002c8f2, ABISELECT(160,132), 0, 3, 1, "S6002C8");
    set_bf_and_test(lv, s6002c8f2, ABISELECT(160,132), 0, 3, hide_sll(1LL<<2), "S6002C8");
    test_class_info(&lv, &cd_S6002C8);
    dp->~S6002C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C8(Test_S6002C8, "S6002C8", ABISELECT(312,260));

#else // __cplusplus

extern void _ZN7S6002C8C1Ev();
extern void _ZN7S6002C8D1Ev();
Name_Map name_map_S6002C8[] = {
  NSPAIR(_ZN7S6002C8C1Ev),
  NSPAIR(_ZN7S6002C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
static Base_Class bases_S6002C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    ABISELECT(168,136), //bcp->offset
    3, //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 _ZTI7S6002C8[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C8[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6002C8[];
static  VTT_ENTRY vtt_S6002C8[] = {
  {&(_ZTV7S6002C8[3]),  3,7},
  {&(_ZTV7S6002C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
Class_Descriptor cd_S6002C8 = {  "S6002C8", // class name
  bases_S6002C8, 1,
  &(vtc_S6002C8[0]), // expected_vtbl_contents
  &(vtt_S6002C8[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI7S6002C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6002C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6002C8),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  S6002C7  : S6002C5 , virtual S6002C4 , virtual S6002C8 , virtual S6002C9 {
  ::S6002C9 s6002c7f0;
  short s6002c7f1;
  int s6002c7f2[2];
  ~S6002C7(); // tgen
  S6002C7(); // tgen
};
//SIG(-1 S6002C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v2 v3 v4 Fi[2] FL[2] FC2[3]} VBC4{ VBC2 Fp FC2 Fi:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S6002C7 ::~S6002C7(){ note_dtor("S6002C7", this);} // tgen
S6002C7 ::S6002C7(){ note_ctor("S6002C7", this);} // tgen

static void Test_S6002C7()
{
  extern Class_Descriptor cd_S6002C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,322)];
    init_test(&cd_S6002C7, buf);
    S6002C7 *dp, &lv = *(dp=new (buf) S6002C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,1284), "sizeof(S6002C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C7)");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), 0, "S6002C7");
    check_base_class_offset(lv, (S6002C4*), ABISELECT(464,380), "S6002C7");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(1096,916), "S6002C7");
    check_base_class_offset(lv, (S6002C8*), ABISELECT(928,780), "S6002C7");
    check_base_class_offset(lv, (S6002C9*), ABISELECT(1248,1040), "S6002C7");
    check_field_offset(lv, s6002c7f0, ABISELECT(144,124), "S6002C7.s6002c7f0");
    check_field_offset(lv, s6002c7f1, ABISELECT(448,368), "S6002C7.s6002c7f1");
    check_field_offset(lv, s6002c7f2, ABISELECT(452,372), "S6002C7.s6002c7f2");
    test_class_info(&lv, &cd_S6002C7);
    dp->~S6002C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C7(Test_S6002C7, "S6002C7", ABISELECT(1552,1284));

#else // __cplusplus

extern void _ZN7S6002C7C1Ev();
extern void _ZN7S6002C7D1Ev();
Name_Map name_map_S6002C7[] = {
  NSPAIR(_ZN7S6002C7C1Ev),
  NSPAIR(_ZN7S6002C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
static Base_Class bases_S6002C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(464,380), //bcp->offset
    7, //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},
  {&cd_S6002C5,    ABISELECT(1096,916), //bcp->offset
    18, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(928,780), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C9,    ABISELECT(1248,1040), //bcp->offset
    22, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6002C7[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY vtc_S6002C7[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S6002C7[];
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__7S6002C7[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C7[] = {
  {&(_ZTV7S6002C7[6]),  6,26},
  {&(_ZTV7S6002C7[12]),  12,26},
  {&(_ZTV7S6002C7[18]),  18,26},
  {&(_ZTV7S6002C7[21]),  21,26},
  {&(_ZTV7S6002C7[25]),  25,26},
  {&(_tg__ZTV7S6002C8__7S6002C7[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__7S6002C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
Class_Descriptor cd_S6002C7 = {  "S6002C7", // class name
  bases_S6002C7, 5,
  &(vtc_S6002C7[0]), // expected_vtbl_contents
  &(vtt_S6002C7[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI7S6002C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6002C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6002C7),7, //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  S6002C10  : S6002C9 , S6002C4 , S6002C5 {
  __tsi64 s6002c10f0[2];
  void *s6002c10f1[8];
  ::S6002C7 s6002c10f2;
  void *s6002c10f3;
  int s6002c10f4;
  ::S6002C7 s6002c10f5;
  int s6002c10f6;
  virtual  ~S6002C10(); // _ZN8S6002C10D1Ev
  virtual void  v6(); // _ZN8S6002C102v6Ev
  S6002C10(); // tgen
};
//SIG(-1 S6002C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S6002C10 ::~S6002C10(){ note_dtor("S6002C10", this);}
void  S6002C10 ::v6(){vfunc_called(this, "_ZN8S6002C102v6Ev");}
S6002C10 ::S6002C10(){ note_ctor("S6002C10", this);} // tgen

static void Test_S6002C10()
{
  extern Class_Descriptor cd_S6002C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,850)];
    init_test(&cd_S6002C10, buf);
    S6002C10 *dp, &lv = *(dp=new (buf) S6002C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,3396), "sizeof(S6002C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C10)");
    check_base_class_offset(lv, (S6002C9*), 0, "S6002C10");
    check_base_class_offset(lv, (S6002C4*), ABISELECT(296,244), "S6002C10");
    check_base_class_offset(lv, (S6002C5*), ABISELECT(760,644), "S6002C10");
    check_field_offset(lv, s6002c10f0, ABISELECT(904,768), "S6002C10.s6002c10f0");
    check_field_offset(lv, s6002c10f1, ABISELECT(920,784), "S6002C10.s6002c10f1");
    check_field_offset(lv, s6002c10f2, ABISELECT(992,816), "S6002C10.s6002c10f2");
    check_field_offset(lv, s6002c10f3, ABISELECT(2544,2100), "S6002C10.s6002c10f3");
    check_field_offset(lv, s6002c10f4, ABISELECT(2552,2104), "S6002C10.s6002c10f4");
    check_field_offset(lv, s6002c10f5, ABISELECT(2560,2108), "S6002C10.s6002c10f5");
    check_field_offset(lv, s6002c10f6, ABISELECT(4112,3392), "S6002C10.s6002c10f6");
    test_class_info(&lv, &cd_S6002C10);
    dp->~S6002C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C10(Test_S6002C10, "S6002C10", ABISELECT(4128,3396));

#else // __cplusplus

extern void _ZN8S6002C10C1Ev();
extern void _ZN8S6002C10D1Ev();
Name_Map name_map_S6002C10[] = {
  NSPAIR(_ZN8S6002C10C1Ev),
  NSPAIR(_ZN8S6002C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
static Base_Class bases_S6002C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6002C4,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_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_S6002C5,    ABISELECT(760,644), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C10[];
extern void _ZN7S6002C92v1Ev();
extern void _ZN8S6002C10D1Ev();
extern void _ZN8S6002C10D0Ev();
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C10[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6002C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S6002C10[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S6002C10[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
Class_Descriptor cd_S6002C10 = {  "S6002C10", // class name
  bases_S6002C10, 3,
  &(vtc_S6002C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI8S6002C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6002C10),14, //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  S6002C13  : S6002C9 {
  ::S6002C8 s6002c13f0;
  int s6002c13f1;
  void *s6002c13f2;
  int s6002c13f3;
  virtual  ~S6002C13(); // _ZN8S6002C13D1Ev
  virtual void  v10(); // _ZN8S6002C133v10Ev
  S6002C13(); // tgen
};
//SIG(-1 S6002C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


 S6002C13 ::~S6002C13(){ note_dtor("S6002C13", this);}
void  S6002C13 ::v10(){vfunc_called(this, "_ZN8S6002C133v10Ev");}
S6002C13 ::S6002C13(){ note_ctor("S6002C13", this);} // tgen

static void Test_S6002C13()
{
  extern Class_Descriptor cd_S6002C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,130)];
    init_test(&cd_S6002C13, buf);
    S6002C13 *dp, &lv = *(dp=new (buf) S6002C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,516), "sizeof(S6002C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C13)");
    check_base_class_offset(lv, (S6002C9*), 0, "S6002C13");
    check_field_offset(lv, s6002c13f0, ABISELECT(296,244), "S6002C13.s6002c13f0");
    check_field_offset(lv, s6002c13f1, ABISELECT(608,504), "S6002C13.s6002c13f1");
    check_field_offset(lv, s6002c13f2, ABISELECT(616,508), "S6002C13.s6002c13f2");
    check_field_offset(lv, s6002c13f3, ABISELECT(624,512), "S6002C13.s6002c13f3");
    test_class_info(&lv, &cd_S6002C13);
    dp->~S6002C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C13(Test_S6002C13, "S6002C13", ABISELECT(640,516));

#else // __cplusplus

extern void _ZN8S6002C13C1Ev();
extern void _ZN8S6002C13D1Ev();
Name_Map name_map_S6002C13[] = {
  NSPAIR(_ZN8S6002C13C1Ev),
  NSPAIR(_ZN8S6002C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
static Base_Class bases_S6002C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S6002C13[];
extern void _ZN7S6002C92v1Ev();
extern void _ZN8S6002C13D1Ev();
extern void _ZN8S6002C13D0Ev();
extern void _ZN8S6002C133v10Ev();
static  VTBL_ENTRY vtc_S6002C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C13[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6002C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C13D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C133v10Ev,
};
extern VTBL_ENTRY _ZTI8S6002C13[];
extern  VTBL_ENTRY _ZTV8S6002C13[];
Class_Descriptor cd_S6002C13 = {  "S6002C13", // class name
  bases_S6002C13, 1,
  &(vtc_S6002C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI8S6002C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6002C13),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  S6002C12  : virtual S6002C9 , virtual S6002C10 , virtual S6002C5 , virtual S6002C8 {
  __tsi64 s6002c12f0:44;
  void *s6002c12f1;
  int s6002c12f2;
  ::S6002C7 s6002c12f3;
  __tsi64 s6002c12f4[2];
  int s6002c12f5[3];
  ::S6002C10 s6002c12f6;
  char s6002c12f7:7;
  ::S6002C13 s6002c12f8;
  ~S6002C12(); // tgen
  S6002C12(); // tgen
};
//SIG(-1 S6002C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S6002C12 ::~S6002C12(){ note_dtor("S6002C12", this);} // tgen
S6002C12 ::S6002C12(){ note_ctor("S6002C12", this);} // tgen

static void Test_S6002C12()
{
  extern Class_Descriptor cd_S6002C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,2288)];
    init_test(&cd_S6002C12, buf);
    S6002C12 *dp, &lv = *(dp=new (buf) S6002C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,9148), "sizeof(S6002C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C12)");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*), ABISELECT(6400,5248), "S6002C12");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(6704,5492), "S6002C12");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(7000,5736), "S6002C12");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(7464,6136), "S6002C12");
    check_base_class_offset(lv, (S6002C10*), ABISELECT(6704,5492), "S6002C12");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), ABISELECT(10824,8888), "S6002C12");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(10824,8888), "S6002C12");
    check_base_class_offset(lv, (S6002C8*), ABISELECT(10968,9012), "S6002C12");
    set_bf_and_test(lv, s6002c12f0, ABISELECT(8,4), 0, 44, 1, "S6002C12");
    set_bf_and_test(lv, s6002c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S6002C12");
    check_field_offset(lv, s6002c12f1, ABISELECT(16,12), "S6002C12.s6002c12f1");
    check_field_offset(lv, s6002c12f2, ABISELECT(24,16), "S6002C12.s6002c12f2");
    check_field_offset(lv, s6002c12f3, ABISELECT(32,20), "S6002C12.s6002c12f3");
    check_field_offset(lv, s6002c12f4, ABISELECT(1584,1304), "S6002C12.s6002c12f4");
    check_field_offset(lv, s6002c12f5, ABISELECT(1600,1320), "S6002C12.s6002c12f5");
    check_field_offset(lv, s6002c12f6, ABISELECT(1616,1332), "S6002C12.s6002c12f6");
    set_bf_and_test(lv, s6002c12f7, ABISELECT(5744,4728), 0, 7, 1, "S6002C12");
    set_bf_and_test(lv, s6002c12f7, ABISELECT(5744,4728), 0, 7, hide_sll(1LL<<6), "S6002C12");
    check_field_offset(lv, s6002c12f8, ABISELECT(5760,4732), "S6002C12.s6002c12f8");
    test_class_info(&lv, &cd_S6002C12);
    dp->~S6002C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C12(Test_S6002C12, "S6002C12", ABISELECT(11136,9148));

#else // __cplusplus

extern void _ZN8S6002C12C1Ev();
extern void _ZN8S6002C12D1Ev();
Name_Map name_map_S6002C12[] = {
  NSPAIR(_ZN8S6002C12C1Ev),
  NSPAIR(_ZN8S6002C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
static Base_Class bases_S6002C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    ABISELECT(6400,5248), //bcp->offset
    8, //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_S6002C9,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(7000,5736), //bcp->offset
    25, //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
    4, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(7464,6136), //bcp->offset
    30, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(6704,5492), //bcp->offset
    12, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    ABISELECT(10824,8888), //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C8,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C12[];
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn6704_N8S6002C12D1Ev,_ZThn5492_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn6704_N8S6002C12D0Ev,_ZThn5492_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C12[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern VTBL_ENTRY _ZTV8S6002C12[];
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C12[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C12[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C12[] = {
  {&(_ZTV8S6002C12[6]),  6,40},
  {&(_ZTV8S6002C12[11]),  11,40},
  {&(_ZTV8S6002C12[21]),  21,40},
  {&(_ZTV8S6002C12[27]),  27,40},
  {&(_ZTV8S6002C12[32]),  32,40},
  {&(_ZTV8S6002C12[36]),  36,40},
  {&(_ZTV8S6002C12[40]),  40,40},
  {&(_tg__ZTV7S6002C8__8S6002C12[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6002C12D0Ev,_ZThn5492_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6002C12D1Ev,_ZThn5492_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C12 = {  "S6002C12", // class name
  bases_S6002C12, 7,
  &(vtc_S6002C12[0]), // expected_vtbl_contents
  &(vtt_S6002C12[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI8S6002C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6002C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C11  : virtual S6002C10 , virtual S6002C5 , virtual S6002C8 , S6002C7 , S6002C12 {
  ::S6002C10 s6002c11f0;
  __tsi64 s6002c11f1;
  char s6002c11f2:7;
  virtual void  v7(); // _ZN8S6002C112v7Ev
  ~S6002C11(); // tgen
  S6002C11(); // tgen
};
//SIG(-1 S6002C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S6002C11 ::v7(){vfunc_called(this, "_ZN8S6002C112v7Ev");}
S6002C11 ::~S6002C11(){ note_dtor("S6002C11", this);} // tgen
S6002C11 ::S6002C11(){ note_ctor("S6002C11", this);} // tgen

static void Test_S6002C11()
{
  extern Class_Descriptor cd_S6002C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,3335)];
    init_test(&cd_S6002C11, buf);
    S6002C11 *dp, &lv = *(dp=new (buf) S6002C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,13336), "sizeof(S6002C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C11)");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(11008,9036), "S6002C11");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(11304,9280), "S6002C11");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(11768,9680), "S6002C11");
    check_base_class_offset(lv, (S6002C10*), ABISELECT(11008,9036), "S6002C11");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*), ABISELECT(11008,9036), "S6002C11");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), ABISELECT(15128,12432), "S6002C11");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(15128,12432), "S6002C11");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*), ABISELECT(15128,12432), "S6002C11");
    check_base_class_offset(lv, (S6002C8*), ABISELECT(15272,12556), "S6002C11");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(15272,12556), "S6002C11");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*), ABISELECT(15272,12556), "S6002C11");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), 0, "S6002C11");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(15440,12692), "S6002C11");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(15904,13092), "S6002C11");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*), ABISELECT(15904,13092), "S6002C11");
    check_base_class_offset(lv, (S6002C7*), 0, "S6002C11");
    check_base_class_offset(lv, (S6002C12*), ABISELECT(464,380), "S6002C11");
    check_field_offset(lv, s6002c11f0, ABISELECT(6864,5628), "S6002C11.s6002c11f0");
    check_field_offset(lv, s6002c11f1, ABISELECT(10992,9024), "S6002C11.s6002c11f1");
    set_bf_and_test(lv, s6002c11f2, ABISELECT(11000,9032), 0, 7, 1, "S6002C11");
    set_bf_and_test(lv, s6002c11f2, ABISELECT(11000,9032), 0, 7, hide_sll(1LL<<6), "S6002C11");
    test_class_info(&lv, &cd_S6002C11);
    dp->~S6002C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C11(Test_S6002C11, "S6002C11", ABISELECT(16208,13336));

#else // __cplusplus

extern void _ZN8S6002C11C1Ev();
extern void _ZN8S6002C11D1Ev();
Name_Map name_map_S6002C11[] = {
  NSPAIR(_ZN8S6002C11C1Ev),
  NSPAIR(_ZN8S6002C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
static Base_Class bases_S6002C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    ABISELECT(11008,9036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6002C4,    ABISELECT(11304,9280), //bcp->offset
    32, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(11768,9680), //bcp->offset
    37, //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_S6002C10,    ABISELECT(11008,9036), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    ABISELECT(15128,12432), //bcp->offset
    40, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C8,    ABISELECT(15272,12556), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(15440,12692), //bcp->offset
    47, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(15904,13092), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6002C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S6002C12,    ABISELECT(464,380), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C11[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY vtc_S6002C11[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6002C11[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__8S6002C11[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__8S6002C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__8S6002C11[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__8S6002C11[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__8S6002C11[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C12__8S6002C11[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C12__8S6002C11[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C12__8S6002C11[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C12__8S6002C11[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C12__8S6002C11[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C12__8S6002C11[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C11[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C11[] = {
  {&(_ZTV8S6002C11[7]),  7,59},
  {&(_tg__ZTV7S6002C7__8S6002C11[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__8S6002C11[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__8S6002C11[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__8S6002C11[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__8S6002C11[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C12__8S6002C11[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C12__8S6002C11[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C12__8S6002C11[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C12__8S6002C11[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C12__8S6002C11[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C12__8S6002C11[3]),  3,3},
  {&(_ZTV8S6002C11[28]),  28,59},
  {&(_ZTV8S6002C11[34]),  34,59},
  {&(_ZTV8S6002C11[39]),  39,59},
  {&(_ZTV8S6002C11[43]),  43,59},
  {&(_ZTV8S6002C11[47]),  47,59},
  {&(_ZTV8S6002C11[52]),  52,59},
  {&(_ZTV8S6002C11[58]),  58,59},
  {&(_ZTV8S6002C11[17]),  17,59},
  {&(_tg__ZTV7S6002C8__8S6002C11[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C11 = {  "S6002C11", // class name
  bases_S6002C11, 11,
  &(vtc_S6002C11[0]), // expected_vtbl_contents
  &(vtt_S6002C11[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI8S6002C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6002C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C15  : virtual S6002C9 , S6002C4 , virtual S6002C11 {
  char s6002c15f0:8;
  int s6002c15f1;
  ~S6002C15(); // tgen
  S6002C15(); // tgen
};
//SIG(-1 S6002C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 FL[2] Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S6002C15 ::~S6002C15(){ note_dtor("S6002C15", this);} // tgen
S6002C15 ::S6002C15(){ note_ctor("S6002C15", this);} // tgen

static void Test_S6002C15()
{
  extern Class_Descriptor cd_S6002C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,3437)];
    init_test(&cd_S6002C15, buf);
    S6002C15 *dp, &lv = *(dp=new (buf) S6002C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,13744), "sizeof(S6002C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C15)");
    /*is_ambiguous_... S6002C15::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*), ABISELECT(480,408), "S6002C15");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(480,408), "S6002C15");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(480,408), "S6002C15");
    /*is_ambiguous_... S6002C15::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*), 0, "S6002C15");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(11792,9688), "S6002C15");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(12088,9932), "S6002C15");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(12552,10332), "S6002C15");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(11792,9688), "S6002C15");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(11792,9688), "S6002C15");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(15912,13084), "S6002C15");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(15912,13084), "S6002C15");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(15912,13084), "S6002C15");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(16056,13208), "S6002C15");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(16056,13208), "S6002C15");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(16056,13208), "S6002C15");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(784,652), "S6002C15");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(16224,13344), "S6002C15");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(784,652), "S6002C15");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(1248,1032), "S6002C15");
    check_base_class_offset(lv, (S6002C11*), ABISELECT(784,652), "S6002C15");
    set_bf_and_test(lv, s6002c15f0, ABISELECT(464,400), 0, 8, 1, "S6002C15");
    set_bf_and_test(lv, s6002c15f0, ABISELECT(464,400), 0, 8, hide_sll(1LL<<7), "S6002C15");
    check_field_offset(lv, s6002c15f1, ABISELECT(468,404), "S6002C15.s6002c15f1");
    test_class_info(&lv, &cd_S6002C15);
    dp->~S6002C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C15(Test_S6002C15, "S6002C15", ABISELECT(16688,13744));

#else // __cplusplus

extern void _ZN8S6002C15C1Ev();
extern void _ZN8S6002C15D1Ev();
Name_Map name_map_S6002C15[] = {
  NSPAIR(_ZN8S6002C15C1Ev),
  NSPAIR(_ZN8S6002C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
static Base_Class bases_S6002C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    ABISELECT(480,408), //bcp->offset
    13, //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_S6002C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C9,    ABISELECT(11792,9688), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(12088,9932), //bcp->offset
    52, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(12552,10332), //bcp->offset
    57, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(11792,9688), //bcp->offset
    39, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(15912,13084), //bcp->offset
    60, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(16056,13208), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(16224,13344), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    10, //immediately_derived
  0, 1},
  {&cd_S6002C7,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(1248,1032), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(784,652), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C15[];
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C15D1Ev();
extern void _ZN8S6002C15D0Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn784_N8S6002C15D1Ev,_ZThn652_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn784_N8S6002C15D0Ev,_ZThn652_N8S6002C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn11792_N8S6002C15D1Ev,_ZThn9688_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn11792_N8S6002C15D0Ev,_ZThn9688_N8S6002C15D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY vtc_S6002C15[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(-784,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-784,-652),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6002C15[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C15[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__8S6002C15[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C15[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C15[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C15[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C15[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__8S6002C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C15[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C15[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__8S6002C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__8S6002C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__8S6002C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__8S6002C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__8S6002C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C15[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C15[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C15[] = {
  {&(_ZTV8S6002C15[8]),  8,75},
  {&(_ZTV8S6002C15[16]),  16,75},
  {&(_ZTV8S6002C15[27]),  27,75},
  {&(_ZTV8S6002C15[48]),  48,75},
  {&(_ZTV8S6002C15[54]),  54,75},
  {&(_ZTV8S6002C15[59]),  59,75},
  {&(_ZTV8S6002C15[63]),  63,75},
  {&(_ZTV8S6002C15[67]),  67,75},
  {&(_ZTV8S6002C15[72]),  72,75},
  {&(_ZTV8S6002C15[37]),  37,75},
  {&(_tg__ZTV8S6002C11__8S6002C15[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__8S6002C15[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C15[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C15[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C15[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C15[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C15[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C15[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C15[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__8S6002C15[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C15[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C15[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__8S6002C15[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__8S6002C15[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__8S6002C15[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__8S6002C15[6]),  6,8},
  {&(_tg__ZTV7S6002C8__8S6002C15[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C15[];
extern  VTBL_ENTRY _ZTV8S6002C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C15[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6002C15D0Ev,_ZThn9688_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6002C15D1Ev,_ZThn9688_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6002C15D0Ev,_ZThn652_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6002C15D1Ev,_ZThn652_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C15 = {  "S6002C15", // class name
  bases_S6002C15, 13,
  &(vtc_S6002C15[0]), // expected_vtbl_contents
  &(vtt_S6002C15[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI8S6002C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6002C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C15),33, //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  S6002C6  : virtual S6002C5 , virtual S6002C7 , S6002C10 , S6002C11 {
  ::S6002C12 s6002c6f0;
  short s6002c6f1;
  int s6002c6f2:8;
  virtual void  v8(); // _ZN7S6002C62v8Ev
  virtual void  v9(); // _ZN7S6002C62v9Ev
  ~S6002C6(); // tgen
  S6002C6(); // tgen
};
//SIG(-1 S6002C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC5{ VBC2 Fp FC2 Fi:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 FL[2] Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 FL[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs Fi:8}


void  S6002C6 ::v8(){vfunc_called(this, "_ZN7S6002C62v8Ev");}
void  S6002C6 ::v9(){vfunc_called(this, "_ZN7S6002C62v9Ev");}
S6002C6 ::~S6002C6(){ note_dtor("S6002C6", this);} // tgen
S6002C6 ::S6002C6(){ note_ctor("S6002C6", this);} // tgen

static void Test_S6002C6()
{
  extern Class_Descriptor cd_S6002C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,6567)];
    init_test(&cd_S6002C6, buf);
    S6002C6 *dp, &lv = *(dp=new (buf) S6002C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,26264), "sizeof(S6002C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C6)");
    /*is_ambiguous_... S6002C6::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), ABISELECT(26280,21584), "S6002C6");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(26280,21584), "S6002C6");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(26280,21584), "S6002C6");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(26280,21584), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), ABISELECT(26432,21708), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(26896,22088), "S6002C6");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(26896,22088), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(27360,22488), "S6002C6");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(27360,22488), "S6002C6");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(27360,22488), "S6002C6");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(27360,22488), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(27536,22624), "S6002C6");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(27536,22624), "S6002C6");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(27536,22624), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*), ABISELECT(26432,21708), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*), 0, "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(296,244), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(760,644), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C10*), 0, "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(27840,22868), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(28136,23112), "S6002C6");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(28600,23512), "S6002C6");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(27840,22868), "S6002C6");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(27840,22868), "S6002C6");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(4128,3396), "S6002C6");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(4128,3396), "S6002C6");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(4592,3776), "S6002C6");
    check_base_class_offset(lv, (S6002C11*), ABISELECT(4128,3396), "S6002C6");
    check_field_offset(lv, s6002c6f0, ABISELECT(15136,12432), "S6002C6.s6002c6f0");
    check_field_offset(lv, s6002c6f1, ABISELECT(26272,21580), "S6002C6.s6002c6f1");
    set_bf_and_test(lv, s6002c6f2, ABISELECT(26274,21582), 0, 8, 1, "S6002C6");
    set_bf_and_test(lv, s6002c6f2, ABISELECT(26274,21582), 0, 8, hide_sll(1LL<<7), "S6002C6");
    test_class_info(&lv, &cd_S6002C6);
    dp->~S6002C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C6(Test_S6002C6, "S6002C6", ABISELECT(31968,26264));

#else // __cplusplus

extern void _ZN7S6002C6C1Ev();
extern void _ZN7S6002C6D1Ev();
Name_Map name_map_S6002C6[] = {
  NSPAIR(_ZN7S6002C6C1Ev),
  NSPAIR(_ZN7S6002C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
static Base_Class bases_S6002C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    ABISELECT(26280,21584), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    ABISELECT(26432,21708), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(26896,22088), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(27360,22488), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(27536,22624), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 1},
  {&cd_S6002C7,    ABISELECT(26432,21708), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(296,244), //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
    9, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(760,644), //bcp->offset
    19, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S6002C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C9,    ABISELECT(27840,22868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(28136,23112), //bcp->offset
    81, //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(28600,23512), //bcp->offset
    86, //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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(27840,22868), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(4592,3776), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(4128,3396), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6002C6[];
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C6D1Ev();
extern void _ZN7S6002C6D0Ev();
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev)();
extern void ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev)();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn27840_N7S6002C6D1Ev,_ZThn22868_N7S6002C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev)();
extern void ABISELECT(_ZThn27840_N7S6002C6D0Ev,_ZThn22868_N7S6002C6D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C6[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev),
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6002C6[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__7S6002C6[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__A1__7S6002C6[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__A1__7S6002C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__A1__7S6002C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__A1__7S6002C6[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__A1__7S6002C6[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__7S6002C6[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__7S6002C6[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn23248_N8S6002C12D1Ev,_ZThn19092_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn23248_N8S6002C12D0Ev,_ZThn19092_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__7S6002C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__7S6002C6[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__7S6002C6[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__7S6002C6[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__7S6002C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn23712_N8S6002C11D1Ev,_ZThn19472_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn23712_N8S6002C11D0Ev,_ZThn19472_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__7S6002C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__7S6002C6[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__7S6002C6[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__7S6002C6[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__7S6002C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__7S6002C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__7S6002C6[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__7S6002C6[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__7S6002C6[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__7S6002C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__7S6002C6[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__7S6002C6[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__7S6002C6[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C6[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__7S6002C6[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C6[] = {
  {&(_ZTV7S6002C6[8]),  8,89},
  {&(_tg__ZTV8S6002C11__7S6002C6[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__A1__7S6002C6[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__A1__7S6002C6[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__A1__7S6002C6[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__A1__7S6002C6[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__A1__7S6002C6[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__7S6002C6[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__7S6002C6[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__7S6002C6[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__7S6002C6[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__7S6002C6[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__7S6002C6[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__7S6002C6[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__7S6002C6[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__7S6002C6[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__7S6002C6[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__7S6002C6[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__7S6002C6[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__7S6002C6[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__7S6002C6[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__7S6002C6[6]),  6,8},
  {&(_ZTV7S6002C6[44]),  44,89},
  {&(_ZTV7S6002C6[52]),  52,89},
  {&(_ZTV7S6002C6[58]),  58,89},
  {&(_ZTV7S6002C6[64]),  64,89},
  {&(_ZTV7S6002C6[67]),  67,89},
  {&(_ZTV7S6002C6[29]),  29,89},
  {&(_ZTV7S6002C6[77]),  77,89},
  {&(_ZTV7S6002C6[83]),  83,89},
  {&(_ZTV7S6002C6[88]),  88,89},
  {&(_ZTV7S6002C6[39]),  39,89},
  {&(_tg__ZTV7S6002C7__7S6002C6[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__7S6002C6[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__7S6002C6[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__7S6002C6[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__7S6002C6[3]),  3,4},
  {&(_tg__ZTV7S6002C8__7S6002C6[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__7S6002C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6002C6[];
extern  VTBL_ENTRY _ZTV7S6002C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C6[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6002C11D0Ev,_ZThn19472_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6002C11D1Ev,_ZThn19472_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6002C12D0Ev,_ZThn19092_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6002C12D1Ev,_ZThn19092_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6002C6D0Ev,_ZThn22868_N7S6002C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6002C6D1Ev,_ZThn22868_N7S6002C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C6 = {  "S6002C6", // class name
  bases_S6002C6, 18,
  &(vtc_S6002C6[0]), // expected_vtbl_contents
  &(vtt_S6002C6[0]), // expected_vtt_contents
  ABISELECT(31968,26264), // object size
  NSPAIRA(_ZTI7S6002C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6002C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6002C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S6002C18  {
  __tsi64 s6002c18f0;
  int s6002c18f1;
  __tsi64 s6002c18f2;
  short s6002c18f3;
  int s6002c18f4;
  void  mf6002c18(); // _ZN8S6002C189mf6002c18Ev
};
//SIG(1 S6002C18) U1{ m FL Fi FL Fs Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S6002C17  : virtual S6002C4 , S6002C15 , virtual S6002C6 , S6002C12 , S6002C13 {
  ::S6002C18 s6002c17f0;
  __tsi64 s6002c17f1;
  long double s6002c17f2;
  void *s6002c17f3;
  __tsi64 s6002c17f4;
  int s6002c17f5;
  ::S6002C15 s6002c17f6;
  int s6002c17f7;
  ::S6002C5 s6002c17f8;
  virtual  ~S6002C17(); // _ZN8S6002C17D2Ev
  S6002C17(); // tgen
};
//SIG(-1 S6002C17) C1{ VBC2{ v1 v2 v3 Fi[2] FL[2] FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC4{ VBC5{ v4 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} BC2 VBC6{ VBC7{ BC5 BC2 BC3 vd v6 FL[2] Fp[8] FC8{ BC3 VBC2 VBC9{ VBC3 Fp FC3 Fi:3} VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC9 BC8 BC10{ VBC5 VBC7 VBC3 VBC9 FL:44 Fp Fi FC8 FL[2] Fi[3] FC7 Fc:7 FC11{ BC5 vd v10 FC9 Fi Fp Fi}} v7 FC7 FL Fc:7} Fc:8 Fi} VBC12{ VBC3 VBC8 BC7 BC6 v8 v9 FC10 Fs Fi:8} BC10 BC11 vd FU13{ m FL Fi FL Fs Fi} FL FD Fp FL Fi FC4 Fi FC3}


 S6002C17 ::~S6002C17(){ note_dtor("S6002C17", this);}
S6002C17 ::S6002C17(){ note_ctor("S6002C17", this);} // tgen

static void Test_S6002C17()
{
  extern Class_Descriptor cd_S6002C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4213,13848)];
    init_test(&cd_S6002C17, buf);
    S6002C17 *dp, &lv = *(dp=new (buf) S6002C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(67392,55388), "sizeof(S6002C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C17)");
    /*is_ambiguous_... S6002C17::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*), ABISELECT(24424,20088), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(24424,20088), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(24424,20088), "S6002C17");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(24424,20088), "S6002C17");
    /*is_ambiguous_... S6002C15::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C15*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(24896,20488), "S6002C17");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*), ABISELECT(24896,20488), "S6002C17");
    /*is_ambiguous_... S6002C15::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C15*), 0, "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(36208,29768), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(36504,30012), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(36968,30412), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(36208,29768), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(36208,29768), "S6002C17");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*)(S6002C6*), ABISELECT(36208,29768), "S6002C17");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(36208,29768), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C12*), ABISELECT(36208,29768), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(40328,33164), "S6002C17");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C6*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*)(S6002C6*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*), ABISELECT(40328,33164), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(40472,33288), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(40472,33288), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(40472,33288), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(40472,33288), "S6002C17");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*)(S6002C6*), ABISELECT(40472,33288), "S6002C17");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(40472,33288), "S6002C17");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(40472,33288), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C12*), ABISELECT(40472,33288), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(25200,20732), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(25200,20732), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(25664,21112), "S6002C17");
    check_base_class_offset(lv, (S6002C11*)(S6002C15*), ABISELECT(25200,20732), "S6002C17");
    check_base_class_offset(lv, (S6002C15*), 0, "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), ABISELECT(66928,55008), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*)(S6002C6*), ABISELECT(66928,55008), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*)(S6002C6*), ABISELECT(40640,33424), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*)(S6002C6*), ABISELECT(40936,33668), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*)(S6002C6*), ABISELECT(41400,34068), "S6002C17");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C6*), ABISELECT(40640,33424), "S6002C17");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(44768,36820), "S6002C17");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(44768,36820), "S6002C17");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(45232,37200), "S6002C17");
    check_base_class_offset(lv, (S6002C11*)(S6002C6*), ABISELECT(44768,36820), "S6002C17");
    check_base_class_offset(lv, (S6002C6*), ABISELECT(40640,33424), "S6002C17");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C12*), ABISELECT(480,408), "S6002C17");
    check_base_class_offset(lv, (S6002C9*)(S6002C13*), ABISELECT(6880,5656), "S6002C17");
    check_base_class_offset(lv, (S6002C13*), ABISELECT(6880,5656), "S6002C17");
    check_field_offset(lv, s6002c17f0, ABISELECT(7512,6172), "S6002C17.s6002c17f0");
    check_field_offset(lv, s6002c17f1, ABISELECT(7520,6180), "S6002C17.s6002c17f1");
    check_field_offset(lv, s6002c17f2, ABISELECT(7536,6188), "S6002C17.s6002c17f2");
    check_field_offset(lv, s6002c17f3, ABISELECT(7552,6200), "S6002C17.s6002c17f3");
    check_field_offset(lv, s6002c17f4, ABISELECT(7560,6204), "S6002C17.s6002c17f4");
    check_field_offset(lv, s6002c17f5, ABISELECT(7568,6212), "S6002C17.s6002c17f5");
    check_field_offset(lv, s6002c17f6, ABISELECT(7584,6216), "S6002C17.s6002c17f6");
    check_field_offset(lv, s6002c17f7, ABISELECT(24272,19960), "S6002C17.s6002c17f7");
    check_field_offset(lv, s6002c17f8, ABISELECT(24280,19964), "S6002C17.s6002c17f8");
    test_class_info(&lv, &cd_S6002C17);
    dp->~S6002C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C17(Test_S6002C17, "S6002C17", ABISELECT(67392,55388));

#else // __cplusplus

extern void _ZN8S6002C17C1Ev();
extern void _ZN8S6002C17D2Ev();
Name_Map name_map_S6002C17[] = {
  NSPAIR(_ZN8S6002C17C1Ev),
  NSPAIR(_ZN8S6002C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C15;
extern VTBL_ENTRY _ZTI8S6002C15[];
extern  VTBL_ENTRY _ZTV8S6002C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C15[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C6;
extern VTBL_ENTRY _ZTI7S6002C6[];
extern  VTBL_ENTRY _ZTV7S6002C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C6[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C13;
extern VTBL_ENTRY _ZTI8S6002C13[];
extern  VTBL_ENTRY _ZTV8S6002C13[];
static Base_Class bases_S6002C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C4,    ABISELECT(24424,20088), //bcp->offset
    29, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C9,    ABISELECT(24896,20488), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6002C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(36208,29768), //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(36504,30012), //bcp->offset
    76, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(36968,30412), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(36208,29768), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(40328,33164), //bcp->offset
    84, //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
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(40472,33288), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(25200,20732), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(25200,20732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(25664,21112), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(25200,20732), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6002C15,    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
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C5,    ABISELECT(66928,55008), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(66928,55008), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(40640,33424), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(40936,33668), //bcp->offset
    115, //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(41400,34068), //bcp->offset
    120, //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
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(40640,33424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(44768,36820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(44768,36820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(45232,37200), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(44768,36820), //bcp->offset
    123, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6002C6,    ABISELECT(40640,33424), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C12,    ABISELECT(480,408), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C9,    ABISELECT(6880,5656), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6002C13,    ABISELECT(6880,5656), //bcp->offset
    23, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C17[];
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C17D1Ev();
extern void _ZN8S6002C17D0Ev();
extern void ABISELECT(_ZThn480_N8S6002C17D1Ev,_ZThn408_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6002C17D0Ev,_ZThn408_N8S6002C17D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZThn6880_N8S6002C17D1Ev,_ZThn5656_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn6880_N8S6002C17D0Ev,_ZThn5656_N8S6002C17D0Ev)();
extern void _ZN8S6002C133v10Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C17D1Ev,_ZThn20732_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C17D0Ev,_ZThn20732_N8S6002C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6002C17D1Ev,_ZTvn380_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C17D0Ev,_ZTvn380_n40_N8S6002C17D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C17D1Ev,_ZThn29768_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C17D0Ev,_ZThn29768_N8S6002C17D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6002C17D1Ev,_ZThn33424_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6002C17D0Ev,_ZThn33424_N8S6002C17D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6002C17D1Ev,_ZTvn3396_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6002C17D0Ev,_ZTvn3396_n40_N8S6002C17D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6002C17D1Ev,_ZTvn3776_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6002C17D0Ev,_ZTvn3776_n40_N8S6002C17D0Ev)();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C17[] = {
  ABISELECT(66928,55008),
  ABISELECT(40640,33424),
  ABISELECT(24424,20088),
  ABISELECT(40472,33288),
  ABISELECT(40328,33164),
  ABISELECT(36208,29768),
  ABISELECT(25200,20732),
  ABISELECT(24896,20488),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C17D0Ev,
  ABISELECT(39992,32880),
  ABISELECT(39848,32756),
  ABISELECT(35728,29360),
  ABISELECT(24416,20080),
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6002C17D1Ev,_ZThn408_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6002C17D0Ev,_ZThn408_N8S6002C17D0Ev),
  ABISELECT(-6880,-5656),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6002C17D1Ev,_ZThn5656_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6002C17D0Ev,_ZThn5656_N8S6002C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-24424,-20088),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  0,
  ABISELECT(-24896,-20488),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(-25200,-20732),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  ABISELECT(-25200,-20732),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-25664,-21112),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C17D1Ev,_ZTvn380_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C17D0Ev,_ZTvn380_n40_N8S6002C17D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36208,-29768),
  0,
  ABISELECT(-36208,-29768),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-36504,-30012),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-36968,-30412),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-40328,-33164),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-40472,-33288),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-40640,-33424),
  0,
  ABISELECT(-4432,-3656),
  ABISELECT(-15744,-12936),
  ABISELECT(-168,-136),
  ABISELECT(-16216,-13336),
  ABISELECT(26288,21584),
  ABISELECT(-312,-260),
  ABISELECT(-40640,-33424),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
  ABISELECT(-40936,-33668),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-41400,-34068),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  ABISELECT(-44768,-36820),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6002C17D1Ev,_ZTvn3396_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6002C17D0Ev,_ZTvn3396_n40_N8S6002C17D0Ev),
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-45232,-37200),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6002C17D1Ev,_ZTvn3776_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6002C17D0Ev,_ZTvn3776_n40_N8S6002C17D0Ev),
  0,
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  ABISELECT(-66928,-55008),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6002C17[];
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C15D1Ev();
extern void _ZN8S6002C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C15__8S6002C17[] = {
  ABISELECT(24424,20088),
  ABISELECT(40472,33288),
  ABISELECT(40328,33164),
  ABISELECT(36208,29768),
  ABISELECT(25200,20732),
  ABISELECT(24896,20488),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C15__8S6002C17[] = {
  0,
  ABISELECT(-24896,-20488),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C15D1Ev,_ZThn20732_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C15D0Ev,_ZThn20732_N8S6002C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C15__8S6002C17[] = {
  ABISELECT(-25200,-20732),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  ABISELECT(-25200,-20732),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C15D1Ev,_ZThn29768_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C15D0Ev,_ZThn29768_N8S6002C15D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C15__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36208,-29768),
  0,
  ABISELECT(-36208,-29768),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C17[] = {
  ABISELECT(-36504,-30012),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C17[] = {
  ABISELECT(-36968,-30412),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C15__8S6002C17[] = {
  0,
  ABISELECT(-40328,-33164),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C15__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(-40472,-33288),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A2__8S6002C15__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-20088),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C17[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-25664,-21112),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev),
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C12__A2__8S6002C17[] = {
  ABISELECT(39992,32880),
  ABISELECT(39848,32756),
  ABISELECT(35728,29360),
  ABISELECT(24416,20080),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C12__A2__8S6002C17[] = {
  0,
  ABISELECT(-24416,-20080),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6002C12D1Ev,_ZThn29360_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6002C12D0Ev,_ZThn29360_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C12__A2__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-35728,-29360),
  0,
  ABISELECT(-35728,-29360),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C12__A2__8S6002C17[] = {
  ABISELECT(-36024,-29604),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C12__A2__8S6002C17[] = {
  ABISELECT(-36488,-30004),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C12__A2__8S6002C17[] = {
  0,
  ABISELECT(-39848,-32756),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C12__A2__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(-39992,-32880),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C17[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__8S6002C17[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C17[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C17[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C17[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C17[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C17[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C17[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C17[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C17[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C17[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__8S6002C17[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__8S6002C17[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__8S6002C17[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C17[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C17[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C6D1Ev();
extern void _ZN7S6002C6D0Ev();
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C6__8S6002C17[] = {
  ABISELECT(-4432,-3656),
  ABISELECT(-15744,-12936),
  ABISELECT(-168,-136),
  ABISELECT(-16216,-13336),
  ABISELECT(26288,21584),
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C117S6002C6__A2__8S6002C17[] = {
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C117S6002C6__A2__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,16732),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C117S6002C6__A2__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(4296,3532),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C117S6002C6__A2__8S6002C17[] = {
  0,
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C117S6002C6__A2__8S6002C17[] = {
  0,
  ABISELECT(19872,16332),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  0,
  ABISELECT(20336,16712),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(9024,7432),
  0,
  ABISELECT(9024,7432),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(8728,7188),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(8264,6788),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  0,
  ABISELECT(4904,4036),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(4760,3912),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8560,7052),
  0,
  ABISELECT(8560,7052),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(8264,6808),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(7800,6408),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C117S6002C6__A1__8S6002C17[] = {
  0,
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(4296,3532),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C117S6002C6__A1__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,16732),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C117S6002C6__A1__8S6002C17[] = {
  0,
  ABISELECT(19872,16332),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C117S6002C6__A1__8S6002C17[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C6__8S6002C17[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__7S6002C6__8S6002C17[] = {
  0,
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C6__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(16216,13336),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C6__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C6__8S6002C17[] = {
  0,
  ABISELECT(15744,12936),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C11__7S6002C6__8S6002C17[] = {
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__A1__7S6002C6__8S6002C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4432,3656),
  0,
  ABISELECT(4432,3656),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A2__7S6002C6__8S6002C17[] = {
  ABISELECT(4136,3412),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__A3__7S6002C6__8S6002C17[] = {
  ABISELECT(3672,3012),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__7S6002C6__8S6002C17[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__A1__8S6002C17[] = {
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__A1__8S6002C17[] = {
  0,
  0,
  0,
  ABISELECT(42504,34920),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__A1__8S6002C17[] = {
  ABISELECT(-144,-124),
  ABISELECT(26456,21720),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__A1__8S6002C17[] = {
  0,
  ABISELECT(26600,21844),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__A1__8S6002C17[] = {
  0,
  ABISELECT(42032,34520),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
static  VTT_ENTRY vtt_S6002C17[] = {
  {&(_ZTV8S6002C17[10]),  10,150},
  {&(_tg__ZTV8S6002C15__8S6002C17[8]),  8,13},
  {&(_tg__ZTV7S6002C9__8S6002C15__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C11__8S6002C15__8S6002C17[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C15__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C15__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C15__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A2__8S6002C15__8S6002C17[5]),  5,8},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C17[6]),  6,8},
  {&(_tg__ZTV8S6002C12__A2__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C12__A2__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C12__A2__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C12__A2__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C12__A2__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C12__A2__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C12__A2__8S6002C17[3]),  3,3},
  {&(_ZTV8S6002C17[34]),  34,150},
  {&(_ZTV8S6002C17[40]),  40,150},
  {&(_ZTV8S6002C17[51]),  51,150},
  {&(_ZTV8S6002C17[72]),  72,150},
  {&(_ZTV8S6002C17[78]),  78,150},
  {&(_ZTV8S6002C17[83]),  83,150},
  {&(_ZTV8S6002C17[87]),  87,150},
  {&(_ZTV8S6002C17[91]),  91,150},
  {&(_ZTV8S6002C17[61]),  61,150},
  {&(_ZTV8S6002C17[109]),  109,150},
  {&(_ZTV8S6002C17[149]),  149,150},
  {&(_ZTV8S6002C17[117]),  117,150},
  {&(_ZTV8S6002C17[122]),  122,150},
  {&(_ZTV8S6002C17[130]),  130,150},
  {&(_ZTV8S6002C17[140]),  140,150},
  {&(_ZTV8S6002C17[21]),  21,150},
  {&(_tg__ZTV8S6002C11__8S6002C17[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__8S6002C17[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C17[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C8__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C6__8S6002C17[8]),  8,14},
  {&(_tg__ZTV8S6002C117S6002C6__A1__8S6002C17[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C117S6002C6__A2__8S6002C17[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C117S6002C6__A2__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C117S6002C6__A2__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C117S6002C6__A2__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C117S6002C6__A2__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C117S6002C6__A1__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C117S6002C6__A1__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C117S6002C6__A1__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C117S6002C6__A1__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C117S6002C6__A1__8S6002C17[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C117S6002C6__A1__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C117S6002C6__A1__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C117S6002C6__A1__8S6002C17[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C117S6002C6__A1__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C117S6002C6__A1__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C117S6002C6__A1__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C117S6002C6__A1__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C117S6002C6__A1__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C5__7S6002C6__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C7__7S6002C6__8S6002C17[7]),  7,8},
  {&(_tg__ZTV7S6002C4__7S6002C6__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C6__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C9__7S6002C6__8S6002C17[3]),  3,4},
  {&(_tg__ZTV8S6002C11__7S6002C6__8S6002C17[7]),  7,11},
  {&(_tg__ZTV8S6002C10__A1__7S6002C6__8S6002C17[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A2__7S6002C6__8S6002C17[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__A3__7S6002C6__8S6002C17[2]),  2,3},
  {&(_tg__ZTV8S6002C128S6002C11__7S6002C6__8S6002C17[6]),  6,8},
  {&(_tg__ZTV7S6002C7__A1__8S6002C17[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__A1__8S6002C17[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__A1__8S6002C17[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__A1__8S6002C17[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__A1__8S6002C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C17[];
extern  VTBL_ENTRY _ZTV8S6002C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C17[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6002C12D0Ev,_ZThn29360_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6002C12D1Ev,_ZThn29360_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C15D0Ev,_ZThn29768_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C15D1Ev,_ZThn29768_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C15D0Ev,_ZThn20732_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C15D1Ev,_ZThn20732_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C17D0Ev,_ZThn29768_N8S6002C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C17D1Ev,_ZThn29768_N8S6002C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6002C17D0Ev,_ZThn33424_N8S6002C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C17D0Ev,_ZThn20732_N8S6002C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6002C17D1Ev,_ZThn33424_N8S6002C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C17D1Ev,_ZThn20732_N8S6002C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C17 = {  "S6002C17", // class name
  bases_S6002C17, 28,
  &(vtc_S6002C17[0]), // expected_vtbl_contents
  &(vtt_S6002C17[0]), // expected_vtt_contents
  ABISELECT(67392,55388), // object size
  NSPAIRA(_ZTI8S6002C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6002C17),150, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C17),94, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C16  : S6002C5 , virtual S6002C9 , virtual S6002C15 , S6002C7 , S6002C13 {
  int s6002c16f0;
  ::S6002C7 s6002c16f1;
  int s6002c16f2;
  short s6002c16f3;
  __tsi64 s6002c16f4:8;
  int s6002c16f5;
  virtual  ~S6002C16(); // _ZN8S6002C16D2Ev
  virtual void  v15(); // _ZN8S6002C163v15Ev
  S6002C16(); // tgen
};
//SIG(-1 S6002C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 FL[2] Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 FL[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S6002C16 ::~S6002C16(){ note_dtor("S6002C16", this);}
void  S6002C16 ::v15(){vfunc_called(this, "_ZN8S6002C163v15Ev");}
S6002C16 ::S6002C16(){ note_ctor("S6002C16", this);} // tgen

static void Test_S6002C16()
{
  extern Class_Descriptor cd_S6002C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,4017)];
    init_test(&cd_S6002C16, buf);
    S6002C16 *dp, &lv = *(dp=new (buf) S6002C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,16064), "sizeof(S6002C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C16)");
    /*is_ambiguous_... S6002C16::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), 0, "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*), ABISELECT(2816,2320), "S6002C16");
    /*is_ambiguous_... S6002C15::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C15*), ABISELECT(2816,2320), "S6002C16");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(2816,2320), "S6002C16");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(2816,2320), "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(2816,2320), "S6002C16");
    /*is_ambiguous_... S6002C15::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C15*), ABISELECT(3112,2564), "S6002C16");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(14592,12008), "S6002C16");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(14888,12252), "S6002C16");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(15352,12652), "S6002C16");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(14592,12008), "S6002C16");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(14592,12008), "S6002C16");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(18712,15404), "S6002C16");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(18712,15404), "S6002C16");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(18712,15404), "S6002C16");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(18856,15528), "S6002C16");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(18856,15528), "S6002C16");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(18856,15528), "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(18856,15528), "S6002C16");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(3584,2972), "S6002C16");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(19024,15664), "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(19024,15664), "S6002C16");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(3584,2972), "S6002C16");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(4048,3352), "S6002C16");
    check_base_class_offset(lv, (S6002C11*)(S6002C15*), ABISELECT(3584,2972), "S6002C16");
    check_base_class_offset(lv, (S6002C15*), ABISELECT(3112,2564), "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), ABISELECT(144,124), "S6002C16");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*), ABISELECT(144,124), "S6002C16");
    check_base_class_offset(lv, (S6002C9*)(S6002C13*), ABISELECT(608,504), "S6002C16");
    check_base_class_offset(lv, (S6002C13*), ABISELECT(608,504), "S6002C16");
    check_field_offset(lv, s6002c16f0, ABISELECT(1236,1020), "S6002C16.s6002c16f0");
    check_field_offset(lv, s6002c16f1, ABISELECT(1248,1024), "S6002C16.s6002c16f1");
    check_field_offset(lv, s6002c16f2, ABISELECT(2800,2308), "S6002C16.s6002c16f2");
    check_field_offset(lv, s6002c16f3, ABISELECT(2804,2312), "S6002C16.s6002c16f3");
    set_bf_and_test(lv, s6002c16f4, ABISELECT(2806,2314), 0, 8, 1, "S6002C16");
    set_bf_and_test(lv, s6002c16f4, ABISELECT(2806,2314), 0, 8, hide_sll(1LL<<7), "S6002C16");
    check_field_offset(lv, s6002c16f5, ABISELECT(2808,2316), "S6002C16.s6002c16f5");
    test_class_info(&lv, &cd_S6002C16);
    dp->~S6002C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C16(Test_S6002C16, "S6002C16", ABISELECT(19488,16064));

#else // __cplusplus

extern void _ZN8S6002C16C1Ev();
extern void _ZN8S6002C16D2Ev();
Name_Map name_map_S6002C16[] = {
  NSPAIR(_ZN8S6002C16C1Ev),
  NSPAIR(_ZN8S6002C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C15;
extern VTBL_ENTRY _ZTI8S6002C15[];
extern  VTBL_ENTRY _ZTV8S6002C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C15[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C13;
extern VTBL_ENTRY _ZTI8S6002C13[];
extern  VTBL_ENTRY _ZTV8S6002C13[];
static Base_Class bases_S6002C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C9,    ABISELECT(2816,2320), //bcp->offset
    26, //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
  1, 1},
  {&cd_S6002C4,    ABISELECT(3112,2564), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(14592,12008), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(14888,12252), //bcp->offset
    82, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(15352,12652), //bcp->offset
    87, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(14592,12008), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(18712,15404), //bcp->offset
    90, //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(18856,15528), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(19024,15664), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C7,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(4048,3352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(3584,2972), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6002C15,    ABISELECT(3112,2564), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    ABISELECT(144,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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(144,124), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C9,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6002C13,    ABISELECT(608,504), //bcp->offset
    20, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C16[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C16D1Ev();
extern void _ZN8S6002C16D0Ev();
extern void _ZN8S6002C163v15Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZThn608_N8S6002C16D1Ev,_ZThn504_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn608_N8S6002C16D0Ev,_ZThn504_N8S6002C16D0Ev)();
extern void _ZN8S6002C133v10Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn3112_N8S6002C16D1Ev,_ZThn2564_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn3112_N8S6002C16D0Ev,_ZThn2564_N8S6002C16D0Ev)() __attribute__((weak));
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn3584_N8S6002C16D1Ev,_ZThn2972_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn3584_N8S6002C16D0Ev,_ZThn2972_N8S6002C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6002C16D1Ev,_ZTvn380_n40_N8S6002C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C16D0Ev,_ZTvn380_n40_N8S6002C16D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn14592_N8S6002C16D1Ev,_ZThn12008_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn14592_N8S6002C16D0Ev,_ZThn12008_N8S6002C16D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY vtc_S6002C16[] = {
  ABISELECT(19024,15664),
  ABISELECT(18856,15528),
  ABISELECT(18712,15404),
  ABISELECT(14592,12008),
  ABISELECT(3584,2972),
  ABISELECT(3112,2564),
  ABISELECT(2816,2320),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C163v15Ev,
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6002C16D1Ev,_ZThn504_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6002C16D0Ev,_ZThn504_N8S6002C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C133v10Ev,
  0,
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(-3112,-2564),
  0,
  0,
  0,
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-3112,-2564),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev),
  ABISELECT(-3584,-2972),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-3584,-2972),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-4048,-3352),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C16D1Ev,_ZTvn380_n40_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C16D0Ev,_ZTvn380_n40_N8S6002C16D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-14592,-12008),
  0,
  ABISELECT(-14592,-12008),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-14888,-12252),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-15352,-12652),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-18856,-15528),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-15664),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6002C16[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__A1__8S6002C16[] = {
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__A1__8S6002C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-15540),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__A1__8S6002C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__A1__8S6002C16[] = {
  0,
  ABISELECT(-18568,-15280),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__A1__8S6002C16[] = {
  0,
  ABISELECT(-2672,-2196),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C15D1Ev();
extern void _ZN8S6002C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C15__8S6002C16[] = {
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C15__8S6002C16[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6002C15D1Ev,_ZThn408_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6002C15D0Ev,_ZThn408_N8S6002C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C15__8S6002C16[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6002C15D1Ev,_ZThn9444_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6002C15D0Ev,_ZThn9444_N8S6002C15D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C15__8S6002C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C16[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C16[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C15__8S6002C16[] = {
  0,
  ABISELECT(-15600,-12840),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C15__8S6002C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15744,-12964),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A2__8S6002C15__8S6002C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-13100),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C16[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__8S6002C16[] = {
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C16[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C16[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C16[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C16[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__8S6002C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C16[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C16[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__8S6002C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__8S6002C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__8S6002C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__8S6002C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__8S6002C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C16[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C16[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C16[] = {
  {&(_ZTV8S6002C16[9]),  9,105},
  {&(_tg__ZTV7S6002C7__A1__8S6002C16[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__A1__8S6002C16[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__A1__8S6002C16[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__A1__8S6002C16[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__A1__8S6002C16[3]),  3,4},
  {&(_ZTV8S6002C16[29]),  29,105},
  {&(_ZTV8S6002C16[42]),  42,105},
  {&(_ZTV8S6002C16[57]),  57,105},
  {&(_ZTV8S6002C16[78]),  78,105},
  {&(_ZTV8S6002C16[84]),  84,105},
  {&(_ZTV8S6002C16[89]),  89,105},
  {&(_ZTV8S6002C16[93]),  93,105},
  {&(_ZTV8S6002C16[97]),  97,105},
  {&(_ZTV8S6002C16[102]),  102,105},
  {&(_ZTV8S6002C16[67]),  67,105},
  {&(_ZTV8S6002C16[19]),  19,105},
  {&(_tg__ZTV8S6002C15__8S6002C16[8]),  8,13},
  {&(_tg__ZTV7S6002C9__8S6002C15__8S6002C16[3]),  3,4},
  {&(_tg__ZTV8S6002C11__8S6002C15__8S6002C16[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C15__8S6002C16[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C16[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C16[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C15__8S6002C16[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C15__8S6002C16[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A2__8S6002C15__8S6002C16[5]),  5,8},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C16[6]),  6,8},
  {&(_tg__ZTV8S6002C11__8S6002C16[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__8S6002C16[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__8S6002C16[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__8S6002C16[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C16[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C16[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C16[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C16[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C16[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__8S6002C16[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C16[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C16[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__8S6002C16[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__8S6002C16[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__8S6002C16[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__8S6002C16[6]),  6,8},
  {&(_tg__ZTV7S6002C8__8S6002C16[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C16[];
extern  VTBL_ENTRY _ZTV8S6002C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C16[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6002C15D0Ev,_ZThn9444_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6002C15D1Ev,_ZThn9444_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6002C15D0Ev,_ZThn408_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6002C15D1Ev,_ZThn408_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6002C16D0Ev,_ZThn12008_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6002C16D1Ev,_ZThn12008_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6002C16D0Ev,_ZThn2972_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6002C16D1Ev,_ZThn2972_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6002C16D0Ev,_ZThn2564_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6002C16D1Ev,_ZThn2564_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C16 = {  "S6002C16", // class name
  bases_S6002C16, 19,
  &(vtc_S6002C16[0]), // expected_vtbl_contents
  &(vtt_S6002C16[0]), // expected_vtt_contents
  ABISELECT(19488,16064), // object size
  NSPAIRA(_ZTI8S6002C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6002C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C21  : S6002C7 , virtual S6002C15 , S6002C16 {
  ::S6002C15 s6002c21f0;
  int s6002c21f1;
  int s6002c21f2;
  char s6002c21f3;
  int s6002c21f4;
  __tsi64 s6002c21f5;
  int s6002c21f6;
  int s6002c21f7;
  void *s6002c21f8;
  void *s6002c21f9;
  int s6002c21f10;
  int s6002c21f11;
  virtual void  v16(); // _ZN8S6002C213v16Ev
  virtual void  v17(); // _ZN8S6002C213v17Ev
  ~S6002C21(); // tgen
  S6002C21(); // tgen
};
//SIG(-1 S6002C21) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v4 v5 v6 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S6002C21 ::v16(){vfunc_called(this, "_ZN8S6002C213v16Ev");}
void  S6002C21 ::v17(){vfunc_called(this, "_ZN8S6002C213v17Ev");}
S6002C21 ::~S6002C21(){ note_dtor("S6002C21", this);} // tgen
S6002C21 ::S6002C21(){ note_ctor("S6002C21", this);} // tgen

static void Test_S6002C21()
{
  extern Class_Descriptor cd_S6002C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,7560)];
    init_test(&cd_S6002C21, buf);
    S6002C21 *dp, &lv = *(dp=new (buf) S6002C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,30236), "sizeof(S6002C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C21)");
    /*is_ambiguous_... S6002C21::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), 0, "S6002C21");
    /*is_ambiguous_... S6002C21::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(20024,16492), "S6002C21");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(20024,16492), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C16*), ABISELECT(20024,16492), "S6002C21");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(20656,17028), "S6002C21");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(20656,17028), "S6002C21");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(20656,17028), "S6002C21");
    /*is_ambiguous_... S6002C21::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(20488,16892), "S6002C21");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(20488,16892), "S6002C21");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(20488,16892), "S6002C21");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(20488,16892), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C16*), ABISELECT(20488,16892), "S6002C21");
    /*is_ambiguous_... S6002C21::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(20800,17152), "S6002C21");
    /*is_ambiguous_... S6002C15::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C15*), ABISELECT(20800,17152), "S6002C21");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(20800,17152), "S6002C21");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(20800,17152), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C16*), ABISELECT(20800,17152), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C16*), ABISELECT(20800,17152), "S6002C21");
    /*is_ambiguous_... S6002C21::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*), 0, "S6002C21");
    /*is_ambiguous_... S6002C15::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C15*), ABISELECT(21096,17396), "S6002C21");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(32576,26840), "S6002C21");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(32872,27084), "S6002C21");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(33336,27484), "S6002C21");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(32576,26840), "S6002C21");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(32576,26840), "S6002C21");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(21568,17804), "S6002C21");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(21568,17804), "S6002C21");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(22032,18184), "S6002C21");
    check_base_class_offset(lv, (S6002C11*)(S6002C15*), ABISELECT(21568,17804), "S6002C21");
    check_base_class_offset(lv, (S6002C15*), ABISELECT(21096,17396), "S6002C21");
    check_base_class_offset(lv, (S6002C15*)(S6002C16*), ABISELECT(21096,17396), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C16*), ABISELECT(464,380), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C16*), ABISELECT(608,504), "S6002C21");
    /*is_ambiguous_... S6002C16::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*)(S6002C16*), ABISELECT(608,504), "S6002C21");
    check_base_class_offset(lv, (S6002C9*)(S6002C13*)(S6002C16*), ABISELECT(1072,884), "S6002C21");
    check_base_class_offset(lv, (S6002C13*)(S6002C16*), ABISELECT(1072,884), "S6002C21");
    check_base_class_offset(lv, (S6002C16*), ABISELECT(464,380), "S6002C21");
    check_field_offset(lv, s6002c21f0, ABISELECT(3280,2700), "S6002C21.s6002c21f0");
    check_field_offset(lv, s6002c21f1, ABISELECT(19968,16444), "S6002C21.s6002c21f1");
    check_field_offset(lv, s6002c21f2, ABISELECT(19972,16448), "S6002C21.s6002c21f2");
    check_field_offset(lv, s6002c21f3, ABISELECT(19976,16452), "S6002C21.s6002c21f3");
    check_field_offset(lv, s6002c21f4, ABISELECT(19980,16456), "S6002C21.s6002c21f4");
    check_field_offset(lv, s6002c21f5, ABISELECT(19984,16460), "S6002C21.s6002c21f5");
    check_field_offset(lv, s6002c21f6, ABISELECT(19992,16468), "S6002C21.s6002c21f6");
    check_field_offset(lv, s6002c21f7, ABISELECT(19996,16472), "S6002C21.s6002c21f7");
    check_field_offset(lv, s6002c21f8, ABISELECT(20000,16476), "S6002C21.s6002c21f8");
    check_field_offset(lv, s6002c21f9, ABISELECT(20008,16480), "S6002C21.s6002c21f9");
    check_field_offset(lv, s6002c21f10, ABISELECT(20016,16484), "S6002C21.s6002c21f10");
    check_field_offset(lv, s6002c21f11, ABISELECT(20020,16488), "S6002C21.s6002c21f11");
    test_class_info(&lv, &cd_S6002C21);
    dp->~S6002C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C21(Test_S6002C21, "S6002C21", ABISELECT(36704,30236));

#else // __cplusplus

extern void _ZN8S6002C21C1Ev();
extern void _ZN8S6002C21D1Ev();
Name_Map name_map_S6002C21[] = {
  NSPAIR(_ZN8S6002C21C1Ev),
  NSPAIR(_ZN8S6002C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C15;
extern VTBL_ENTRY _ZTI8S6002C15[];
extern  VTBL_ENTRY _ZTV8S6002C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C15[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C13;
extern VTBL_ENTRY _ZTI8S6002C13[];
extern  VTBL_ENTRY _ZTV8S6002C13[];
extern Class_Descriptor cd_S6002C16;
extern VTBL_ENTRY _ZTI8S6002C16[];
extern  VTBL_ENTRY _ZTV8S6002C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C16[];
static Base_Class bases_S6002C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(20024,16492), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(20656,17028), //bcp->offset
    51, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(20488,16892), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(20800,17152), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 1},
  {&cd_S6002C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S6002C4,    ABISELECT(21096,17396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(32576,26840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(32872,27084), //bcp->offset
    111, //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(33336,27484), //bcp->offset
    116, //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(32576,26840), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(21568,17804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(21568,17804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(22032,18184), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(21568,17804), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6002C15,    ABISELECT(21096,17396), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    ABISELECT(464,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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(608,504), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(1072,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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6002C13,    ABISELECT(1072,884), //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
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6002C16,    ABISELECT(464,380), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C21[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C213v16Ev();
extern void _ZN8S6002C213v17Ev();
extern void _ZN8S6002C21D1Ev();
extern void _ZN8S6002C21D0Ev();
extern void _ZN7S6002C52v5Ev();
extern void ABISELECT(_ZThn464_N8S6002C21D1Ev,_ZThn380_N8S6002C21D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C21D0Ev,_ZThn380_N8S6002C21D0Ev)();
extern void _ZN8S6002C163v15Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZThn1072_N8S6002C21D1Ev,_ZThn884_N8S6002C21D1Ev)();
extern void ABISELECT(_ZThn1072_N8S6002C21D0Ev,_ZThn884_N8S6002C21D0Ev)();
extern void _ZN8S6002C133v10Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6002C21D1Ev,_ZTv0_n48_N8S6002C21D1Ev)();
extern void ABISELECT(_ZThn21096_N8S6002C21D1Ev,_ZThn17396_N8S6002C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6002C21D0Ev,_ZTv0_n48_N8S6002C21D0Ev)();
extern void ABISELECT(_ZThn21096_N8S6002C21D0Ev,_ZThn17396_N8S6002C21D0Ev)() __attribute__((weak));
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C21D1Ev,_ZTv0_n40_N8S6002C21D1Ev)();
extern void ABISELECT(_ZThn21568_N8S6002C21D1Ev,_ZThn17804_N8S6002C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C21D0Ev,_ZTv0_n40_N8S6002C21D0Ev)();
extern void ABISELECT(_ZThn21568_N8S6002C21D0Ev,_ZThn17804_N8S6002C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6002C21D1Ev,_ZTvn380_n40_N8S6002C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C21D0Ev,_ZTvn380_n40_N8S6002C21D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C21D1Ev,_ZTv0_n16_N8S6002C21D1Ev)();
extern void ABISELECT(_ZThn32576_N8S6002C21D1Ev,_ZThn26840_N8S6002C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C21D0Ev,_ZTv0_n16_N8S6002C21D0Ev)();
extern void ABISELECT(_ZThn32576_N8S6002C21D0Ev,_ZThn26840_N8S6002C21D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C21[] = {
  ABISELECT(32576,26840),
  ABISELECT(21568,17804),
  ABISELECT(21096,17396),
  ABISELECT(20800,17152),
  ABISELECT(20656,17028),
  ABISELECT(20488,16892),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C213v16Ev,
  (VTBL_ENTRY)&_ZN8S6002C213v17Ev,
  (VTBL_ENTRY)&_ZN8S6002C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C21D0Ev,
  ABISELECT(19560,16112),
  ABISELECT(20024,16512),
  ABISELECT(20192,16648),
  ABISELECT(32112,26460),
  ABISELECT(21104,17424),
  ABISELECT(20632,17016),
  ABISELECT(20336,16772),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C21D1Ev,_ZThn380_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C21D0Ev,_ZThn380_N8S6002C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C163v15Ev,
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-1072,-884),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6002C21D1Ev,_ZThn884_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6002C21D0Ev,_ZThn884_N8S6002C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(168,136),
  ABISELECT(-20488,-16892),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  0,
  ABISELECT(-20656,-17028),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-20800,-17152),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(-21096,-17396),
  0,
  0,
  0,
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-21096,-17396),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C21D1Ev,_ZTv0_n48_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C21D0Ev,_ZTv0_n48_N8S6002C21D0Ev),
  ABISELECT(-21568,-17804),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-21568,-17804),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C21D1Ev,_ZTv0_n40_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C21D0Ev,_ZTv0_n40_N8S6002C21D0Ev),
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-22032,-18184),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C21D1Ev,_ZTvn380_n40_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C21D0Ev,_ZTvn380_n40_N8S6002C21D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-32576,-26840),
  0,
  ABISELECT(-32576,-26840),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C21D1Ev,_ZTv0_n16_N8S6002C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C21D0Ev,_ZTv0_n16_N8S6002C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-32872,-27084),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-33336,-27484),
  (VTBL_ENTRY)&(_ZTI8S6002C21[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6002C21[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__8S6002C21[] = {
  ABISELECT(20800,17152),
  ABISELECT(20656,17028),
  ABISELECT(20488,16892),
  ABISELECT(20024,16492),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-16492),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(-20488,-16892),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__8S6002C21[] = {
  0,
  ABISELECT(-20656,-17028),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__8S6002C21[] = {
  0,
  ABISELECT(-20800,-17152),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C16D1Ev();
extern void _ZN8S6002C16D0Ev();
extern void _ZN8S6002C163v15Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C16__8S6002C21[] = {
  ABISELECT(19560,16112),
  ABISELECT(20024,16512),
  ABISELECT(20192,16648),
  ABISELECT(32112,26460),
  ABISELECT(21104,17424),
  ABISELECT(20632,17016),
  ABISELECT(20336,16772),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C163v15Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C16__A2__8S6002C21[] = {
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C16__A2__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-15988),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C16__A2__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(-19880,-16388),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C16__A2__8S6002C21[] = {
  0,
  ABISELECT(-20048,-16524),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C16__A2__8S6002C21[] = {
  0,
  ABISELECT(-20192,-16648),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C16__8S6002C21[] = {
  0,
  ABISELECT(-20336,-16772),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn20632_N8S6002C16D1Ev,_ZThn17016_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn20632_N8S6002C16D0Ev,_ZThn17016_N8S6002C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C15__8S6002C16__8S6002C21[] = {
  ABISELECT(-20632,-17016),
  0,
  0,
  0,
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-20632,-17016),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev),
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn21104_N8S6002C16D1Ev,_ZThn17424_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn21104_N8S6002C16D0Ev,_ZThn17424_N8S6002C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C16__8S6002C21[] = {
  ABISELECT(-21104,-17424),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-21104,-17424),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev)();
extern void ABISELECT(_ZThn32112_N8S6002C16D1Ev,_ZThn26460_N8S6002C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev)();
extern void ABISELECT(_ZThn32112_N8S6002C16D0Ev,_ZThn26460_N8S6002C16D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C16__8S6002C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-32112,-26460),
  0,
  ABISELECT(-32112,-26460),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C16__8S6002C21[] = {
  ABISELECT(-32408,-26704),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__A1__8S6002C16__8S6002C21[] = {
  ABISELECT(-32872,-27104),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A2__8S6002C16__8S6002C21[] = {
  0,
  ABISELECT(-20192,-16648),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C16__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(-20024,-16512),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A2__8S6002C16__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-16112),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C16D1Ev,_ZTvn380_n40_N8S6002C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C16D0Ev,_ZTvn380_n40_N8S6002C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C16__8S6002C21[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-21568,-17804),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C16D1Ev,_ZTvn380_n40_N8S6002C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C16D0Ev,_ZTvn380_n40_N8S6002C16D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__A1__8S6002C16__8S6002C21[] = {
  ABISELECT(20192,16648),
  ABISELECT(20048,16524),
  ABISELECT(19880,16388),
  ABISELECT(19416,15988),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI8S6002C16[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C21[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C21[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C15D1Ev();
extern void _ZN8S6002C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C15__8S6002C21[] = {
  ABISELECT(-1072,-904),
  ABISELECT(-608,-504),
  ABISELECT(-440,-368),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C15__8S6002C21[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6002C15D1Ev,_ZThn408_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6002C15D0Ev,_ZThn408_N8S6002C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C15__8S6002C21[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6002C15D1Ev,_ZThn9444_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6002C15D0Ev,_ZThn9444_N8S6002C15D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C15__8S6002C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C21[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C21[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C15__8S6002C21[] = {
  0,
  ABISELECT(440,368),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C15__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(608,504),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A2__8S6002C15__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(1072,904),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C21[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C21[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__A1__8S6002C21[] = {
  ABISELECT(-768,-652),
  ABISELECT(-912,-776),
  ABISELECT(-1080,-912),
  ABISELECT(-1544,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__A1__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1312),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__A1__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(1080,912),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__A1__8S6002C21[] = {
  0,
  ABISELECT(912,776),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__A1__8S6002C21[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C21[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C21[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C21[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C21[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C21[] = {
  0,
  ABISELECT(1376,1156),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(1544,1292),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__8S6002C21[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C21[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C21[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__8S6002C21[] = {
  0,
  ABISELECT(912,776),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__8S6002C21[] = {
  ABISELECT(168,136),
  ABISELECT(1080,912),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__8S6002C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1312),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__8S6002C21[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__8S6002C21[] = {
  ABISELECT(-1544,-1292),
  ABISELECT(-1376,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
static  VTT_ENTRY vtt_S6002C21[] = {
  {&(_ZTV8S6002C21[9]),  9,119},
  {&(_tg__ZTV7S6002C7__8S6002C21[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__8S6002C21[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C16__8S6002C21[9]),  9,13},
  {&(_tg__ZTV7S6002C78S6002C16__A2__8S6002C21[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C16__A2__8S6002C21[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C16__A2__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C16__A2__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C16__A2__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C9__8S6002C16__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C15__8S6002C16__8S6002C21[12]),  12,17},
  {&(_tg__ZTV8S6002C11__8S6002C16__8S6002C21[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C16__8S6002C21[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C16__8S6002C21[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__A1__8S6002C16__8S6002C21[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A2__8S6002C16__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C16__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A2__8S6002C16__8S6002C21[5]),  5,8},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C16__8S6002C21[6]),  6,8},
  {&(_tg__ZTV7S6002C7__A1__8S6002C16__8S6002C21[6]),  6,7},
  {&(_ZTV8S6002C21[45]),  45,119},
  {&(_ZTV8S6002C21[51]),  51,119},
  {&(_ZTV8S6002C21[54]),  54,119},
  {&(_ZTV8S6002C21[58]),  58,119},
  {&(_ZTV8S6002C21[71]),  71,119},
  {&(_ZTV8S6002C21[86]),  86,119},
  {&(_ZTV8S6002C21[107]),  107,119},
  {&(_ZTV8S6002C21[113]),  113,119},
  {&(_ZTV8S6002C21[118]),  118,119},
  {&(_ZTV8S6002C21[96]),  96,119},
  {&(_ZTV8S6002C21[23]),  23,119},
  {&(_ZTV8S6002C21[33]),  33,119},
  {&(_tg__ZTV7S6002C8__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C15__8S6002C21[8]),  8,13},
  {&(_tg__ZTV7S6002C9__8S6002C15__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C11__8S6002C15__8S6002C21[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C15__8S6002C21[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C15__8S6002C21[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C15__8S6002C21[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C15__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C15__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A2__8S6002C15__8S6002C21[5]),  5,8},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C15__8S6002C21[6]),  6,8},
  {&(_tg__ZTV8S6002C11__8S6002C21[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__A1__8S6002C21[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__A1__8S6002C21[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__A1__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__A1__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__A1__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C21[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__8S6002C21[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__8S6002C21[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__8S6002C21[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__8S6002C21[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__8S6002C21[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__8S6002C21[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__8S6002C21[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__8S6002C21[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__8S6002C21[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__8S6002C21[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__8S6002C21[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__8S6002C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S6002C21[];
extern  VTBL_ENTRY _ZTV8S6002C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C21[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6002C15D0Ev,_ZThn9444_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6002C15D1Ev,_ZThn9444_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6002C15D0Ev,_ZThn408_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6002C15D1Ev,_ZThn408_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C16D0Ev,_ZTv0_n16_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6002C16D0Ev,_ZThn26460_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C16D1Ev,_ZTv0_n16_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6002C16D1Ev,_ZThn26460_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C16D0Ev,_ZTv0_n40_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6002C16D0Ev,_ZThn17424_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C16D1Ev,_ZTv0_n40_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6002C16D1Ev,_ZThn17424_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C16D0Ev,_ZTv0_n48_N8S6002C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6002C16D0Ev,_ZThn17016_N8S6002C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C16D1Ev,_ZTv0_n48_N8S6002C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6002C16D1Ev,_ZThn17016_N8S6002C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C21D0Ev,_ZTv0_n16_N8S6002C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6002C21D0Ev,_ZThn26840_N8S6002C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C21D1Ev,_ZTv0_n16_N8S6002C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6002C21D1Ev,_ZThn26840_N8S6002C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C21D0Ev,_ZTv0_n40_N8S6002C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6002C21D0Ev,_ZThn17804_N8S6002C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C21D1Ev,_ZTv0_n40_N8S6002C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6002C21D1Ev,_ZThn17804_N8S6002C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C21D0Ev,_ZTv0_n48_N8S6002C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6002C21D0Ev,_ZThn17396_N8S6002C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6002C21D1Ev,_ZTv0_n48_N8S6002C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6002C21D1Ev,_ZThn17396_N8S6002C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C21 = {  "S6002C21", // class name
  bases_S6002C21, 22,
  &(vtc_S6002C21[0]), // expected_vtbl_contents
  &(vtt_S6002C21[0]), // expected_vtt_contents
  ABISELECT(36704,30236), // object size
  NSPAIRA(_ZTI8S6002C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6002C21),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C21),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C19  {
  ::S19762C18_nt s6002c19f0;
  ::S6002C21 s6002c19f1;
  int s6002c19f2;
  char s6002c19f3:5;
  virtual void  v11(); // _ZN8S6002C193v11Ev
  ~S6002C19(); // tgen
  S6002C19(); // tgen
};
//SIG(-1 S6002C19) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[13] Fp} VBC6{ v5 v6 v7 Fi[2] FL[2] FC5[3]} VBC7{ VBC5 Fp FC5 Fi:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] FL[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 FL[2] Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 FL[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S6002C19 ::v11(){vfunc_called(this, "_ZN8S6002C193v11Ev");}
S6002C19 ::~S6002C19(){ note_dtor("S6002C19", this);} // tgen
S6002C19 ::S6002C19(){ note_ctor("S6002C19", this);} // tgen

static void Test_S6002C19()
{
  extern Class_Descriptor cd_S6002C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,7564)];
    init_test(&cd_S6002C19, buf);
    S6002C19 *dp, &lv = *(dp=new (buf) S6002C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,30252), "sizeof(S6002C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C19)");
    check_field_offset(lv, s6002c19f0, ABISELECT(8,4), "S6002C19.s6002c19f0");
    check_field_offset(lv, s6002c19f1, ABISELECT(16,8), "S6002C19.s6002c19f1");
    check_field_offset(lv, s6002c19f2, ABISELECT(36720,30244), "S6002C19.s6002c19f2");
    set_bf_and_test(lv, s6002c19f3, ABISELECT(36724,30248), 0, 5, 1, "S6002C19");
    set_bf_and_test(lv, s6002c19f3, ABISELECT(36724,30248), 0, 5, hide_sll(1LL<<4), "S6002C19");
    test_class_info(&lv, &cd_S6002C19);
    dp->~S6002C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C19(Test_S6002C19, "S6002C19", ABISELECT(36736,30252));

#else // __cplusplus

extern void _ZN8S6002C19C1Ev();
extern void _ZN8S6002C19D1Ev();
Name_Map name_map_S6002C19[] = {
  NSPAIR(_ZN8S6002C19C1Ev),
  NSPAIR(_ZN8S6002C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S6002C19[];
extern void _ZN8S6002C193v11Ev();
static  VTBL_ENTRY vtc_S6002C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C19[0]),
  (VTBL_ENTRY)&_ZN8S6002C193v11Ev,
};
extern VTBL_ENTRY _ZTI8S6002C19[];
extern  VTBL_ENTRY _ZTV8S6002C19[];
Class_Descriptor cd_S6002C19 = {  "S6002C19", // class name
  0,0,//no base classes
  &(vtc_S6002C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,30252), // object size
  NSPAIRA(_ZTI8S6002C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S6002C19),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C22  : S6002C7 , S6002C12 {
  int s6002c22f0:13;
  __tsi64 s6002c22f1;
  int s6002c22f2;
  void *s6002c22f3[2];
  __tsi64 s6002c22f4;
  ::S6002C4 s6002c22f5;
  virtual  ~S6002C22(); // _ZN8S6002C22D2Ev
  virtual void  v12(); // _ZN8S6002C223v12Ev
  virtual void  v13(); // _ZN8S6002C223v13Ev
  S6002C22(); // tgen
};
//SIG(-1 S6002C22) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v4 v5 v6 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 FL Fi Fp[2] FL FC4}


 S6002C22 ::~S6002C22(){ note_dtor("S6002C22", this);}
void  S6002C22 ::v12(){vfunc_called(this, "_ZN8S6002C223v12Ev");}
void  S6002C22 ::v13(){vfunc_called(this, "_ZN8S6002C223v13Ev");}
S6002C22 ::S6002C22(){ note_ctor("S6002C22", this);} // tgen

static void Test_S6002C22()
{
  extern Class_Descriptor cd_S6002C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2591)];
    init_test(&cd_S6002C22, buf);
    S6002C22 *dp, &lv = *(dp=new (buf) S6002C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,10360), "sizeof(S6002C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C22)");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), 0, "S6002C22");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(7376,6060), "S6002C22");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(8008,6596), "S6002C22");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*), ABISELECT(8008,6596), "S6002C22");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(7840,6460), "S6002C22");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*), ABISELECT(7840,6460), "S6002C22");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(8160,6720), "S6002C22");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*), ABISELECT(8160,6720), "S6002C22");
    check_base_class_offset(lv, (S6002C7*), 0, "S6002C22");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(8464,6964), "S6002C22");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(8760,7208), "S6002C22");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(9224,7608), "S6002C22");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*), ABISELECT(8464,6964), "S6002C22");
    check_base_class_offset(lv, (S6002C12*), ABISELECT(464,380), "S6002C22");
    set_bf_and_test(lv, s6002c22f0, ABISELECT(6864,5628), 0, 13, 1, "S6002C22");
    set_bf_and_test(lv, s6002c22f0, ABISELECT(6864,5628), 0, 13, hide_sll(1LL<<12), "S6002C22");
    check_field_offset(lv, s6002c22f1, ABISELECT(6872,5632), "S6002C22.s6002c22f1");
    check_field_offset(lv, s6002c22f2, ABISELECT(6880,5640), "S6002C22.s6002c22f2");
    check_field_offset(lv, s6002c22f3, ABISELECT(6888,5644), "S6002C22.s6002c22f3");
    check_field_offset(lv, s6002c22f4, ABISELECT(6904,5652), "S6002C22.s6002c22f4");
    check_field_offset(lv, s6002c22f5, ABISELECT(6912,5660), "S6002C22.s6002c22f5");
    test_class_info(&lv, &cd_S6002C22);
    dp->~S6002C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C22(Test_S6002C22, "S6002C22", ABISELECT(12592,10360));

#else // __cplusplus

extern void _ZN8S6002C22C1Ev();
extern void _ZN8S6002C22D2Ev();
Name_Map name_map_S6002C22[] = {
  NSPAIR(_ZN8S6002C22C1Ev),
  NSPAIR(_ZN8S6002C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
static Base_Class bases_S6002C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(7376,6060), //bcp->offset
    20, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(8008,6596), //bcp->offset
    31, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(7840,6460), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(8160,6720), //bcp->offset
    35, //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
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6002C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S6002C9,    ABISELECT(8464,6964), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C4,    ABISELECT(8760,7208), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(9224,7608), //bcp->offset
    57, //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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(8464,6964), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6002C12,    ABISELECT(464,380), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C22[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C22D1Ev();
extern void _ZN8S6002C22D0Ev();
extern void _ZN8S6002C223v12Ev();
extern void _ZN8S6002C223v13Ev();
extern void ABISELECT(_ZThn464_N8S6002C22D1Ev,_ZThn380_N8S6002C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C22D0Ev,_ZThn380_N8S6002C22D0Ev)();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C22D1Ev,_ZTv0_n16_N8S6002C22D1Ev)();
extern void ABISELECT(_ZThn8464_N8S6002C22D1Ev,_ZThn6964_N8S6002C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C22D0Ev,_ZTv0_n16_N8S6002C22D0Ev)();
extern void ABISELECT(_ZThn8464_N8S6002C22D0Ev,_ZThn6964_N8S6002C22D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY vtc_S6002C22[] = {
  ABISELECT(8464,6964),
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6002C223v13Ev,
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C22D1Ev,_ZThn380_N8S6002C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C22D0Ev,_ZThn380_N8S6002C22D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8464,-6964),
  0,
  ABISELECT(-8464,-6964),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C22D1Ev,_ZTv0_n16_N8S6002C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C22D0Ev,_ZTv0_n16_N8S6002C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-8760,-7208),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-9224,-7608),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6002C22[];
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__8S6002C22[] = {
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__8S6002C22[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__8S6002C22[] = {
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__8S6002C22[] = {
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__8S6002C22[] = {
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C22[] = {
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C12__8S6002C22[] = {
  0,
  ABISELECT(-7696,-6340),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn8000_N8S6002C12D1Ev,_ZThn6584_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn8000_N8S6002C12D0Ev,_ZThn6584_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C12__8S6002C22[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8000,-6584),
  0,
  ABISELECT(-8000,-6584),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C12__8S6002C22[] = {
  ABISELECT(-8296,-6828),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C12__8S6002C22[] = {
  ABISELECT(-8760,-7228),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C12__8S6002C22[] = {
  0,
  ABISELECT(-7544,-6216),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C12__8S6002C22[] = {
  ABISELECT(168,136),
  ABISELECT(-7376,-6080),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C22[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__8S6002C22[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C22[] = {
  {&(_ZTV8S6002C22[7]),  7,60},
  {&(_tg__ZTV7S6002C7__8S6002C22[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__8S6002C22[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__8S6002C22[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__8S6002C22[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__8S6002C22[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C22[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C12__8S6002C22[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C12__8S6002C22[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C12__8S6002C22[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C12__8S6002C22[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C12__8S6002C22[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C12__8S6002C22[3]),  3,3},
  {&(_ZTV8S6002C22[25]),  25,60},
  {&(_ZTV8S6002C22[31]),  31,60},
  {&(_ZTV8S6002C22[34]),  34,60},
  {&(_ZTV8S6002C22[38]),  38,60},
  {&(_ZTV8S6002C22[18]),  18,60},
  {&(_ZTV8S6002C22[48]),  48,60},
  {&(_ZTV8S6002C22[54]),  54,60},
  {&(_ZTV8S6002C22[59]),  59,60},
  {&(_tg__ZTV7S6002C8__8S6002C22[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__8S6002C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6002C22[];
extern  VTBL_ENTRY _ZTV8S6002C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C22[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6002C12D0Ev,_ZThn6584_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6002C12D1Ev,_ZThn6584_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C22D0Ev,_ZTv0_n16_N8S6002C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6002C22D0Ev,_ZThn6964_N8S6002C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C22D1Ev,_ZTv0_n16_N8S6002C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6002C22D1Ev,_ZThn6964_N8S6002C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C22 = {  "S6002C22", // class name
  bases_S6002C22, 11,
  &(vtc_S6002C22[0]), // expected_vtbl_contents
  &(vtt_S6002C22[0]), // expected_vtt_contents
  ABISELECT(12592,10360), // object size
  NSPAIRA(_ZTI8S6002C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6002C22),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C22),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C23  : virtual S6002C10 , virtual S6002C9 {
  __tsi64 s6002c23f0;
  int s6002c23f1;
  void *s6002c23f2;
  void *s6002c23f3[3];
  __tsi64 s6002c23f4;
  ~S6002C23(); // tgen
  S6002C23(); // tgen
};
//SIG(-1 S6002C23) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v2 v3 v4 Fi[2] FL[2] FC4[3]} BC4 vd v6 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 FL Fi Fp[4] FL}


S6002C23 ::~S6002C23(){ note_dtor("S6002C23", this);} // tgen
S6002C23 ::S6002C23(){ note_ctor("S6002C23", this);} // tgen

static void Test_S6002C23()
{
  extern Class_Descriptor cd_S6002C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(282,921)];
    init_test(&cd_S6002C23, buf);
    S6002C23 *dp, &lv = *(dp=new (buf) S6002C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4496,3680), "sizeof(S6002C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C23)");
    check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(64,40), "S6002C23");
    check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(360,284), "S6002C23");
    check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(824,684), "S6002C23");
    check_base_class_offset(lv, (S6002C10*), ABISELECT(64,40), "S6002C23");
    /*is_ambiguous_... S6002C23::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*), ABISELECT(4192,3436), "S6002C23");
    check_field_offset(lv, s6002c23f0, ABISELECT(8,4), "S6002C23.s6002c23f0");
    check_field_offset(lv, s6002c23f1, ABISELECT(16,12), "S6002C23.s6002c23f1");
    check_field_offset(lv, s6002c23f2, ABISELECT(24,16), "S6002C23.s6002c23f2");
    check_field_offset(lv, s6002c23f3, ABISELECT(32,20), "S6002C23.s6002c23f3");
    check_field_offset(lv, s6002c23f4, ABISELECT(56,32), "S6002C23.s6002c23f4");
    test_class_info(&lv, &cd_S6002C23);
    dp->~S6002C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C23(Test_S6002C23, "S6002C23", ABISELECT(4496,3680));

#else // __cplusplus

extern void _ZN8S6002C23C1Ev();
extern void _ZN8S6002C23D1Ev();
Name_Map name_map_S6002C23[] = {
  NSPAIR(_ZN8S6002C23C1Ev),
  NSPAIR(_ZN8S6002C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
static Base_Class bases_S6002C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6002C9,    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
    3, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(360,284), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //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, 0},
  {&cd_S6002C5,    ABISELECT(824,684), //bcp->offset
    24, //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_S6002C10,    ABISELECT(64,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C9,    ABISELECT(4192,3436), //bcp->offset
    27, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6002C23[];
extern void _ZN8S6002C23D1Ev();
extern void _ZN8S6002C23D0Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C23D1Ev,_ZTv0_n16_N8S6002C23D1Ev)();
extern void ABISELECT(_ZThn64_N8S6002C23D1Ev,_ZThn40_N8S6002C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C23D0Ev,_ZTv0_n16_N8S6002C23D0Ev)();
extern void ABISELECT(_ZThn64_N8S6002C23D0Ev,_ZThn40_N8S6002C23D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY vtc_S6002C23[] = {
  ABISELECT(4192,3436),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C23[0]),
  (VTBL_ENTRY)&_ZN8S6002C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C23D0Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-64,-40),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6002C23[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C23D1Ev,_ZTv0_n16_N8S6002C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C23D0Ev,_ZTv0_n16_N8S6002C23D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-360,-284),
  (VTBL_ENTRY)&(_ZTI8S6002C23[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-824,-684),
  (VTBL_ENTRY)&(_ZTI8S6002C23[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-4192,-3436),
  (VTBL_ENTRY)&(_ZTI8S6002C23[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6002C23[];
static  VTT_ENTRY vtt_S6002C23[] = {
  {&(_ZTV8S6002C23[4]),  4,31},
  {&(_ZTV8S6002C23[15]),  15,31},
  {&(_ZTV8S6002C23[21]),  21,31},
  {&(_ZTV8S6002C23[26]),  26,31},
  {&(_ZTV8S6002C23[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S6002C23[];
extern  VTBL_ENTRY _ZTV8S6002C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C23[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C23D0Ev,_ZTv0_n16_N8S6002C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6002C23D0Ev,_ZThn40_N8S6002C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C23D1Ev,_ZTv0_n16_N8S6002C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6002C23D1Ev,_ZThn40_N8S6002C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C23 = {  "S6002C23", // class name
  bases_S6002C23, 5,
  &(vtc_S6002C23[0]), // expected_vtbl_contents
  &(vtt_S6002C23[0]), // expected_vtt_contents
  ABISELECT(4496,3680), // object size
  NSPAIRA(_ZTI8S6002C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6002C23),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6002C23),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6002C1  : S19762C2 , virtual S6002C17 , virtual S6002C19 , S6002C5 , virtual S6002C22 {
  int s6002c1f0;
  void *s6002c1f1;
  int s6002c1f2;
  ::S6002C23 s6002c1f3;
  char s6002c1f4:3;
  ::S6002C5 s6002c1f5;
  void *s6002c1f6;
  __tsi64 s6002c1f7:64;
  int s6002c1f8;
  ~S6002C1(); // tgen
  S6002C1(); // tgen
};
//SIG(1 S6002C1) C1{ BC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v15 v16 v17 Fi[2] FL[2] FC5{ v18 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 Fi:3} VBC9{ v19 FL FD Fp Fc FC5 Fp[2] FL[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v20 FL[2] Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v24 FC8 Fi Fp Fi}} v21 FC10 FL Fc:7} v22 v23 FC12 Fs Fi:8} BC14{ VBC8 FC12 Fi:6 Fi FL} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v25 Fi FC7 Fi Fs FL:8 Fi} v14 FC15 FC6} Fi} VBC17{ VBC18{ v1 v2 v3 Fi[2] FL[2] FC19{ v5 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC20{ VBC21{ v4 FL FD Fp Fc FC19 Fp[2] FL[8] Fs Fp FL:64} BC18 VBC22{ VBC23{ BC21 BC18 BC19 vd v6 FL[2] Fp[8] FC24{ BC19 VBC18 VBC25{ VBC19 Fp FC19 Fi:3} VBC21 FC21 Fs Fi[2]} Fp Fi FC24 Fi} VBC19 VBC25 BC24 BC26{ VBC21 VBC23 VBC19 VBC25 FL:44 Fp Fi FC24 FL[2] Fi[3] FC23 Fc:7 FC27{ BC21 vd v10 FC25 Fi Fp Fi}} v7 FC23 FL Fc:7} Fc:8 Fi} VBC28{ VBC19 VBC24 BC23 BC22 v8 v9 FC26 Fs Fi:8} BC26 BC27 vd FU29{ m FL Fi FL Fs Fi} FL FD Fp FL Fi FC20 Fi FC19} VBC30{ v11 FC31{} FC32{ BC24 VBC20 BC33{ BC19 VBC21 VBC20 BC24 BC27 vd v28 Fi FC24 Fi Fs FL:8 Fi} v26 v27 FC20 Fi Fi Fc Fi FL Fi Fi Fp Fp Fi Fi} Fi Fc:5} BC19 VBC34{ BC24 BC26 vd v12 v13 Fi:13 FL Fi Fp[2] FL FC18} Fi Fp Fi FC35{ VBC23 VBC21 FL Fi Fp Fp[3] FL} Fc:3 FC19 Fp FL:64 Fi}


S6002C1 ::~S6002C1(){ note_dtor("S6002C1", this);} // tgen
S6002C1 ::S6002C1(){ note_ctor("S6002C1", this);} // tgen

static void Test_S6002C1()
{
  extern Class_Descriptor cd_S6002C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13905,45723)];
    init_test(&cd_S6002C1, buf);
    S6002C1 *dp, &lv = *(dp=new (buf) S6002C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(222464,182888), "sizeof(S6002C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6002C1)");
    check_base_class_offset(lv, (S19762C2*), ABISELECT(144,124), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C17*), ABISELECT(135384,111276), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*), ABISELECT(135384,111276), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C7*), ABISELECT(135384,111276), "S6002C1");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(135384,111276), "S6002C1");
    check_base_class_offset(lv, (S6002C4*)(S6002C7*)(S6002C22*), ABISELECT(135384,111276), "S6002C1");
    /*is_ambiguous_... S6002C15::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C15*)(S6002C17*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C7*), ABISELECT(135856,111676), "S6002C1");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C17*), ABISELECT(135856,111676), "S6002C1");
    check_base_class_offset(lv, (S6002C9*)(S6002C7*)(S6002C22*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C12::S6002C9 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C12*)(S6002C22*), ABISELECT(135856,111676), "S6002C1");
    /*is_ambiguous_... S6002C15::S6002C4 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C15*)(S6002C17*), ABISELECT(110960,91188), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*), ABISELECT(147168,120956), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*), ABISELECT(147464,121200), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*), ABISELECT(147928,121600), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C11*), ABISELECT(147168,120956), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*), ABISELECT(147168,120956), "S6002C1");
    check_base_class_offset(lv, (S6002C10*)(S6002C11*)(S6002C6*), ABISELECT(147168,120956), "S6002C1");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(147168,120956), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C17*), ABISELECT(147168,120956), "S6002C1");
    check_base_class_offset(lv, (S6002C10*)(S6002C12*)(S6002C22*), ABISELECT(147168,120956), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*), ABISELECT(151288,124352), "S6002C1");
    check_base_class_offset(lv, (S6002C5*)(S6002C8*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C6*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C11::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C11*)(S6002C6*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C17*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C12::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C12*)(S6002C22*), ABISELECT(151288,124352), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C11*), ABISELECT(151432,124476), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*), ABISELECT(151432,124476), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*), ABISELECT(151432,124476), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C7*), ABISELECT(151432,124476), "S6002C1");
    check_base_class_offset(lv, (S6002C8*)(S6002C11*)(S6002C6*), ABISELECT(151432,124476), "S6002C1");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(151432,124476), "S6002C1");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(151432,124476), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C17*), ABISELECT(151432,124476), "S6002C1");
    check_base_class_offset(lv, (S6002C8*)(S6002C7*)(S6002C22*), ABISELECT(151432,124476), "S6002C1");
    check_base_class_offset(lv, (S6002C8*)(S6002C12*)(S6002C22*), ABISELECT(151432,124476), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*), ABISELECT(136160,111920), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C7*)(S6002C11*), ABISELECT(136160,111920), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C11 */ AMB_check_base_class_offset(lv, (S6002C12*)(S6002C11*), ABISELECT(136624,112300), "S6002C1");
    check_base_class_offset(lv, (S6002C11*)(S6002C15*)(S6002C17*), ABISELECT(136160,111920), "S6002C1");
    check_base_class_offset(lv, (S6002C15*)(S6002C17*), ABISELECT(110960,91188), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*), ABISELECT(177888,146196), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C7 */ AMB_check_base_class_offset(lv, (S6002C7*)(S6002C6*), ABISELECT(177888,146196), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C9*)(S6002C10*)(S6002C6*), ABISELECT(151600,124612), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C4*)(S6002C10*)(S6002C6*), ABISELECT(151896,124856), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C10*)(S6002C6*), ABISELECT(152360,125256), "S6002C1");
    /*is_ambiguous_... S6002C6::S6002C10 */ AMB_check_base_class_offset(lv, (S6002C10*)(S6002C6*), ABISELECT(151600,124612), "S6002C1");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(155728,128008), "S6002C1");
    check_base_class_offset(lv, (S6002C7*)(S6002C11*)(S6002C6*), ABISELECT(155728,128008), "S6002C1");
    check_base_class_offset(lv, (S6002C12*)(S6002C11*)(S6002C6*), ABISELECT(156192,128388), "S6002C1");
    check_base_class_offset(lv, (S6002C11*)(S6002C6*), ABISELECT(155728,128008), "S6002C1");
    check_base_class_offset(lv, (S6002C6*)(S6002C17*), ABISELECT(151600,124612), "S6002C1");
    /*is_ambiguous_... S6002C17::S6002C12 */ AMB_check_base_class_offset(lv, (S6002C12*)(S6002C17*), ABISELECT(111440,91596), "S6002C1");
    check_base_class_offset(lv, (S6002C9*)(S6002C13*)(S6002C17*), ABISELECT(117840,96844), "S6002C1");
    check_base_class_offset(lv, (S6002C13*)(S6002C17*), ABISELECT(117840,96844), "S6002C1");
    check_base_class_offset(lv, (S6002C17*), ABISELECT(110960,91188), "S6002C1");
    check_base_class_offset(lv, (S6002C19*), ABISELECT(178352,146576), "S6002C1");
    /*is_ambiguous_... S6002C1::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*), 0, "S6002C1");
    /*is_ambiguous_... S6002C7::S6002C5 */ AMB_check_base_class_offset(lv, (S6002C5*)(S6002C7*)(S6002C22*), ABISELECT(215088,176828), "S6002C1");
    check_base_class_offset(lv, (S6002C7*)(S6002C22*), ABISELECT(215088,176828), "S6002C1");
    check_base_class_offset(lv, (S6002C12*)(S6002C22*), ABISELECT(215552,177208), "S6002C1");
    check_base_class_offset(lv, (S6002C22*), ABISELECT(215088,176828), "S6002C1");
    check_field_offset(lv, s6002c1f0, ABISELECT(106260,87352), "S6002C1.s6002c1f0");
    check_field_offset(lv, s6002c1f1, ABISELECT(106264,87356), "S6002C1.s6002c1f1");
    check_field_offset(lv, s6002c1f2, ABISELECT(106272,87360), "S6002C1.s6002c1f2");
    check_field_offset(lv, s6002c1f3, ABISELECT(106288,87364), "S6002C1.s6002c1f3");
    set_bf_and_test(lv, s6002c1f4, ABISELECT(110784,91044), 0, 3, 1, "S6002C1");
    set_bf_and_test(lv, s6002c1f4, ABISELECT(110784,91044), 0, 3, hide_sll(1LL<<2), "S6002C1");
    check_field_offset(lv, s6002c1f5, ABISELECT(110792,91048), "S6002C1.s6002c1f5");
    check_field_offset(lv, s6002c1f6, ABISELECT(110936,91172), "S6002C1.s6002c1f6");
    set_bf_and_test(lv, s6002c1f7, ABISELECT(110944,91176), 0, 64, 1, "S6002C1");
    set_bf_and_test(lv, s6002c1f7, ABISELECT(110944,91176), 0, 64, hide_sll(1LL<<63), "S6002C1");
    check_field_offset(lv, s6002c1f8, ABISELECT(110952,91184), "S6002C1.s6002c1f8");
    test_class_info(&lv, &cd_S6002C1);
    dp->~S6002C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6002C1(Test_S6002C1, "S6002C1", ABISELECT(222464,182888));

#else // __cplusplus

extern void _ZN7S6002C1C1Ev();
extern void _ZN7S6002C1D1Ev();
Name_Map name_map_S6002C1[] = {
  NSPAIR(_ZN7S6002C1C1Ev),
  NSPAIR(_ZN7S6002C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19762C2;
extern VTBL_ENTRY _ZTI8S19762C2[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C8;
extern VTBL_ENTRY _ZTI7S6002C8[];
extern  VTBL_ENTRY _ZTV7S6002C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C8[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C15;
extern VTBL_ENTRY _ZTI8S6002C15[];
extern  VTBL_ENTRY _ZTV8S6002C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C15[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C4;
extern VTBL_ENTRY _ZTI7S6002C4[];
extern  VTBL_ENTRY _ZTV7S6002C4[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C10;
extern VTBL_ENTRY _ZTI8S6002C10[];
extern  VTBL_ENTRY _ZTV8S6002C10[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C11;
extern VTBL_ENTRY _ZTI8S6002C11[];
extern  VTBL_ENTRY _ZTV8S6002C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C11[];
extern Class_Descriptor cd_S6002C6;
extern VTBL_ENTRY _ZTI7S6002C6[];
extern  VTBL_ENTRY _ZTV7S6002C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C6[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C9;
extern VTBL_ENTRY _ZTI7S6002C9[];
extern  VTBL_ENTRY _ZTV7S6002C9[];
extern Class_Descriptor cd_S6002C13;
extern VTBL_ENTRY _ZTI8S6002C13[];
extern  VTBL_ENTRY _ZTV8S6002C13[];
extern Class_Descriptor cd_S6002C17;
extern VTBL_ENTRY _ZTI8S6002C17[];
extern  VTBL_ENTRY _ZTV8S6002C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C17[];
extern Class_Descriptor cd_S6002C19;
extern VTBL_ENTRY _ZTI8S6002C19[];
extern  VTBL_ENTRY _ZTV8S6002C19[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C5;
extern VTBL_ENTRY _ZTI7S6002C5[];
extern  VTBL_ENTRY _ZTV7S6002C5[];
extern Class_Descriptor cd_S6002C7;
extern VTBL_ENTRY _ZTI7S6002C7[];
extern  VTBL_ENTRY _ZTV7S6002C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C7[];
extern Class_Descriptor cd_S6002C12;
extern VTBL_ENTRY _ZTI8S6002C12[];
extern  VTBL_ENTRY _ZTV8S6002C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C12[];
extern Class_Descriptor cd_S6002C22;
extern VTBL_ENTRY _ZTI8S6002C22[];
extern  VTBL_ENTRY _ZTV8S6002C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6002C22[];
static Base_Class bases_S6002C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C2,    ABISELECT(144,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
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C4,    ABISELECT(135384,111276), //bcp->offset
    51, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(135856,111676), //bcp->offset
    59, //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
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C4,    ABISELECT(110960,91188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(147168,120956), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(147464,121200), //bcp->offset
    98, //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(147928,121600), //bcp->offset
    103, //bcp->virtual_function_table_offset
    2, //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
    7, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(147168,120956), //bcp->offset
    85, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(151288,124352), //bcp->offset
    106, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6002C8,    ABISELECT(151432,124476), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6002C5,    ABISELECT(136160,111920), //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(136160,111920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    13, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(136624,112300), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(136160,111920), //bcp->offset
    63, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6002C15,    ABISELECT(110960,91188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(177888,146196), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6002C7,    ABISELECT(177888,146196), //bcp->offset
    164, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6002C9,    ABISELECT(151600,124612), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S6002C4,    ABISELECT(151896,124856), //bcp->offset
    137, //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
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(152360,125256), //bcp->offset
    142, //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
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6002C10,    ABISELECT(151600,124612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6002C5,    ABISELECT(155728,128008), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(155728,128008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(156192,128388), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6002C11,    ABISELECT(155728,128008), //bcp->offset
    145, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6002C6,    ABISELECT(151600,124612), //bcp->offset
    113, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S6002C12,    ABISELECT(111440,91596), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6002C9,    ABISELECT(117840,96844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6002C13,    ABISELECT(117840,96844), //bcp->offset
    45, //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
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6002C17,    ABISELECT(110960,91188), //bcp->offset
    16, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C19,    ABISELECT(178352,146576), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6002C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6002C5,    ABISELECT(215088,176828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6002C7,    ABISELECT(215088,176828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6002C12,    ABISELECT(215552,177208), //bcp->offset
    192, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6002C22,    ABISELECT(215088,176828), //bcp->offset
    176, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6002C1[];
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C1D1Ev();
extern void _ZN7S6002C1D0Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void ABISELECT(_ZTv0_n112_N7S6002C1D1Ev,_ZTv0_n56_N7S6002C1D1Ev)();
extern void ABISELECT(_ZThn110960_N7S6002C1D1Ev,_ZThn91188_N7S6002C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S6002C1D0Ev,_ZTv0_n56_N7S6002C1D0Ev)();
extern void ABISELECT(_ZThn110960_N7S6002C1D0Ev,_ZThn91188_N7S6002C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn480_n112_N7S6002C1D1Ev,_ZTvn408_n56_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn480_n112_N7S6002C1D0Ev,_ZTvn408_n56_N7S6002C1D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTvn6880_n112_N7S6002C1D1Ev,_ZTvn5656_n56_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn6880_n112_N7S6002C1D0Ev,_ZTvn5656_n56_N7S6002C1D0Ev)();
extern void _ZN8S6002C133v10Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N7S6002C1D1Ev,_ZTv0_n40_N7S6002C1D1Ev)();
extern void ABISELECT(_ZThn136160_N7S6002C1D1Ev,_ZThn111920_N7S6002C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6002C1D0Ev,_ZTv0_n40_N7S6002C1D0Ev)();
extern void ABISELECT(_ZThn136160_N7S6002C1D0Ev,_ZThn111920_N7S6002C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N7S6002C1D1Ev,_ZTvn380_n40_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N7S6002C1D0Ev,_ZTvn380_n40_N7S6002C1D0Ev)();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6002C1D1Ev,_ZTv0_n16_N7S6002C1D1Ev)();
extern void ABISELECT(_ZThn147168_N7S6002C1D1Ev,_ZThn120956_N7S6002C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6002C1D0Ev,_ZTv0_n16_N7S6002C1D0Ev)();
extern void ABISELECT(_ZThn147168_N7S6002C1D0Ev,_ZThn120956_N7S6002C1D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N7S6002C1D1Ev,_ZTv0_n40_N7S6002C1D1Ev)();
extern void ABISELECT(_ZThn151600_N7S6002C1D1Ev,_ZThn124612_N7S6002C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6002C1D0Ev,_ZTv0_n40_N7S6002C1D0Ev)();
extern void ABISELECT(_ZThn151600_N7S6002C1D0Ev,_ZThn124612_N7S6002C1D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N7S6002C1D1Ev,_ZTvn3396_n40_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N7S6002C1D0Ev,_ZTvn3396_n40_N7S6002C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6002C1D1Ev,_ZTvn3776_n40_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6002C1D0Ev,_ZTvn3776_n40_N7S6002C1D0Ev)();
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C193v11Ev();
extern void _ZN7S6002C52v5Ev();
extern void ABISELECT(_ZTv0_n72_N7S6002C1D1Ev,_ZTv0_n36_N7S6002C1D1Ev)();
extern void ABISELECT(_ZThn215088_N7S6002C1D1Ev,_ZThn176828_N7S6002C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6002C1D0Ev,_ZTv0_n36_N7S6002C1D0Ev)();
extern void ABISELECT(_ZThn215088_N7S6002C1D0Ev,_ZThn176828_N7S6002C1D0Ev)() __attribute__((weak));
extern void _ZN8S6002C223v12Ev();
extern void _ZN8S6002C223v13Ev();
extern void ABISELECT(_ZTvn464_n72_N7S6002C1D1Ev,_ZTvn380_n36_N7S6002C1D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N7S6002C1D0Ev,_ZTvn380_n36_N7S6002C1D0Ev)();
static  VTBL_ENTRY vtc_S6002C1[] = {
  ABISELECT(215088,176828),
  ABISELECT(178352,146576),
  ABISELECT(177888,146196),
  ABISELECT(151600,124612),
  ABISELECT(151432,124476),
  ABISELECT(151288,124352),
  ABISELECT(147168,120956),
  ABISELECT(136160,111920),
  ABISELECT(135856,111676),
  ABISELECT(135384,111276),
  ABISELECT(110960,91188),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN7S6002C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6002C1D0Ev,
  ABISELECT(6880,5656),
  ABISELECT(6880,5656),
  ABISELECT(-110960,-91188),
  0,
  0,
  0,
  ABISELECT(66928,55008),
  ABISELECT(40640,33424),
  ABISELECT(24424,20088),
  ABISELECT(40472,33288),
  ABISELECT(40328,33164),
  ABISELECT(36208,29768),
  ABISELECT(25200,20732),
  ABISELECT(24896,20488),
  ABISELECT(-110960,-91188),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6002C1D1Ev,_ZTv0_n56_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6002C1D0Ev,_ZTv0_n56_N7S6002C1D0Ev),
  ABISELECT(39992,32880),
  ABISELECT(39848,32756),
  ABISELECT(35728,29360),
  ABISELECT(24416,20080),
  ABISELECT(-111440,-91596),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6002C1D1Ev,_ZTvn408_n56_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6002C1D0Ev,_ZTvn408_n56_N7S6002C1D0Ev),
  ABISELECT(-117840,-96844),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6002C1D1Ev,_ZTvn5656_n56_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6002C1D0Ev,_ZTvn5656_n56_N7S6002C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-135384,-111276),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  0,
  ABISELECT(-135856,-111676),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  ABISELECT(-136160,-111920),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  ABISELECT(-136160,-111920),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6002C1D1Ev,_ZTv0_n40_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6002C1D0Ev,_ZTv0_n40_N7S6002C1D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-136624,-112300),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6002C1D1Ev,_ZTvn380_n40_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6002C1D0Ev,_ZTvn380_n40_N7S6002C1D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-147168,-120956),
  0,
  ABISELECT(-147168,-120956),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C1D1Ev,_ZTv0_n16_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C1D0Ev,_ZTv0_n16_N7S6002C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  ABISELECT(-147464,-121200),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-147928,-121600),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-151288,-124352),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-144,-124),
  ABISELECT(-151432,-124476),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-151600,-124612),
  0,
  ABISELECT(-4432,-3656),
  ABISELECT(-15744,-12936),
  ABISELECT(-168,-136),
  ABISELECT(-16216,-13336),
  ABISELECT(26288,21584),
  ABISELECT(-312,-260),
  ABISELECT(-151600,-124612),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6002C1D1Ev,_ZTv0_n40_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6002C1D0Ev,_ZTv0_n40_N7S6002C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
  ABISELECT(-151896,-124856),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  ABISELECT(-152360,-125256),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  ABISELECT(-155728,-128008),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6002C1D1Ev,_ZTvn3396_n40_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6002C1D0Ev,_ZTvn3396_n40_N7S6002C1D0Ev),
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-156192,-128388),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6002C1D1Ev,_ZTvn3776_n40_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6002C1D0Ev,_ZTvn3776_n40_N7S6002C1D0Ev),
  0,
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  ABISELECT(-177888,-146196),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  0,
  ABISELECT(-178352,-146576),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN8S6002C193v11Ev,
  0,
  0,
  ABISELECT(-215088,-176828),
  0,
  ABISELECT(-67920,-55872),
  ABISELECT(-79232,-65152),
  ABISELECT(-63800,-52476),
  ABISELECT(-63656,-52352),
  ABISELECT(-79704,-65552),
  ABISELECT(-215088,-176828),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6002C1D1Ev,_ZTv0_n36_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6002C1D0Ev,_ZTv0_n36_N7S6002C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6002C223v13Ev,
  ABISELECT(-64120,-52732),
  ABISELECT(-64264,-52856),
  ABISELECT(-68384,-56252),
  ABISELECT(-79696,-65532),
  ABISELECT(-215552,-177208),
  (VTBL_ENTRY)&(_ZTI7S6002C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6002C1D1Ev,_ZTvn380_n36_N7S6002C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6002C1D0Ev,_ZTvn380_n36_N7S6002C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6002C1[];
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C17D1Ev();
extern void _ZN8S6002C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C17__7S6002C1[] = {
  ABISELECT(66928,55008),
  ABISELECT(40640,33424),
  ABISELECT(24424,20088),
  ABISELECT(40472,33288),
  ABISELECT(40328,33164),
  ABISELECT(36208,29768),
  ABISELECT(25200,20732),
  ABISELECT(24896,20488),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C17D0Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
extern void _ZN8S6002C15D1Ev();
extern void _ZN8S6002C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(24424,20088),
  ABISELECT(40472,33288),
  ABISELECT(40328,33164),
  ABISELECT(36208,29768),
  ABISELECT(25200,20732),
  ABISELECT(24896,20488),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C15D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C158S6002C17__7S6002C1[] = {
  0,
  ABISELECT(-24896,-20488),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C15D1Ev,_ZThn20732_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C15D0Ev,_ZThn20732_N8S6002C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(-25200,-20732),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  ABISELECT(-25200,-20732),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C15D1Ev,_ZThn29768_N8S6002C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C15D0Ev,_ZThn29768_N8S6002C15D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36208,-29768),
  0,
  ABISELECT(-36208,-29768),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(-36504,-30012),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(-36968,-30412),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C158S6002C17__7S6002C1[] = {
  0,
  ABISELECT(-40328,-33164),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-40472,-33288),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A2__8S6002C158S6002C17__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-20088),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C158S6002C17__7S6002C1[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-25664,-21112),
  (VTBL_ENTRY)&(_ZTI8S6002C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D1Ev,_ZTvn380_n40_N8S6002C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C15D0Ev,_ZTvn380_n40_N8S6002C15D0Ev),
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C17__A2__7S6002C1[] = {
  ABISELECT(39992,32880),
  ABISELECT(39848,32756),
  ABISELECT(35728,29360),
  ABISELECT(24416,20080),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C17__A2__7S6002C1[] = {
  0,
  ABISELECT(-24416,-20080),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6002C12D1Ev,_ZThn29360_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6002C12D0Ev,_ZThn29360_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C17__A2__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-35728,-29360),
  0,
  ABISELECT(-35728,-29360),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C17__A2__7S6002C1[] = {
  ABISELECT(-36024,-29604),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C17__A2__7S6002C1[] = {
  ABISELECT(-36488,-30004),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C17__A2__7S6002C1[] = {
  0,
  ABISELECT(-39848,-32756),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C17__A2__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-39992,-32880),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__8S6002C17__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-20088),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C17__7S6002C1[] = {
  0,
  ABISELECT(-24896,-20488),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C17D1Ev,_ZThn20732_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6002C17D0Ev,_ZThn20732_N8S6002C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6002C11__8S6002C17__7S6002C1[] = {
  ABISELECT(-25200,-20732),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  ABISELECT(-25200,-20732),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C17D1Ev,_ZThn29768_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6002C17D0Ev,_ZThn29768_N8S6002C17D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C17__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-36208,-29768),
  0,
  ABISELECT(-36208,-29768),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A2__8S6002C17__7S6002C1[] = {
  ABISELECT(-36504,-30012),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C17__7S6002C1[] = {
  ABISELECT(-36968,-30412),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C17__7S6002C1[] = {
  0,
  ABISELECT(-40328,-33164),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C17__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-40472,-33288),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
};
extern void ABISELECT(_ZTvn464_n80_N8S6002C17D1Ev,_ZTvn380_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6002C17D0Ev,_ZTvn380_n40_N8S6002C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__8S6002C17__7S6002C1[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-25664,-21112),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C17D1Ev,_ZTvn380_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6002C17D0Ev,_ZTvn380_n40_N8S6002C17D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6002C17D1Ev,_ZThn33424_N8S6002C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6002C17D0Ev,_ZThn33424_N8S6002C17D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C6__8S6002C17__7S6002C1[] = {
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-40640,-33424),
  0,
  ABISELECT(-4432,-3656),
  ABISELECT(-15744,-12936),
  ABISELECT(-168,-136),
  ABISELECT(-16216,-13336),
  ABISELECT(26288,21584),
  ABISELECT(-312,-260),
  ABISELECT(-40640,-33424),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__A1__8S6002C17__7S6002C1[] = {
  0,
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  ABISELECT(-66928,-55008),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C107S6002C6__A3__8S6002C17__7S6002C1[] = {
  ABISELECT(-40936,-33668),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C107S6002C6__A4__8S6002C17__7S6002C1[] = {
  ABISELECT(-41400,-34068),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6002C17D1Ev,_ZTvn3396_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6002C17D0Ev,_ZTvn3396_n40_N8S6002C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C117S6002C6__A1__8S6002C17__7S6002C1[] = {
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  ABISELECT(-44768,-36820),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6002C17D1Ev,_ZTvn3396_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6002C17D0Ev,_ZTvn3396_n40_N8S6002C17D0Ev),
};
extern void ABISELECT(_ZTvn4592_n80_N8S6002C17D1Ev,_ZTvn3776_n40_N8S6002C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6002C17D0Ev,_ZTvn3776_n40_N8S6002C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C117S6002C6__A1__8S6002C17__7S6002C1[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-45232,-37200),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6002C17D1Ev,_ZTvn3776_n40_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6002C17D0Ev,_ZTvn3776_n40_N8S6002C17D0Ev),
};
extern void ABISELECT(_ZThn480_N8S6002C17D1Ev,_ZThn408_N8S6002C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6002C17D0Ev,_ZThn408_N8S6002C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__A2__8S6002C17__7S6002C1[] = {
  ABISELECT(39992,32880),
  ABISELECT(39848,32756),
  ABISELECT(35728,29360),
  ABISELECT(24416,20080),
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI8S6002C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6002C17D1Ev,_ZThn408_N8S6002C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6002C17D0Ev,_ZThn408_N8S6002C17D0Ev),
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C11__7S6002C1[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C11__7S6002C1[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(-776,-644),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C11__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C11__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C11__7S6002C1[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C11__7S6002C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__7S6002C1[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C11__7S6002C1[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C11__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__7S6002C1[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__7S6002C1[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C11__7S6002C1[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C11__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev)() __attribute__((weak));
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C11__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C11__7S6002C1[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C11__7S6002C1[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C11__7S6002C1[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C11__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C11__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(776,644),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C11__7S6002C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C11__7S6002C1[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C1[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C8__7S6002C1[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S6002C8[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void _ZN7S6002C6D1Ev();
extern void _ZN7S6002C6D0Ev();
extern void _ZN8S6002C102v6Ev();
extern void _ZN7S6002C62v8Ev();
extern void _ZN7S6002C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C6__7S6002C1[] = {
  ABISELECT(-4432,-3656),
  ABISELECT(-15744,-12936),
  ABISELECT(-168,-136),
  ABISELECT(-16216,-13336),
  ABISELECT(26288,21584),
  ABISELECT(-312,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6002C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6002C62v9Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void _ZN8S6002C11D1Ev();
extern void _ZN8S6002C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C11D0Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C117S6002C6__A2__7S6002C1[] = {
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C117S6002C6__A2__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,16732),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C117S6002C6__A2__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(4296,3532),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C117S6002C6__A2__7S6002C1[] = {
  0,
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C117S6002C6__A2__7S6002C1[] = {
  0,
  ABISELECT(19872,16332),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  0,
  ABISELECT(20336,16712),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(9024,7432),
  0,
  ABISELECT(9024,7432),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(8728,7188),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(8264,6788),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  0,
  ABISELECT(4904,4036),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(4760,3912),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(8560,7052),
  0,
  ABISELECT(8560,7052),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(8264,6808),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(7800,6408),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C117S6002C6__A1__7S6002C1[] = {
  0,
  ABISELECT(4440,3656),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(4296,3532),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__A1__8S6002C117S6002C6__A1__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,16732),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__A1__8S6002C117S6002C6__A1__7S6002C1[] = {
  0,
  ABISELECT(19872,16332),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C117S6002C6__A1__7S6002C1[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D1Ev,_ZThn380_N8S6002C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C11D0Ev,_ZThn380_N8S6002C11D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__7S6002C6__7S6002C1[] = {
  0,
  ABISELECT(312,260),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__7S6002C6__7S6002C1[] = {
  0,
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C6__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(16216,13336),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C6__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(168,136),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C6__7S6002C1[] = {
  0,
  ABISELECT(15744,12936),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C11__7S6002C6__7S6002C1[] = {
  ABISELECT(-8560,-7052),
  ABISELECT(-19872,-16332),
  ABISELECT(-4440,-3656),
  ABISELECT(-4296,-3532),
  ABISELECT(-20344,-16732),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D1Ev,_ZThn3396_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6002C6D0Ev,_ZThn3396_N7S6002C6D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__A1__7S6002C6__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4432,3656),
  0,
  ABISELECT(4432,3656),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D1Ev,_ZTv0_n16_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6002C6D0Ev,_ZTv0_n16_N7S6002C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A2__7S6002C6__7S6002C1[] = {
  ABISELECT(4136,3412),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__A3__7S6002C6__7S6002C1[] = {
  ABISELECT(3672,3012),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C11__7S6002C6__7S6002C1[] = {
  ABISELECT(-4760,-3912),
  ABISELECT(-4904,-4036),
  ABISELECT(-9024,-7432),
  ABISELECT(-20336,-16712),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI7S6002C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D1Ev,_ZThn3776_N7S6002C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6002C6D0Ev,_ZThn3776_N7S6002C6D0Ev),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C7__A1__7S6002C1[] = {
  ABISELECT(-42032,-34520),
  ABISELECT(-26600,-21844),
  ABISELECT(-26456,-21720),
  ABISELECT(-42504,-34920),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C7__A1__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(42504,34920),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C7__A1__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(26456,21720),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C7__A1__7S6002C1[] = {
  0,
  ABISELECT(26600,21844),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C7__A1__7S6002C1[] = {
  0,
  ABISELECT(42032,34520),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C52v5Ev();
extern void _ZN8S6002C22D1Ev();
extern void _ZN8S6002C22D0Ev();
extern void _ZN8S6002C223v12Ev();
extern void _ZN8S6002C223v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C22__7S6002C1[] = {
  ABISELECT(-67920,-55872),
  ABISELECT(-79232,-65152),
  ABISELECT(-63800,-52476),
  ABISELECT(-63656,-52352),
  ABISELECT(-79704,-65552),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6002C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6002C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6002C223v13Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C78S6002C22__A3__7S6002C1[] = {
  ABISELECT(-79232,-65152),
  ABISELECT(-63800,-52476),
  ABISELECT(-63656,-52352),
  ABISELECT(-79704,-65552),
  0,
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__7S6002C78S6002C22__A3__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,65552),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__7S6002C78S6002C22__A3__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(63656,52352),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__7S6002C78S6002C22__A3__7S6002C1[] = {
  0,
  ABISELECT(63800,52476),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__7S6002C78S6002C22__A3__7S6002C1[] = {
  0,
  ABISELECT(79232,65152),
  (VTBL_ENTRY)&(_ZTI7S6002C7[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN8S6002C12D1Ev();
extern void _ZN8S6002C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C128S6002C22__A3__7S6002C1[] = {
  ABISELECT(-64120,-52732),
  ABISELECT(-64264,-52856),
  ABISELECT(-68384,-56252),
  ABISELECT(-79696,-65532),
  0,
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN8S6002C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6002C12D0Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C128S6002C22__A3__7S6002C1[] = {
  0,
  ABISELECT(79696,65532),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C128S6002C22__A3__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(68384,56252),
  0,
  ABISELECT(68384,56252),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__8S6002C128S6002C22__A3__7S6002C1[] = {
  ABISELECT(68088,56008),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__8S6002C128S6002C22__A3__7S6002C1[] = {
  ABISELECT(67624,55608),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C128S6002C22__A3__7S6002C1[] = {
  0,
  ABISELECT(64264,52856),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C128S6002C22__A3__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(64120,52732),
  (VTBL_ENTRY)&(_ZTI8S6002C12[0]),
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C4__8S6002C22__7S6002C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,65552),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6002C8__8S6002C22__7S6002C1[] = {
  ABISELECT(-144,-124),
  ABISELECT(63656,52352),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C5__A1__8S6002C22__7S6002C1[] = {
  0,
  ABISELECT(63800,52476),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
extern void _ZN7S6002C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C9__8S6002C22__7S6002C1[] = {
  0,
  ABISELECT(79232,65152),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6002C22D1Ev,_ZThn380_N8S6002C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6002C22D0Ev,_ZThn380_N8S6002C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6002C12__8S6002C22__7S6002C1[] = {
  ABISELECT(-64120,-52732),
  ABISELECT(-64264,-52856),
  ABISELECT(-68384,-56252),
  ABISELECT(-79696,-65532),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C22D1Ev,_ZThn380_N8S6002C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6002C22D0Ev,_ZThn380_N8S6002C22D0Ev),
};
extern void _ZN7S6002C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6002C22D1Ev,_ZTv0_n16_N8S6002C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6002C22D0Ev,_ZTv0_n16_N8S6002C22D0Ev)();
extern void _ZN8S6002C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6002C10__8S6002C22__7S6002C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(67920,55872),
  0,
  ABISELECT(67920,55872),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C22D1Ev,_ZTv0_n16_N8S6002C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6002C22D0Ev,_ZTv0_n16_N8S6002C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6002C102v6Ev,
};
extern void _ZN7S6002C42v2Ev();
extern void _ZN7S6002C42v3Ev();
extern void _ZN7S6002C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C48S6002C10__A1__8S6002C22__7S6002C1[] = {
  ABISELECT(67624,55628),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6002C42v4Ev,
};
extern void _ZN7S6002C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6002C58S6002C10__A2__8S6002C22__7S6002C1[] = {
  ABISELECT(67160,55228),
  (VTBL_ENTRY)&(_ZTI8S6002C22[0]),
  (VTBL_ENTRY)&_ZN7S6002C52v5Ev,
};
static  VTT_ENTRY vtt_S6002C1[] = {
  {&(_ZTV7S6002C1[13]),  13,200},
  {&(_ZTV7S6002C1[32]),  32,200},
  {&(_ZTV7S6002C1[56]),  56,200},
  {&(_ZTV7S6002C1[62]),  62,200},
  {&(_ZTV7S6002C1[73]),  73,200},
  {&(_ZTV7S6002C1[94]),  94,200},
  {&(_ZTV7S6002C1[100]),  100,200},
  {&(_ZTV7S6002C1[105]),  105,200},
  {&(_ZTV7S6002C1[109]),  109,200},
  {&(_ZTV7S6002C1[113]),  113,200},
  {&(_ZTV7S6002C1[83]),  83,200},
  {&(_ZTV7S6002C1[131]),  131,200},
  {&(_ZTV7S6002C1[171]),  171,200},
  {&(_ZTV7S6002C1[139]),  139,200},
  {&(_ZTV7S6002C1[144]),  144,200},
  {&(_ZTV7S6002C1[152]),  152,200},
  {&(_ZTV7S6002C1[162]),  162,200},
  {&(_ZTV7S6002C1[43]),  43,200},
  {&(_ZTV7S6002C1[47]),  47,200},
  {&(_ZTV7S6002C1[175]),  175,200},
  {&(_ZTV7S6002C1[187]),  187,200},
  {&(_ZTV7S6002C1[198]),  198,200},
  {&(_tg__ZTV8S6002C17__7S6002C1[10]),  10,15},
  {&(_tg__ZTV8S6002C158S6002C17__7S6002C1[8]),  8,13},
  {&(_tg__ZTV7S6002C9__8S6002C158S6002C17__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C11__8S6002C158S6002C17__7S6002C1[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C158S6002C17__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C158S6002C17__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C158S6002C17__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C158S6002C17__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C158S6002C17__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A2__8S6002C158S6002C17__7S6002C1[5]),  5,8},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C158S6002C17__7S6002C1[6]),  6,8},
  {&(_tg__ZTV8S6002C128S6002C17__A2__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C17__A2__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C17__A2__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C17__A2__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C17__A2__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C17__A2__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C17__A2__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C4__8S6002C17__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C9__8S6002C17__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C11__8S6002C17__7S6002C1[10]),  10,14},
  {&(_tg__ZTV8S6002C10__8S6002C17__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A2__8S6002C17__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C17__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C17__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C17__7S6002C1[3]),  3,3},
  {&(_tg__ZTV8S6002C128S6002C11__8S6002C17__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C6__8S6002C17__7S6002C1[18]),  18,24},
  {&(_tg__ZTV7S6002C7__A1__8S6002C17__7S6002C1[7]),  7,8},
  {&(_tg__ZTV7S6002C48S6002C107S6002C6__A3__8S6002C17__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C107S6002C6__A4__8S6002C17__7S6002C1[2]),  2,3},
  {&(_tg__ZTV8S6002C117S6002C6__A1__8S6002C17__7S6002C1[7]),  7,11},
  {&(_tg__ZTV8S6002C128S6002C117S6002C6__A1__8S6002C17__7S6002C1[6]),  6,8},
  {&(_tg__ZTV8S6002C12__A2__8S6002C17__7S6002C1[6]),  6,8},
  {&(_tg__ZTV8S6002C11__7S6002C1[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C11__7S6002C1[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C11__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C11__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C11__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C11__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C11__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C11__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C11__7S6002C1[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C11__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C11__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C11__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C11__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C11__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C11__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C11__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C8__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__7S6002C8__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C6__7S6002C1[8]),  8,14},
  {&(_tg__ZTV8S6002C117S6002C6__A1__7S6002C1[7]),  7,11},
  {&(_tg__ZTV7S6002C78S6002C117S6002C6__A2__7S6002C1[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C117S6002C6__A2__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C117S6002C6__A2__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C117S6002C6__A2__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C117S6002C6__A2__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C117S6002C6__A1__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C117S6002C6__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C117S6002C6__A1__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C117S6002C6__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C117S6002C6__A1__7S6002C1[3]),  3,3},
  {&(_tg__ZTV8S6002C10__8S6002C117S6002C6__A1__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C117S6002C6__A1__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C117S6002C6__A1__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C117S6002C6__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C117S6002C6__A1__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C4__A1__8S6002C117S6002C6__A1__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C9__A1__8S6002C117S6002C6__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C117S6002C6__A1__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C5__7S6002C6__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C7__7S6002C6__7S6002C1[7]),  7,8},
  {&(_tg__ZTV7S6002C4__7S6002C6__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C6__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C9__7S6002C6__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C11__7S6002C6__7S6002C1[7]),  7,11},
  {&(_tg__ZTV8S6002C10__A1__7S6002C6__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A2__7S6002C6__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__A3__7S6002C6__7S6002C1[2]),  2,3},
  {&(_tg__ZTV8S6002C128S6002C11__7S6002C6__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C7__A1__7S6002C1[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C7__A1__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C7__A1__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C7__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C7__A1__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C22__7S6002C1[7]),  7,12},
  {&(_tg__ZTV7S6002C78S6002C22__A3__7S6002C1[6]),  6,7},
  {&(_tg__ZTV7S6002C4__7S6002C78S6002C22__A3__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__7S6002C78S6002C22__A3__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__7S6002C78S6002C22__A3__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C9__7S6002C78S6002C22__A3__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C128S6002C22__A3__7S6002C1[6]),  6,8},
  {&(_tg__ZTV7S6002C9__8S6002C128S6002C22__A3__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C10__8S6002C128S6002C22__A3__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__8S6002C128S6002C22__A3__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__8S6002C128S6002C22__A3__7S6002C1[2]),  2,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C128S6002C22__A3__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C8__8S6002C128S6002C22__A3__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C4__8S6002C22__7S6002C1[5]),  5,8},
  {&(_tg__ZTV7S6002C8__8S6002C22__7S6002C1[3]),  3,3},
  {&(_tg__ZTV7S6002C5__A1__8S6002C22__7S6002C1[3]),  3,4},
  {&(_tg__ZTV7S6002C9__8S6002C22__7S6002C1[3]),  3,4},
  {&(_tg__ZTV8S6002C12__8S6002C22__7S6002C1[6]),  6,8},
  {&(_tg__ZTV8S6002C10__8S6002C22__7S6002C1[9]),  9,13},
  {&(_tg__ZTV7S6002C48S6002C10__A1__8S6002C22__7S6002C1[2]),  2,5},
  {&(_tg__ZTV7S6002C58S6002C10__A2__8S6002C22__7S6002C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S6002C1[];
extern  VTBL_ENTRY _ZTV7S6002C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6002C1[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D0Ev,_ZTv0_n16_N8S6002C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D0Ev,_ZThn9036_N8S6002C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C11D1Ev,_ZTv0_n16_N8S6002C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6002C11D1Ev,_ZThn9036_N8S6002C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C17D0Ev,_ZTv0_n16_N8S6002C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C17D0Ev,_ZThn29768_N8S6002C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C17D1Ev,_ZTv0_n16_N8S6002C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C17D1Ev,_ZThn29768_N8S6002C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C17D0Ev,_ZTv0_n40_N8S6002C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6002C17D0Ev,_ZThn33424_N8S6002C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C17D0Ev,_ZThn20732_N8S6002C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C17D1Ev,_ZTv0_n40_N8S6002C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6002C17D1Ev,_ZThn33424_N8S6002C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C17D1Ev,_ZThn20732_N8S6002C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D0Ev,_ZTv0_n16_N8S6002C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D0Ev,_ZThn8656_N8S6002C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6002C12D0Ev,_ZThn29360_N8S6002C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C12D1Ev,_ZTv0_n16_N8S6002C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6002C12D1Ev,_ZThn8656_N8S6002C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6002C12D1Ev,_ZThn29360_N8S6002C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D0Ev,_ZTv0_n16_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C15D0Ev,_ZThn29768_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6002C15D1Ev,_ZTv0_n16_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6002C15D1Ev,_ZThn29768_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D0Ev,_ZTv0_n40_N8S6002C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C15D0Ev,_ZThn20732_N8S6002C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6002C15D1Ev,_ZTv0_n40_N8S6002C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6002C15D1Ev,_ZThn20732_N8S6002C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6002C1D0Ev,_ZTv0_n36_N7S6002C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6002C1D0Ev,_ZThn176828_N7S6002C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6002C1D1Ev,_ZTv0_n36_N7S6002C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6002C1D1Ev,_ZThn176828_N7S6002C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6002C1D0Ev,_ZTv0_n16_N7S6002C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6002C1D0Ev,_ZThn120956_N7S6002C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6002C1D1Ev,_ZTv0_n16_N7S6002C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6002C1D1Ev,_ZThn120956_N7S6002C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6002C1D0Ev,_ZTv0_n40_N7S6002C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6002C1D0Ev,_ZThn124612_N7S6002C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6002C1D0Ev,_ZThn111920_N7S6002C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6002C1D1Ev,_ZTv0_n40_N7S6002C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6002C1D1Ev,_ZThn124612_N7S6002C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6002C1D1Ev,_ZThn111920_N7S6002C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6002C1D0Ev,_ZTv0_n56_N7S6002C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6002C1D0Ev,_ZThn91188_N7S6002C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6002C1D1Ev,_ZTv0_n56_N7S6002C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6002C1D1Ev,_ZThn91188_N7S6002C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6002C1 = {  "S6002C1", // class name
  bases_S6002C1, 36,
  &(vtc_S6002C1[0]), // expected_vtbl_contents
  &(vtt_S6002C1[0]), // expected_vtt_contents
  ABISELECT(222464,182888), // object size
  NSPAIRA(_ZTI7S6002C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6002C1),200, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6002C1),137, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S785C5_nt  {
  void *s785c5f0;
  int s785c5f1;
  void  mf785c5(); // _ZN9S785C5_nt7mf785c5Ev
  virtual  ~S785C5_nt(); // _ZN9S785C5_ntD1Ev
  S785C5_nt(); // tgen
};
//SIG(-1 S785C5_nt) C1{ vd m Fp Fi}


void  S785C5_nt ::mf785c5(){}
 S785C5_nt ::~S785C5_nt(){ note_dtor("S785C5_nt", this);}
S785C5_nt ::S785C5_nt(){ note_ctor("S785C5_nt", this);} // tgen

//skip512 S785C5_nt

#else // __cplusplus

extern void _ZN9S785C5_ntC1Ev();
extern void _ZN9S785C5_ntD1Ev();
Name_Map name_map_S785C5_nt[] = {
  NSPAIR(_ZN9S785C5_ntC1Ev),
  NSPAIR(_ZN9S785C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern void _ZN9S785C5_ntD1Ev();
extern void _ZN9S785C5_ntD0Ev();
static  VTBL_ENTRY vtc_S785C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S785C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S785C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S785C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S785C5_nt[];
VTBL_ENTRY *P__ZTI9S785C5_nt = _ZTI9S785C5_nt; 
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
Class_Descriptor cd_S785C5_nt = {  "S785C5_nt", // class name
  0,0,//no base classes
  &(vtc_S785C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S785C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S785C5_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  S785C4  : S785C5_nt {
  virtual void  v6(); // _ZN6S785C42v6Ev
  virtual void  v7(); // _ZN6S785C42v7Ev
  virtual void  v8(); // _ZN6S785C42v8Ev
  virtual void  v9(); // _ZN6S785C42v9Ev
  virtual void  v10(); // _ZN6S785C43v10Ev
  virtual void  v11(); // _ZN6S785C43v11Ev
  virtual void  v12(); // _ZN6S785C43v12Ev
  virtual void  v13(); // _ZN6S785C43v13Ev
  virtual void  v14(); // _ZN6S785C43v14Ev
  virtual void  v15(); // _ZN6S785C43v15Ev
  virtual void  v16(); // _ZN6S785C43v16Ev
  virtual void  v17(); // _ZN6S785C43v17Ev
  virtual void  v18(); // _ZN6S785C43v18Ev
  virtual void  v19(); // _ZN6S785C43v19Ev
  virtual void  v20(); // _ZN6S785C43v20Ev
  virtual void  v21(); // _ZN6S785C43v21Ev
  virtual void  v22(); // _ZN6S785C43v22Ev
  virtual void  v23(); // _ZN6S785C43v23Ev
  virtual void  v24(); // _ZN6S785C43v24Ev
  virtual void  v25(); // _ZN6S785C43v25Ev
  virtual void  v26(); // _ZN6S785C43v26Ev
  virtual void  v27(); // _ZN6S785C43v27Ev
  virtual void  v28(); // _ZN6S785C43v28Ev
  virtual void  v29(); // _ZN6S785C43v29Ev
  virtual void  v30(); // _ZN6S785C43v30Ev
  virtual void  v31(); // _ZN6S785C43v31Ev
  virtual void  v32(); // _ZN6S785C43v32Ev
  virtual void  v33(); // _ZN6S785C43v33Ev
  virtual void  v34(); // _ZN6S785C43v34Ev
  virtual void  v35(); // _ZN6S785C43v35Ev
  virtual void  v36(); // _ZN6S785C43v36Ev
  virtual void  v37(); // _ZN6S785C43v37Ev
  virtual void  v38(); // _ZN6S785C43v38Ev
  virtual void  v39(); // _ZN6S785C43v39Ev
  virtual void  v40(); // _ZN6S785C43v40Ev
  virtual void  v41(); // _ZN6S785C43v41Ev
  virtual void  v42(); // _ZN6S785C43v42Ev
  virtual void  v43(); // _ZN6S785C43v43Ev
  virtual void  v44(); // _ZN6S785C43v44Ev
  virtual void  v45(); // _ZN6S785C43v45Ev
  virtual void  v46(); // _ZN6S785C43v46Ev
  virtual void  v47(); // _ZN6S785C43v47Ev
  virtual void  v48(); // _ZN6S785C43v48Ev
  virtual void  v49(); // _ZN6S785C43v49Ev
  virtual void  v50(); // _ZN6S785C43v50Ev
  virtual void  v51(); // _ZN6S785C43v51Ev
  virtual void  v52(); // _ZN6S785C43v52Ev
  virtual void  v53(); // _ZN6S785C43v53Ev
  virtual void  v54(); // _ZN6S785C43v54Ev
  virtual void  v55(); // _ZN6S785C43v55Ev
  virtual void  v56(); // _ZN6S785C43v56Ev
  virtual void  v57(); // _ZN6S785C43v57Ev
  virtual void  v58(); // _ZN6S785C43v58Ev
  virtual void  v59(); // _ZN6S785C43v59Ev
  virtual void  v60(); // _ZN6S785C43v60Ev
  virtual void  v61(); // _ZN6S785C43v61Ev
  virtual void  v62(); // _ZN6S785C43v62Ev
  virtual void  v63(); // _ZN6S785C43v63Ev
  virtual void  v64(); // _ZN6S785C43v64Ev
  virtual void  v65(); // _ZN6S785C43v65Ev
  virtual void  v66(); // _ZN6S785C43v66Ev
  virtual void  v67(); // _ZN6S785C43v67Ev
  virtual void  v68(); // _ZN6S785C43v68Ev
  virtual void  v69(); // _ZN6S785C43v69Ev
  virtual void  v70(); // _ZN6S785C43v70Ev
  virtual void  v71(); // _ZN6S785C43v71Ev
  virtual void  v72(); // _ZN6S785C43v72Ev
  virtual void  v73(); // _ZN6S785C43v73Ev
  virtual void  v74(); // _ZN6S785C43v74Ev
  virtual void  v75(); // _ZN6S785C43v75Ev
  virtual void  v76(); // _ZN6S785C43v76Ev
  virtual void  v77(); // _ZN6S785C43v77Ev
  virtual void  v78(); // _ZN6S785C43v78Ev
  virtual void  v79(); // _ZN6S785C43v79Ev
  virtual void  v80(); // _ZN6S785C43v80Ev
  virtual void  v81(); // _ZN6S785C43v81Ev
  virtual void  v82(); // _ZN6S785C43v82Ev
  virtual void  v83(); // _ZN6S785C43v83Ev
  virtual void  v84(); // _ZN6S785C43v84Ev
  virtual void  v85(); // _ZN6S785C43v85Ev
  virtual void  v86(); // _ZN6S785C43v86Ev
  virtual void  v87(); // _ZN6S785C43v87Ev
  virtual void  v88(); // _ZN6S785C43v88Ev
  virtual void  v89(); // _ZN6S785C43v89Ev
  virtual void  v90(); // _ZN6S785C43v90Ev
  virtual void  v91(); // _ZN6S785C43v91Ev
  virtual void  v92(); // _ZN6S785C43v92Ev
  virtual void  v93(); // _ZN6S785C43v93Ev
  virtual void  v94(); // _ZN6S785C43v94Ev
  virtual void  v95(); // _ZN6S785C43v95Ev
  virtual void  v96(); // _ZN6S785C43v96Ev
  virtual void  v97(); // _ZN6S785C43v97Ev
  virtual void  v98(); // _ZN6S785C43v98Ev
  virtual void  v99(); // _ZN6S785C43v99Ev
  virtual void  v100(); // _ZN6S785C44v100Ev
  virtual void  v101(); // _ZN6S785C44v101Ev
  virtual void  v102(); // _ZN6S785C44v102Ev
  virtual void  v103(); // _ZN6S785C44v103Ev
  virtual void  v104(); // _ZN6S785C44v104Ev
  virtual void  v105(); // _ZN6S785C44v105Ev
  virtual void  v106(); // _ZN6S785C44v106Ev
  virtual void  v107(); // _ZN6S785C44v107Ev
  virtual void  v108(); // _ZN6S785C44v108Ev
  virtual void  v109(); // _ZN6S785C44v109Ev
  virtual void  v110(); // _ZN6S785C44v110Ev
  virtual void  v111(); // _ZN6S785C44v111Ev
  virtual void  v112(); // _ZN6S785C44v112Ev
  virtual void  v113(); // _ZN6S785C44v113Ev
  virtual void  v114(); // _ZN6S785C44v114Ev
  virtual void  v115(); // _ZN6S785C44v115Ev
  virtual void  v116(); // _ZN6S785C44v116Ev
  virtual void  v117(); // _ZN6S785C44v117Ev
  virtual void  v118(); // _ZN6S785C44v118Ev
  virtual void  v119(); // _ZN6S785C44v119Ev
  virtual void  v120(); // _ZN6S785C44v120Ev
  virtual void  v121(); // _ZN6S785C44v121Ev
  virtual void  v122(); // _ZN6S785C44v122Ev
  virtual void  v123(); // _ZN6S785C44v123Ev
  virtual void  v124(); // _ZN6S785C44v124Ev
  virtual void  v125(); // _ZN6S785C44v125Ev
  virtual void  v126(); // _ZN6S785C44v126Ev
  virtual void  v127(); // _ZN6S785C44v127Ev
  ~S785C4(); // tgen
  S785C4(); // tgen
};
//SIG(-1 S785C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S785C4 ::v6(){vfunc_called(this, "_ZN6S785C42v6Ev");}
void  S785C4 ::v7(){vfunc_called(this, "_ZN6S785C42v7Ev");}
void  S785C4 ::v8(){vfunc_called(this, "_ZN6S785C42v8Ev");}
void  S785C4 ::v9(){vfunc_called(this, "_ZN6S785C42v9Ev");}
void  S785C4 ::v10(){vfunc_called(this, "_ZN6S785C43v10Ev");}
void  S785C4 ::v11(){vfunc_called(this, "_ZN6S785C43v11Ev");}
void  S785C4 ::v12(){vfunc_called(this, "_ZN6S785C43v12Ev");}
void  S785C4 ::v13(){vfunc_called(this, "_ZN6S785C43v13Ev");}
void  S785C4 ::v14(){vfunc_called(this, "_ZN6S785C43v14Ev");}
void  S785C4 ::v15(){vfunc_called(this, "_ZN6S785C43v15Ev");}
void  S785C4 ::v16(){vfunc_called(this, "_ZN6S785C43v16Ev");}
void  S785C4 ::v17(){vfunc_called(this, "_ZN6S785C43v17Ev");}
void  S785C4 ::v18(){vfunc_called(this, "_ZN6S785C43v18Ev");}
void  S785C4 ::v19(){vfunc_called(this, "_ZN6S785C43v19Ev");}
void  S785C4 ::v20(){vfunc_called(this, "_ZN6S785C43v20Ev");}
void  S785C4 ::v21(){vfunc_called(this, "_ZN6S785C43v21Ev");}
void  S785C4 ::v22(){vfunc_called(this, "_ZN6S785C43v22Ev");}
void  S785C4 ::v23(){vfunc_called(this, "_ZN6S785C43v23Ev");}
void  S785C4 ::v24(){vfunc_called(this, "_ZN6S785C43v24Ev");}
void  S785C4 ::v25(){vfunc_called(this, "_ZN6S785C43v25Ev");}
void  S785C4 ::v26(){vfunc_called(this, "_ZN6S785C43v26Ev");}
void  S785C4 ::v27(){vfunc_called(this, "_ZN6S785C43v27Ev");}
void  S785C4 ::v28(){vfunc_called(this, "_ZN6S785C43v28Ev");}
void  S785C4 ::v29(){vfunc_called(this, "_ZN6S785C43v29Ev");}
void  S785C4 ::v30(){vfunc_called(this, "_ZN6S785C43v30Ev");}
void  S785C4 ::v31(){vfunc_called(this, "_ZN6S785C43v31Ev");}
void  S785C4 ::v32(){vfunc_called(this, "_ZN6S785C43v32Ev");}
void  S785C4 ::v33(){vfunc_called(this, "_ZN6S785C43v33Ev");}
void  S785C4 ::v34(){vfunc_called(this, "_ZN6S785C43v34Ev");}
void  S785C4 ::v35(){vfunc_called(this, "_ZN6S785C43v35Ev");}
void  S785C4 ::v36(){vfunc_called(this, "_ZN6S785C43v36Ev");}
void  S785C4 ::v37(){vfunc_called(this, "_ZN6S785C43v37Ev");}
void  S785C4 ::v38(){vfunc_called(this, "_ZN6S785C43v38Ev");}
void  S785C4 ::v39(){vfunc_called(this, "_ZN6S785C43v39Ev");}
void  S785C4 ::v40(){vfunc_called(this, "_ZN6S785C43v40Ev");}
void  S785C4 ::v41(){vfunc_called(this, "_ZN6S785C43v41Ev");}
void  S785C4 ::v42(){vfunc_called(this, "_ZN6S785C43v42Ev");}
void  S785C4 ::v43(){vfunc_called(this, "_ZN6S785C43v43Ev");}
void  S785C4 ::v44(){vfunc_called(this, "_ZN6S785C43v44Ev");}
void  S785C4 ::v45(){vfunc_called(this, "_ZN6S785C43v45Ev");}
void  S785C4 ::v46(){vfunc_called(this, "_ZN6S785C43v46Ev");}
void  S785C4 ::v47(){vfunc_called(this, "_ZN6S785C43v47Ev");}
void  S785C4 ::v48(){vfunc_called(this, "_ZN6S785C43v48Ev");}
void  S785C4 ::v49(){vfunc_called(this, "_ZN6S785C43v49Ev");}
void  S785C4 ::v50(){vfunc_called(this, "_ZN6S785C43v50Ev");}
void  S785C4 ::v51(){vfunc_called(this, "_ZN6S785C43v51Ev");}
void  S785C4 ::v52(){vfunc_called(this, "_ZN6S785C43v52Ev");}
void  S785C4 ::v53(){vfunc_called(this, "_ZN6S785C43v53Ev");}
void  S785C4 ::v54(){vfunc_called(this, "_ZN6S785C43v54Ev");}
void  S785C4 ::v55(){vfunc_called(this, "_ZN6S785C43v55Ev");}
void  S785C4 ::v56(){vfunc_called(this, "_ZN6S785C43v56Ev");}
void  S785C4 ::v57(){vfunc_called(this, "_ZN6S785C43v57Ev");}
void  S785C4 ::v58(){vfunc_called(this, "_ZN6S785C43v58Ev");}
void  S785C4 ::v59(){vfunc_called(this, "_ZN6S785C43v59Ev");}
void  S785C4 ::v60(){vfunc_called(this, "_ZN6S785C43v60Ev");}
void  S785C4 ::v61(){vfunc_called(this, "_ZN6S785C43v61Ev");}
void  S785C4 ::v62(){vfunc_called(this, "_ZN6S785C43v62Ev");}
void  S785C4 ::v63(){vfunc_called(this, "_ZN6S785C43v63Ev");}
void  S785C4 ::v64(){vfunc_called(this, "_ZN6S785C43v64Ev");}
void  S785C4 ::v65(){vfunc_called(this, "_ZN6S785C43v65Ev");}
void  S785C4 ::v66(){vfunc_called(this, "_ZN6S785C43v66Ev");}
void  S785C4 ::v67(){vfunc_called(this, "_ZN6S785C43v67Ev");}
void  S785C4 ::v68(){vfunc_called(this, "_ZN6S785C43v68Ev");}
void  S785C4 ::v69(){vfunc_called(this, "_ZN6S785C43v69Ev");}
void  S785C4 ::v70(){vfunc_called(this, "_ZN6S785C43v70Ev");}
void  S785C4 ::v71(){vfunc_called(this, "_ZN6S785C43v71Ev");}
void  S785C4 ::v72(){vfunc_called(this, "_ZN6S785C43v72Ev");}
void  S785C4 ::v73(){vfunc_called(this, "_ZN6S785C43v73Ev");}
void  S785C4 ::v74(){vfunc_called(this, "_ZN6S785C43v74Ev");}
void  S785C4 ::v75(){vfunc_called(this, "_ZN6S785C43v75Ev");}
void  S785C4 ::v76(){vfunc_called(this, "_ZN6S785C43v76Ev");}
void  S785C4 ::v77(){vfunc_called(this, "_ZN6S785C43v77Ev");}
void  S785C4 ::v78(){vfunc_called(this, "_ZN6S785C43v78Ev");}
void  S785C4 ::v79(){vfunc_called(this, "_ZN6S785C43v79Ev");}
void  S785C4 ::v80(){vfunc_called(this, "_ZN6S785C43v80Ev");}
void  S785C4 ::v81(){vfunc_called(this, "_ZN6S785C43v81Ev");}
void  S785C4 ::v82(){vfunc_called(this, "_ZN6S785C43v82Ev");}
void  S785C4 ::v83(){vfunc_called(this, "_ZN6S785C43v83Ev");}
void  S785C4 ::v84(){vfunc_called(this, "_ZN6S785C43v84Ev");}
void  S785C4 ::v85(){vfunc_called(this, "_ZN6S785C43v85Ev");}
void  S785C4 ::v86(){vfunc_called(this, "_ZN6S785C43v86Ev");}
void  S785C4 ::v87(){vfunc_called(this, "_ZN6S785C43v87Ev");}
void  S785C4 ::v88(){vfunc_called(this, "_ZN6S785C43v88Ev");}
void  S785C4 ::v89(){vfunc_called(this, "_ZN6S785C43v89Ev");}
void  S785C4 ::v90(){vfunc_called(this, "_ZN6S785C43v90Ev");}
void  S785C4 ::v91(){vfunc_called(this, "_ZN6S785C43v91Ev");}
void  S785C4 ::v92(){vfunc_called(this, "_ZN6S785C43v92Ev");}
void  S785C4 ::v93(){vfunc_called(this, "_ZN6S785C43v93Ev");}
void  S785C4 ::v94(){vfunc_called(this, "_ZN6S785C43v94Ev");}
void  S785C4 ::v95(){vfunc_called(this, "_ZN6S785C43v95Ev");}
void  S785C4 ::v96(){vfunc_called(this, "_ZN6S785C43v96Ev");}
void  S785C4 ::v97(){vfunc_called(this, "_ZN6S785C43v97Ev");}
void  S785C4 ::v98(){vfunc_called(this, "_ZN6S785C43v98Ev");}
void  S785C4 ::v99(){vfunc_called(this, "_ZN6S785C43v99Ev");}
void  S785C4 ::v100(){vfunc_called(this, "_ZN6S785C44v100Ev");}
void  S785C4 ::v101(){vfunc_called(this, "_ZN6S785C44v101Ev");}
void  S785C4 ::v102(){vfunc_called(this, "_ZN6S785C44v102Ev");}
void  S785C4 ::v103(){vfunc_called(this, "_ZN6S785C44v103Ev");}
void  S785C4 ::v104(){vfunc_called(this, "_ZN6S785C44v104Ev");}
void  S785C4 ::v105(){vfunc_called(this, "_ZN6S785C44v105Ev");}
void  S785C4 ::v106(){vfunc_called(this, "_ZN6S785C44v106Ev");}
void  S785C4 ::v107(){vfunc_called(this, "_ZN6S785C44v107Ev");}
void  S785C4 ::v108(){vfunc_called(this, "_ZN6S785C44v108Ev");}
void  S785C4 ::v109(){vfunc_called(this, "_ZN6S785C44v109Ev");}
void  S785C4 ::v110(){vfunc_called(this, "_ZN6S785C44v110Ev");}
void  S785C4 ::v111(){vfunc_called(this, "_ZN6S785C44v111Ev");}
void  S785C4 ::v112(){vfunc_called(this, "_ZN6S785C44v112Ev");}
void  S785C4 ::v113(){vfunc_called(this, "_ZN6S785C44v113Ev");}
void  S785C4 ::v114(){vfunc_called(this, "_ZN6S785C44v114Ev");}
void  S785C4 ::v115(){vfunc_called(this, "_ZN6S785C44v115Ev");}
void  S785C4 ::v116(){vfunc_called(this, "_ZN6S785C44v116Ev");}
void  S785C4 ::v117(){vfunc_called(this, "_ZN6S785C44v117Ev");}
void  S785C4 ::v118(){vfunc_called(this, "_ZN6S785C44v118Ev");}
void  S785C4 ::v119(){vfunc_called(this, "_ZN6S785C44v119Ev");}
void  S785C4 ::v120(){vfunc_called(this, "_ZN6S785C44v120Ev");}
void  S785C4 ::v121(){vfunc_called(this, "_ZN6S785C44v121Ev");}
void  S785C4 ::v122(){vfunc_called(this, "_ZN6S785C44v122Ev");}
void  S785C4 ::v123(){vfunc_called(this, "_ZN6S785C44v123Ev");}
void  S785C4 ::v124(){vfunc_called(this, "_ZN6S785C44v124Ev");}
void  S785C4 ::v125(){vfunc_called(this, "_ZN6S785C44v125Ev");}
void  S785C4 ::v126(){vfunc_called(this, "_ZN6S785C44v126Ev");}
void  S785C4 ::v127(){vfunc_called(this, "_ZN6S785C44v127Ev");}
S785C4 ::~S785C4(){ note_dtor("S785C4", this);} // tgen
S785C4 ::S785C4(){ note_ctor("S785C4", this);} // tgen

static void Test_S785C4()
{
  extern Class_Descriptor cd_S785C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S785C4, buf);
    S785C4 *dp, &lv = *(dp=new (buf) S785C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S785C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S785C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S785C4");
    test_class_info(&lv, &cd_S785C4);
    dp->~S785C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS785C4(Test_S785C4, "S785C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S785C4C1Ev();
extern void _ZN6S785C4D1Ev();
Name_Map name_map_S785C4[] = {
  NSPAIR(_ZN6S785C4C1Ev),
  NSPAIR(_ZN6S785C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S785C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S785C4[];
extern void _ZN6S785C4D1Ev();
extern void _ZN6S785C4D0Ev();
extern void _ZN6S785C42v6Ev();
extern void _ZN6S785C42v7Ev();
extern void _ZN6S785C42v8Ev();
extern void _ZN6S785C42v9Ev();
extern void _ZN6S785C43v10Ev();
extern void _ZN6S785C43v11Ev();
extern void _ZN6S785C43v12Ev();
extern void _ZN6S785C43v13Ev();
extern void _ZN6S785C43v14Ev();
extern void _ZN6S785C43v15Ev();
extern void _ZN6S785C43v16Ev();
extern void _ZN6S785C43v17Ev();
extern void _ZN6S785C43v18Ev();
extern void _ZN6S785C43v19Ev();
extern void _ZN6S785C43v20Ev();
extern void _ZN6S785C43v21Ev();
extern void _ZN6S785C43v22Ev();
extern void _ZN6S785C43v23Ev();
extern void _ZN6S785C43v24Ev();
extern void _ZN6S785C43v25Ev();
extern void _ZN6S785C43v26Ev();
extern void _ZN6S785C43v27Ev();
extern void _ZN6S785C43v28Ev();
extern void _ZN6S785C43v29Ev();
extern void _ZN6S785C43v30Ev();
extern void _ZN6S785C43v31Ev();
extern void _ZN6S785C43v32Ev();
extern void _ZN6S785C43v33Ev();
extern void _ZN6S785C43v34Ev();
extern void _ZN6S785C43v35Ev();
extern void _ZN6S785C43v36Ev();
extern void _ZN6S785C43v37Ev();
extern void _ZN6S785C43v38Ev();
extern void _ZN6S785C43v39Ev();
extern void _ZN6S785C43v40Ev();
extern void _ZN6S785C43v41Ev();
extern void _ZN6S785C43v42Ev();
extern void _ZN6S785C43v43Ev();
extern void _ZN6S785C43v44Ev();
extern void _ZN6S785C43v45Ev();
extern void _ZN6S785C43v46Ev();
extern void _ZN6S785C43v47Ev();
extern void _ZN6S785C43v48Ev();
extern void _ZN6S785C43v49Ev();
extern void _ZN6S785C43v50Ev();
extern void _ZN6S785C43v51Ev();
extern void _ZN6S785C43v52Ev();
extern void _ZN6S785C43v53Ev();
extern void _ZN6S785C43v54Ev();
extern void _ZN6S785C43v55Ev();
extern void _ZN6S785C43v56Ev();
extern void _ZN6S785C43v57Ev();
extern void _ZN6S785C43v58Ev();
extern void _ZN6S785C43v59Ev();
extern void _ZN6S785C43v60Ev();
extern void _ZN6S785C43v61Ev();
extern void _ZN6S785C43v62Ev();
extern void _ZN6S785C43v63Ev();
extern void _ZN6S785C43v64Ev();
extern void _ZN6S785C43v65Ev();
extern void _ZN6S785C43v66Ev();
extern void _ZN6S785C43v67Ev();
extern void _ZN6S785C43v68Ev();
extern void _ZN6S785C43v69Ev();
extern void _ZN6S785C43v70Ev();
extern void _ZN6S785C43v71Ev();
extern void _ZN6S785C43v72Ev();
extern void _ZN6S785C43v73Ev();
extern void _ZN6S785C43v74Ev();
extern void _ZN6S785C43v75Ev();
extern void _ZN6S785C43v76Ev();
extern void _ZN6S785C43v77Ev();
extern void _ZN6S785C43v78Ev();
extern void _ZN6S785C43v79Ev();
extern void _ZN6S785C43v80Ev();
extern void _ZN6S785C43v81Ev();
extern void _ZN6S785C43v82Ev();
extern void _ZN6S785C43v83Ev();
extern void _ZN6S785C43v84Ev();
extern void _ZN6S785C43v85Ev();
extern void _ZN6S785C43v86Ev();
extern void _ZN6S785C43v87Ev();
extern void _ZN6S785C43v88Ev();
extern void _ZN6S785C43v89Ev();
extern void _ZN6S785C43v90Ev();
extern void _ZN6S785C43v91Ev();
extern void _ZN6S785C43v92Ev();
extern void _ZN6S785C43v93Ev();
extern void _ZN6S785C43v94Ev();
extern void _ZN6S785C43v95Ev();
extern void _ZN6S785C43v96Ev();
extern void _ZN6S785C43v97Ev();
extern void _ZN6S785C43v98Ev();
extern void _ZN6S785C43v99Ev();
extern void _ZN6S785C44v100Ev();
extern void _ZN6S785C44v101Ev();
extern void _ZN6S785C44v102Ev();
extern void _ZN6S785C44v103Ev();
extern void _ZN6S785C44v104Ev();
extern void _ZN6S785C44v105Ev();
extern void _ZN6S785C44v106Ev();
extern void _ZN6S785C44v107Ev();
extern void _ZN6S785C44v108Ev();
extern void _ZN6S785C44v109Ev();
extern void _ZN6S785C44v110Ev();
extern void _ZN6S785C44v111Ev();
extern void _ZN6S785C44v112Ev();
extern void _ZN6S785C44v113Ev();
extern void _ZN6S785C44v114Ev();
extern void _ZN6S785C44v115Ev();
extern void _ZN6S785C44v116Ev();
extern void _ZN6S785C44v117Ev();
extern void _ZN6S785C44v118Ev();
extern void _ZN6S785C44v119Ev();
extern void _ZN6S785C44v120Ev();
extern void _ZN6S785C44v121Ev();
extern void _ZN6S785C44v122Ev();
extern void _ZN6S785C44v123Ev();
extern void _ZN6S785C44v124Ev();
extern void _ZN6S785C44v125Ev();
extern void _ZN6S785C44v126Ev();
extern void _ZN6S785C44v127Ev();
static  VTBL_ENTRY vtc_S785C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S785C4[0]),
  (VTBL_ENTRY)&_ZN6S785C4D1Ev,
  (VTBL_ENTRY)&_ZN6S785C4D0Ev,
  (VTBL_ENTRY)&_ZN6S785C42v6Ev,
  (VTBL_ENTRY)&_ZN6S785C42v7Ev,
  (VTBL_ENTRY)&_ZN6S785C42v8Ev,
  (VTBL_ENTRY)&_ZN6S785C42v9Ev,
  (VTBL_ENTRY)&_ZN6S785C43v10Ev,
  (VTBL_ENTRY)&_ZN6S785C43v11Ev,
  (VTBL_ENTRY)&_ZN6S785C43v12Ev,
  (VTBL_ENTRY)&_ZN6S785C43v13Ev,
  (VTBL_ENTRY)&_ZN6S785C43v14Ev,
  (VTBL_ENTRY)&_ZN6S785C43v15Ev,
  (VTBL_ENTRY)&_ZN6S785C43v16Ev,
  (VTBL_ENTRY)&_ZN6S785C43v17Ev,
  (VTBL_ENTRY)&_ZN6S785C43v18Ev,
  (VTBL_ENTRY)&_ZN6S785C43v19Ev,
  (VTBL_ENTRY)&_ZN6S785C43v20Ev,
  (VTBL_ENTRY)&_ZN6S785C43v21Ev,
  (VTBL_ENTRY)&_ZN6S785C43v22Ev,
  (VTBL_ENTRY)&_ZN6S785C43v23Ev,
  (VTBL_ENTRY)&_ZN6S785C43v24Ev,
  (VTBL_ENTRY)&_ZN6S785C43v25Ev,
  (VTBL_ENTRY)&_ZN6S785C43v26Ev,
  (VTBL_ENTRY)&_ZN6S785C43v27Ev,
  (VTBL_ENTRY)&_ZN6S785C43v28Ev,
  (VTBL_ENTRY)&_ZN6S785C43v29Ev,
  (VTBL_ENTRY)&_ZN6S785C43v30Ev,
  (VTBL_ENTRY)&_ZN6S785C43v31Ev,
  (VTBL_ENTRY)&_ZN6S785C43v32Ev,
  (VTBL_ENTRY)&_ZN6S785C43v33Ev,
  (VTBL_ENTRY)&_ZN6S785C43v34Ev,
  (VTBL_ENTRY)&_ZN6S785C43v35Ev,
  (VTBL_ENTRY)&_ZN6S785C43v36Ev,
  (VTBL_ENTRY)&_ZN6S785C43v37Ev,
  (VTBL_ENTRY)&_ZN6S785C43v38Ev,
  (VTBL_ENTRY)&_ZN6S785C43v39Ev,
  (VTBL_ENTRY)&_ZN6S785C43v40Ev,
  (VTBL_ENTRY)&_ZN6S785C43v41Ev,
  (VTBL_ENTRY)&_ZN6S785C43v42Ev,
  (VTBL_ENTRY)&_ZN6S785C43v43Ev,
  (VTBL_ENTRY)&_ZN6S785C43v44Ev,
  (VTBL_ENTRY)&_ZN6S785C43v45Ev,
  (VTBL_ENTRY)&_ZN6S785C43v46Ev,
  (VTBL_ENTRY)&_ZN6S785C43v47Ev,
  (VTBL_ENTRY)&_ZN6S785C43v48Ev,
  (VTBL_ENTRY)&_ZN6S785C43v49Ev,
  (VTBL_ENTRY)&_ZN6S785C43v50Ev,
  (VTBL_ENTRY)&_ZN6S785C43v51Ev,
  (VTBL_ENTRY)&_ZN6S785C43v52Ev,
  (VTBL_ENTRY)&_ZN6S785C43v53Ev,
  (VTBL_ENTRY)&_ZN6S785C43v54Ev,
  (VTBL_ENTRY)&_ZN6S785C43v55Ev,
  (VTBL_ENTRY)&_ZN6S785C43v56Ev,
  (VTBL_ENTRY)&_ZN6S785C43v57Ev,
  (VTBL_ENTRY)&_ZN6S785C43v58Ev,
  (VTBL_ENTRY)&_ZN6S785C43v59Ev,
  (VTBL_ENTRY)&_ZN6S785C43v60Ev,
  (VTBL_ENTRY)&_ZN6S785C43v61Ev,
  (VTBL_ENTRY)&_ZN6S785C43v62Ev,
  (VTBL_ENTRY)&_ZN6S785C43v63Ev,
  (VTBL_ENTRY)&_ZN6S785C43v64Ev,
  (VTBL_ENTRY)&_ZN6S785C43v65Ev,
  (VTBL_ENTRY)&_ZN6S785C43v66Ev,
  (VTBL_ENTRY)&_ZN6S785C43v67Ev,
  (VTBL_ENTRY)&_ZN6S785C43v68Ev,
  (VTBL_ENTRY)&_ZN6S785C43v69Ev,
  (VTBL_ENTRY)&_ZN6S785C43v70Ev,
  (VTBL_ENTRY)&_ZN6S785C43v71Ev,
  (VTBL_ENTRY)&_ZN6S785C43v72Ev,
  (VTBL_ENTRY)&_ZN6S785C43v73Ev,
  (VTBL_ENTRY)&_ZN6S785C43v74Ev,
  (VTBL_ENTRY)&_ZN6S785C43v75Ev,
  (VTBL_ENTRY)&_ZN6S785C43v76Ev,
  (VTBL_ENTRY)&_ZN6S785C43v77Ev,
  (VTBL_ENTRY)&_ZN6S785C43v78Ev,
  (VTBL_ENTRY)&_ZN6S785C43v79Ev,
  (VTBL_ENTRY)&_ZN6S785C43v80Ev,
  (VTBL_ENTRY)&_ZN6S785C43v81Ev,
  (VTBL_ENTRY)&_ZN6S785C43v82Ev,
  (VTBL_ENTRY)&_ZN6S785C43v83Ev,
  (VTBL_ENTRY)&_ZN6S785C43v84Ev,
  (VTBL_ENTRY)&_ZN6S785C43v85Ev,
  (VTBL_ENTRY)&_ZN6S785C43v86Ev,
  (VTBL_ENTRY)&_ZN6S785C43v87Ev,
  (VTBL_ENTRY)&_ZN6S785C43v88Ev,
  (VTBL_ENTRY)&_ZN6S785C43v89Ev,
  (VTBL_ENTRY)&_ZN6S785C43v90Ev,
  (VTBL_ENTRY)&_ZN6S785C43v91Ev,
  (VTBL_ENTRY)&_ZN6S785C43v92Ev,
  (VTBL_ENTRY)&_ZN6S785C43v93Ev,
  (VTBL_ENTRY)&_ZN6S785C43v94Ev,
  (VTBL_ENTRY)&_ZN6S785C43v95Ev,
  (VTBL_ENTRY)&_ZN6S785C43v96Ev,
  (VTBL_ENTRY)&_ZN6S785C43v97Ev,
  (VTBL_ENTRY)&_ZN6S785C43v98Ev,
  (VTBL_ENTRY)&_ZN6S785C43v99Ev,
  (VTBL_ENTRY)&_ZN6S785C44v100Ev,
  (VTBL_ENTRY)&_ZN6S785C44v101Ev,
  (VTBL_ENTRY)&_ZN6S785C44v102Ev,
  (VTBL_ENTRY)&_ZN6S785C44v103Ev,
  (VTBL_ENTRY)&_ZN6S785C44v104Ev,
  (VTBL_ENTRY)&_ZN6S785C44v105Ev,
  (VTBL_ENTRY)&_ZN6S785C44v106Ev,
  (VTBL_ENTRY)&_ZN6S785C44v107Ev,
  (VTBL_ENTRY)&_ZN6S785C44v108Ev,
  (VTBL_ENTRY)&_ZN6S785C44v109Ev,
  (VTBL_ENTRY)&_ZN6S785C44v110Ev,
  (VTBL_ENTRY)&_ZN6S785C44v111Ev,
  (VTBL_ENTRY)&_ZN6S785C44v112Ev,
  (VTBL_ENTRY)&_ZN6S785C44v113Ev,
  (VTBL_ENTRY)&_ZN6S785C44v114Ev,
  (VTBL_ENTRY)&_ZN6S785C44v115Ev,
  (VTBL_ENTRY)&_ZN6S785C44v116Ev,
  (VTBL_ENTRY)&_ZN6S785C44v117Ev,
  (VTBL_ENTRY)&_ZN6S785C44v118Ev,
  (VTBL_ENTRY)&_ZN6S785C44v119Ev,
  (VTBL_ENTRY)&_ZN6S785C44v120Ev,
  (VTBL_ENTRY)&_ZN6S785C44v121Ev,
  (VTBL_ENTRY)&_ZN6S785C44v122Ev,
  (VTBL_ENTRY)&_ZN6S785C44v123Ev,
  (VTBL_ENTRY)&_ZN6S785C44v124Ev,
  (VTBL_ENTRY)&_ZN6S785C44v125Ev,
  (VTBL_ENTRY)&_ZN6S785C44v126Ev,
  (VTBL_ENTRY)&_ZN6S785C44v127Ev,
};
extern VTBL_ENTRY _ZTI6S785C4[];
extern  VTBL_ENTRY _ZTV6S785C4[];
Class_Descriptor cd_S785C4 = {  "S785C4", // class name
  bases_S785C4, 1,
  &(vtc_S785C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S785C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S785C4),126, //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  S785C3  : S785C4 {
  virtual void  v128(); // _ZN6S785C34v128Ev
  virtual void  v129(); // _ZN6S785C34v129Ev
  virtual void  v130(); // _ZN6S785C34v130Ev
  virtual void  v131(); // _ZN6S785C34v131Ev
  virtual void  v132(); // _ZN6S785C34v132Ev
  virtual void  v133(); // _ZN6S785C34v133Ev
  virtual void  v134(); // _ZN6S785C34v134Ev
  virtual void  v135(); // _ZN6S785C34v135Ev
  virtual void  v136(); // _ZN6S785C34v136Ev
  virtual void  v137(); // _ZN6S785C34v137Ev
  virtual void  v138(); // _ZN6S785C34v138Ev
  virtual void  v139(); // _ZN6S785C34v139Ev
  virtual void  v140(); // _ZN6S785C34v140Ev
  virtual void  v141(); // _ZN6S785C34v141Ev
  virtual void  v142(); // _ZN6S785C34v142Ev
  virtual void  v143(); // _ZN6S785C34v143Ev
  virtual void  v144(); // _ZN6S785C34v144Ev
  virtual void  v145(); // _ZN6S785C34v145Ev
  ~S785C3(); // tgen
  S785C3(); // tgen
};
//SIG(-1 S785C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S785C3 ::v128(){vfunc_called(this, "_ZN6S785C34v128Ev");}
void  S785C3 ::v129(){vfunc_called(this, "_ZN6S785C34v129Ev");}
void  S785C3 ::v130(){vfunc_called(this, "_ZN6S785C34v130Ev");}
void  S785C3 ::v131(){vfunc_called(this, "_ZN6S785C34v131Ev");}
void  S785C3 ::v132(){vfunc_called(this, "_ZN6S785C34v132Ev");}
void  S785C3 ::v133(){vfunc_called(this, "_ZN6S785C34v133Ev");}
void  S785C3 ::v134(){vfunc_called(this, "_ZN6S785C34v134Ev");}
void  S785C3 ::v135(){vfunc_called(this, "_ZN6S785C34v135Ev");}
void  S785C3 ::v136(){vfunc_called(this, "_ZN6S785C34v136Ev");}
void  S785C3 ::v137(){vfunc_called(this, "_ZN6S785C34v137Ev");}
void  S785C3 ::v138(){vfunc_called(this, "_ZN6S785C34v138Ev");}
void  S785C3 ::v139(){vfunc_called(this, "_ZN6S785C34v139Ev");}
void  S785C3 ::v140(){vfunc_called(this, "_ZN6S785C34v140Ev");}
void  S785C3 ::v141(){vfunc_called(this, "_ZN6S785C34v141Ev");}
void  S785C3 ::v142(){vfunc_called(this, "_ZN6S785C34v142Ev");}
void  S785C3 ::v143(){vfunc_called(this, "_ZN6S785C34v143Ev");}
void  S785C3 ::v144(){vfunc_called(this, "_ZN6S785C34v144Ev");}
void  S785C3 ::v145(){vfunc_called(this, "_ZN6S785C34v145Ev");}
S785C3 ::~S785C3(){ note_dtor("S785C3", this);} // tgen
S785C3 ::S785C3(){ note_ctor("S785C3", this);} // tgen

static void Test_S785C3()
{
  extern Class_Descriptor cd_S785C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S785C3, buf);
    S785C3 *dp, &lv = *(dp=new (buf) S785C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S785C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S785C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S785C4*), 0, "S785C3");
    check_base_class_offset(lv, (S785C4*), 0, "S785C3");
    test_class_info(&lv, &cd_S785C3);
    dp->~S785C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS785C3(Test_S785C3, "S785C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S785C3C1Ev();
extern void _ZN6S785C3D1Ev();
Name_Map name_map_S785C3[] = {
  NSPAIR(_ZN6S785C3C1Ev),
  NSPAIR(_ZN6S785C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S785C4;
extern VTBL_ENTRY _ZTI6S785C4[];
extern  VTBL_ENTRY _ZTV6S785C4[];
static Base_Class bases_S785C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S785C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S785C3[];
extern void _ZN6S785C3D1Ev();
extern void _ZN6S785C3D0Ev();
extern void _ZN6S785C42v6Ev();
extern void _ZN6S785C42v7Ev();
extern void _ZN6S785C42v8Ev();
extern void _ZN6S785C42v9Ev();
extern void _ZN6S785C43v10Ev();
extern void _ZN6S785C43v11Ev();
extern void _ZN6S785C43v12Ev();
extern void _ZN6S785C43v13Ev();
extern void _ZN6S785C43v14Ev();
extern void _ZN6S785C43v15Ev();
extern void _ZN6S785C43v16Ev();
extern void _ZN6S785C43v17Ev();
extern void _ZN6S785C43v18Ev();
extern void _ZN6S785C43v19Ev();
extern void _ZN6S785C43v20Ev();
extern void _ZN6S785C43v21Ev();
extern void _ZN6S785C43v22Ev();
extern void _ZN6S785C43v23Ev();
extern void _ZN6S785C43v24Ev();
extern void _ZN6S785C43v25Ev();
extern void _ZN6S785C43v26Ev();
extern void _ZN6S785C43v27Ev();
extern void _ZN6S785C43v28Ev();
extern void _ZN6S785C43v29Ev();
extern void _ZN6S785C43v30Ev();
extern void _ZN6S785C43v31Ev();
extern void _ZN6S785C43v32Ev();
extern void _ZN6S785C43v33Ev();
extern void _ZN6S785C43v34Ev();
extern void _ZN6S785C43v35Ev();
extern void _ZN6S785C43v36Ev();
extern void _ZN6S785C43v37Ev();
extern void _ZN6S785C43v38Ev();
extern void _ZN6S785C43v39Ev();
extern void _ZN6S785C43v40Ev();
extern void _ZN6S785C43v41Ev();
extern void _ZN6S785C43v42Ev();
extern void _ZN6S785C43v43Ev();
extern void _ZN6S785C43v44Ev();
extern void _ZN6S785C43v45Ev();
extern void _ZN6S785C43v46Ev();
extern void _ZN6S785C43v47Ev();
extern void _ZN6S785C43v48Ev();
extern void _ZN6S785C43v49Ev();
extern void _ZN6S785C43v50Ev();
extern void _ZN6S785C43v51Ev();
extern void _ZN6S785C43v52Ev();
extern void _ZN6S785C43v53Ev();
extern void _ZN6S785C43v54Ev();
extern void _ZN6S785C43v55Ev();
extern void _ZN6S785C43v56Ev();
extern void _ZN6S785C43v57Ev();
extern void _ZN6S785C43v58Ev();
extern void _ZN6S785C43v59Ev();
extern void _ZN6S785C43v60Ev();
extern void _ZN6S785C43v61Ev();
extern void _ZN6S785C43v62Ev();
extern void _ZN6S785C43v63Ev();
extern void _ZN6S785C43v64Ev();
extern void _ZN6S785C43v65Ev();
extern void _ZN6S785C43v66Ev();
extern void _ZN6S785C43v67Ev();
extern void _ZN6S785C43v68Ev();
extern void _ZN6S785C43v69Ev();
extern void _ZN6S785C43v70Ev();
extern void _ZN6S785C43v71Ev();
extern void _ZN6S785C43v72Ev();
extern void _ZN6S785C43v73Ev();
extern void _ZN6S785C43v74Ev();
extern void _ZN6S785C43v75Ev();
extern void _ZN6S785C43v76Ev();
extern void _ZN6S785C43v77Ev();
extern void _ZN6S785C43v78Ev();
extern void _ZN6S785C43v79Ev();
extern void _ZN6S785C43v80Ev();
extern void _ZN6S785C43v81Ev();
extern void _ZN6S785C43v82Ev();
extern void _ZN6S785C43v83Ev();
extern void _ZN6S785C43v84Ev();
extern void _ZN6S785C43v85Ev();
extern void _ZN6S785C43v86Ev();
extern void _ZN6S785C43v87Ev();
extern void _ZN6S785C43v88Ev();
extern void _ZN6S785C43v89Ev();
extern void _ZN6S785C43v90Ev();
extern void _ZN6S785C43v91Ev();
extern void _ZN6S785C43v92Ev();
extern void _ZN6S785C43v93Ev();
extern void _ZN6S785C43v94Ev();
extern void _ZN6S785C43v95Ev();
extern void _ZN6S785C43v96Ev();
extern void _ZN6S785C43v97Ev();
extern void _ZN6S785C43v98Ev();
extern void _ZN6S785C43v99Ev();
extern void _ZN6S785C44v100Ev();
extern void _ZN6S785C44v101Ev();
extern void _ZN6S785C44v102Ev();
extern void _ZN6S785C44v103Ev();
extern void _ZN6S785C44v104Ev();
extern void _ZN6S785C44v105Ev();
extern void _ZN6S785C44v106Ev();
extern void _ZN6S785C44v107Ev();
extern void _ZN6S785C44v108Ev();
extern void _ZN6S785C44v109Ev();
extern void _ZN6S785C44v110Ev();
extern void _ZN6S785C44v111Ev();
extern void _ZN6S785C44v112Ev();
extern void _ZN6S785C44v113Ev();
extern void _ZN6S785C44v114Ev();
extern void _ZN6S785C44v115Ev();
extern void _ZN6S785C44v116Ev();
extern void _ZN6S785C44v117Ev();
extern void _ZN6S785C44v118Ev();
extern void _ZN6S785C44v119Ev();
extern void _ZN6S785C44v120Ev();
extern void _ZN6S785C44v121Ev();
extern void _ZN6S785C44v122Ev();
extern void _ZN6S785C44v123Ev();
extern void _ZN6S785C44v124Ev();
extern void _ZN6S785C44v125Ev();
extern void _ZN6S785C44v126Ev();
extern void _ZN6S785C44v127Ev();
extern void _ZN6S785C34v128Ev();
extern void _ZN6S785C34v129Ev();
extern void _ZN6S785C34v130Ev();
extern void _ZN6S785C34v131Ev();
extern void _ZN6S785C34v132Ev();
extern void _ZN6S785C34v133Ev();
extern void _ZN6S785C34v134Ev();
extern void _ZN6S785C34v135Ev();
extern void _ZN6S785C34v136Ev();
extern void _ZN6S785C34v137Ev();
extern void _ZN6S785C34v138Ev();
extern void _ZN6S785C34v139Ev();
extern void _ZN6S785C34v140Ev();
extern void _ZN6S785C34v141Ev();
extern void _ZN6S785C34v142Ev();
extern void _ZN6S785C34v143Ev();
extern void _ZN6S785C34v144Ev();
extern void _ZN6S785C34v145Ev();
static  VTBL_ENTRY vtc_S785C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S785C3[0]),
  (VTBL_ENTRY)&_ZN6S785C3D1Ev,
  (VTBL_ENTRY)&_ZN6S785C3D0Ev,
  (VTBL_ENTRY)&_ZN6S785C42v6Ev,
  (VTBL_ENTRY)&_ZN6S785C42v7Ev,
  (VTBL_ENTRY)&_ZN6S785C42v8Ev,
  (VTBL_ENTRY)&_ZN6S785C42v9Ev,
  (VTBL_ENTRY)&_ZN6S785C43v10Ev,
  (VTBL_ENTRY)&_ZN6S785C43v11Ev,
  (VTBL_ENTRY)&_ZN6S785C43v12Ev,
  (VTBL_ENTRY)&_ZN6S785C43v13Ev,
  (VTBL_ENTRY)&_ZN6S785C43v14Ev,
  (VTBL_ENTRY)&_ZN6S785C43v15Ev,
  (VTBL_ENTRY)&_ZN6S785C43v16Ev,
  (VTBL_ENTRY)&_ZN6S785C43v17Ev,
  (VTBL_ENTRY)&_ZN6S785C43v18Ev,
  (VTBL_ENTRY)&_ZN6S785C43v19Ev,
  (VTBL_ENTRY)&_ZN6S785C43v20Ev,
  (VTBL_ENTRY)&_ZN6S785C43v21Ev,
  (VTBL_ENTRY)&_ZN6S785C43v22Ev,
  (VTBL_ENTRY)&_ZN6S785C43v23Ev,
  (VTBL_ENTRY)&_ZN6S785C43v24Ev,
  (VTBL_ENTRY)&_ZN6S785C43v25Ev,
  (VTBL_ENTRY)&_ZN6S785C43v26Ev,
  (VTBL_ENTRY)&_ZN6S785C43v27Ev,
  (VTBL_ENTRY)&_ZN6S785C43v28Ev,
  (VTBL_ENTRY)&_ZN6S785C43v29Ev,
  (VTBL_ENTRY)&_ZN6S785C43v30Ev,
  (VTBL_ENTRY)&_ZN6S785C43v31Ev,
  (VTBL_ENTRY)&_ZN6S785C43v32Ev,
  (VTBL_ENTRY)&_ZN6S785C43v33Ev,
  (VTBL_ENTRY)&_ZN6S785C43v34Ev,
  (VTBL_ENTRY)&_ZN6S785C43v35Ev,
  (VTBL_ENTRY)&_ZN6S785C43v36Ev,
  (VTBL_ENTRY)&_ZN6S785C43v37Ev,
  (VTBL_ENTRY)&_ZN6S785C43v38Ev,
  (VTBL_ENTRY)&_ZN6S785C43v39Ev,
  (VTBL_ENTRY)&_ZN6S785C43v40Ev,
  (VTBL_ENTRY)&_ZN6S785C43v41Ev,
  (VTBL_ENTRY)&_ZN6S785C43v42Ev,
  (VTBL_ENTRY)&_ZN6S785C43v43Ev,
  (VTBL_ENTRY)&_ZN6S785C43v44Ev,
  (VTBL_ENTRY)&_ZN6S785C43v45Ev,
  (VTBL_ENTRY)&_ZN6S785C43v46Ev,
  (VTBL_ENTRY)&_ZN6S785C43v47Ev,
  (VTBL_ENTRY)&_ZN6S785C43v48Ev,
  (VTBL_ENTRY)&_ZN6S785C43v49Ev,
  (VTBL_ENTRY)&_ZN6S785C43v50Ev,
  (VTBL_ENTRY)&_ZN6S785C43v51Ev,
  (VTBL_ENTRY)&_ZN6S785C43v52Ev,
  (VTBL_ENTRY)&_ZN6S785C43v53Ev,
  (VTBL_ENTRY)&_ZN6S785C43v54Ev,
  (VTBL_ENTRY)&_ZN6S785C43v55Ev,
  (VTBL_ENTRY)&_ZN6S785C43v56Ev,
  (VTBL_ENTRY)&_ZN6S785C43v57Ev,
  (VTBL_ENTRY)&_ZN6S785C43v58Ev,
  (VTBL_ENTRY)&_ZN6S785C43v59Ev,
  (VTBL_ENTRY)&_ZN6S785C43v60Ev,
  (VTBL_ENTRY)&_ZN6S785C43v61Ev,
  (VTBL_ENTRY)&_ZN6S785C43v62Ev,
  (VTBL_ENTRY)&_ZN6S785C43v63Ev,
  (VTBL_ENTRY)&_ZN6S785C43v64Ev,
  (VTBL_ENTRY)&_ZN6S785C43v65Ev,
  (VTBL_ENTRY)&_ZN6S785C43v66Ev,
  (VTBL_ENTRY)&_ZN6S785C43v67Ev,
  (VTBL_ENTRY)&_ZN6S785C43v68Ev,
  (VTBL_ENTRY)&_ZN6S785C43v69Ev,
  (VTBL_ENTRY)&_ZN6S785C43v70Ev,
  (VTBL_ENTRY)&_ZN6S785C43v71Ev,
  (VTBL_ENTRY)&_ZN6S785C43v72Ev,
  (VTBL_ENTRY)&_ZN6S785C43v73Ev,
  (VTBL_ENTRY)&_ZN6S785C43v74Ev,
  (VTBL_ENTRY)&_ZN6S785C43v75Ev,
  (VTBL_ENTRY)&_ZN6S785C43v76Ev,
  (VTBL_ENTRY)&_ZN6S785C43v77Ev,
  (VTBL_ENTRY)&_ZN6S785C43v78Ev,
  (VTBL_ENTRY)&_ZN6S785C43v79Ev,
  (VTBL_ENTRY)&_ZN6S785C43v80Ev,
  (VTBL_ENTRY)&_ZN6S785C43v81Ev,
  (VTBL_ENTRY)&_ZN6S785C43v82Ev,
  (VTBL_ENTRY)&_ZN6S785C43v83Ev,
  (VTBL_ENTRY)&_ZN6S785C43v84Ev,
  (VTBL_ENTRY)&_ZN6S785C43v85Ev,
  (VTBL_ENTRY)&_ZN6S785C43v86Ev,
  (VTBL_ENTRY)&_ZN6S785C43v87Ev,
  (VTBL_ENTRY)&_ZN6S785C43v88Ev,
  (VTBL_ENTRY)&_ZN6S785C43v89Ev,
  (VTBL_ENTRY)&_ZN6S785C43v90Ev,
  (VTBL_ENTRY)&_ZN6S785C43v91Ev,
  (VTBL_ENTRY)&_ZN6S785C43v92Ev,
  (VTBL_ENTRY)&_ZN6S785C43v93Ev,
  (VTBL_ENTRY)&_ZN6S785C43v94Ev,
  (VTBL_ENTRY)&_ZN6S785C43v95Ev,
  (VTBL_ENTRY)&_ZN6S785C43v96Ev,
  (VTBL_ENTRY)&_ZN6S785C43v97Ev,
  (VTBL_ENTRY)&_ZN6S785C43v98Ev,
  (VTBL_ENTRY)&_ZN6S785C43v99Ev,
  (VTBL_ENTRY)&_ZN6S785C44v100Ev,
  (VTBL_ENTRY)&_ZN6S785C44v101Ev,
  (VTBL_ENTRY)&_ZN6S785C44v102Ev,
  (VTBL_ENTRY)&_ZN6S785C44v103Ev,
  (VTBL_ENTRY)&_ZN6S785C44v104Ev,
  (VTBL_ENTRY)&_ZN6S785C44v105Ev,
  (VTBL_ENTRY)&_ZN6S785C44v106Ev,
  (VTBL_ENTRY)&_ZN6S785C44v107Ev,
  (VTBL_ENTRY)&_ZN6S785C44v108Ev,
  (VTBL_ENTRY)&_ZN6S785C44v109Ev,
  (VTBL_ENTRY)&_ZN6S785C44v110Ev,
  (VTBL_ENTRY)&_ZN6S785C44v111Ev,
  (VTBL_ENTRY)&_ZN6S785C44v112Ev,
  (VTBL_ENTRY)&_ZN6S785C44v113Ev,
  (VTBL_ENTRY)&_ZN6S785C44v114Ev,
  (VTBL_ENTRY)&_ZN6S785C44v115Ev,
  (VTBL_ENTRY)&_ZN6S785C44v116Ev,
  (VTBL_ENTRY)&_ZN6S785C44v117Ev,
  (VTBL_ENTRY)&_ZN6S785C44v118Ev,
  (VTBL_ENTRY)&_ZN6S785C44v119Ev,
  (VTBL_ENTRY)&_ZN6S785C44v120Ev,
  (VTBL_ENTRY)&_ZN6S785C44v121Ev,
  (VTBL_ENTRY)&_ZN6S785C44v122Ev,
  (VTBL_ENTRY)&_ZN6S785C44v123Ev,
  (VTBL_ENTRY)&_ZN6S785C44v124Ev,
  (VTBL_ENTRY)&_ZN6S785C44v125Ev,
  (VTBL_ENTRY)&_ZN6S785C44v126Ev,
  (VTBL_ENTRY)&_ZN6S785C44v127Ev,
  (VTBL_ENTRY)&_ZN6S785C34v128Ev,
  (VTBL_ENTRY)&_ZN6S785C34v129Ev,
  (VTBL_ENTRY)&_ZN6S785C34v130Ev,
  (VTBL_ENTRY)&_ZN6S785C34v131Ev,
  (VTBL_ENTRY)&_ZN6S785C34v132Ev,
  (VTBL_ENTRY)&_ZN6S785C34v133Ev,
  (VTBL_ENTRY)&_ZN6S785C34v134Ev,
  (VTBL_ENTRY)&_ZN6S785C34v135Ev,
  (VTBL_ENTRY)&_ZN6S785C34v136Ev,
  (VTBL_ENTRY)&_ZN6S785C34v137Ev,
  (VTBL_ENTRY)&_ZN6S785C34v138Ev,
  (VTBL_ENTRY)&_ZN6S785C34v139Ev,
  (VTBL_ENTRY)&_ZN6S785C34v140Ev,
  (VTBL_ENTRY)&_ZN6S785C34v141Ev,
  (VTBL_ENTRY)&_ZN6S785C34v142Ev,
  (VTBL_ENTRY)&_ZN6S785C34v143Ev,
  (VTBL_ENTRY)&_ZN6S785C34v144Ev,
  (VTBL_ENTRY)&_ZN6S785C34v145Ev,
};
extern VTBL_ENTRY _ZTI6S785C3[];
extern  VTBL_ENTRY _ZTV6S785C3[];
Class_Descriptor cd_S785C3 = {  "S785C3", // class name
  bases_S785C3, 2,
  &(vtc_S785C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S785C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S785C3),144, //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  S785C2  : S785C3 {
  virtual void  v146(); // _ZN6S785C24v146Ev
  virtual void  v147(); // _ZN6S785C24v147Ev
  virtual void  v148(); // _ZN6S785C24v148Ev
  virtual void  v149(); // _ZN6S785C24v149Ev
  virtual void  v150(); // _ZN6S785C24v150Ev
  virtual void  v151(); // _ZN6S785C24v151Ev
  virtual void  v152(); // _ZN6S785C24v152Ev
  virtual void  v153(); // _ZN6S785C24v153Ev
  virtual void  v154(); // _ZN6S785C24v154Ev
  virtual void  v155(); // _ZN6S785C24v155Ev
  virtual void  v156(); // _ZN6S785C24v156Ev
  virtual void  v157(); // _ZN6S785C24v157Ev
  virtual void  v158(); // _ZN6S785C24v158Ev
  virtual void  v159(); // _ZN6S785C24v159Ev
  virtual void  v160(); // _ZN6S785C24v160Ev
  virtual void  v161(); // _ZN6S785C24v161Ev
  virtual void  v162(); // _ZN6S785C24v162Ev
  virtual void  v163(); // _ZN6S785C24v163Ev
  virtual void  v164(); // _ZN6S785C24v164Ev
  ~S785C2(); // tgen
  S785C2(); // tgen
};
//SIG(-1 S785C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19}


void  S785C2 ::v146(){vfunc_called(this, "_ZN6S785C24v146Ev");}
void  S785C2 ::v147(){vfunc_called(this, "_ZN6S785C24v147Ev");}
void  S785C2 ::v148(){vfunc_called(this, "_ZN6S785C24v148Ev");}
void  S785C2 ::v149(){vfunc_called(this, "_ZN6S785C24v149Ev");}
void  S785C2 ::v150(){vfunc_called(this, "_ZN6S785C24v150Ev");}
void  S785C2 ::v151(){vfunc_called(this, "_ZN6S785C24v151Ev");}
void  S785C2 ::v152(){vfunc_called(this, "_ZN6S785C24v152Ev");}
void  S785C2 ::v153(){vfunc_called(this, "_ZN6S785C24v153Ev");}
void  S785C2 ::v154(){vfunc_called(this, "_ZN6S785C24v154Ev");}
void  S785C2 ::v155(){vfunc_called(this, "_ZN6S785C24v155Ev");}
void  S785C2 ::v156(){vfunc_called(this, "_ZN6S785C24v156Ev");}
void  S785C2 ::v157(){vfunc_called(this, "_ZN6S785C24v157Ev");}
void  S785C2 ::v158(){vfunc_called(this, "_ZN6S785C24v158Ev");}
void  S785C2 ::v159(){vfunc_called(this, "_ZN6S785C24v159Ev");}
void  S785C2 ::v160(){vfunc_called(this, "_ZN6S785C24v160Ev");}
void  S785C2 ::v161(){vfunc_called(this, "_ZN6S785C24v161Ev");}
void  S785C2 ::v162(){vfunc_called(this, "_ZN6S785C24v162Ev");}
void  S785C2 ::v163(){vfunc_called(this, "_ZN6S785C24v163Ev");}
void  S785C2 ::v164(){vfunc_called(this, "_ZN6S785C24v164Ev");}
S785C2 ::~S785C2(){ note_dtor("S785C2", this);} // tgen
S785C2 ::S785C2(){ note_ctor("S785C2", this);} // tgen

static void Test_S785C2()
{
  extern Class_Descriptor cd_S785C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S785C2, buf);
    S785C2 *dp, &lv = *(dp=new (buf) S785C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S785C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S785C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S785C4*)(S785C3*), 0, "S785C2");
    check_base_class_offset(lv, (S785C4*)(S785C3*), 0, "S785C2");
    check_base_class_offset(lv, (S785C3*), 0, "S785C2");
    test_class_info(&lv, &cd_S785C2);
    dp->~S785C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS785C2(Test_S785C2, "S785C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S785C2C1Ev();
extern void _ZN6S785C2D1Ev();
Name_Map name_map_S785C2[] = {
  NSPAIR(_ZN6S785C2C1Ev),
  NSPAIR(_ZN6S785C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S785C4;
extern VTBL_ENTRY _ZTI6S785C4[];
extern  VTBL_ENTRY _ZTV6S785C4[];
extern Class_Descriptor cd_S785C3;
extern VTBL_ENTRY _ZTI6S785C3[];
extern  VTBL_ENTRY _ZTV6S785C3[];
static Base_Class bases_S785C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S785C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S785C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S785C2[];
extern void _ZN6S785C2D1Ev();
extern void _ZN6S785C2D0Ev();
extern void _ZN6S785C42v6Ev();
extern void _ZN6S785C42v7Ev();
extern void _ZN6S785C42v8Ev();
extern void _ZN6S785C42v9Ev();
extern void _ZN6S785C43v10Ev();
extern void _ZN6S785C43v11Ev();
extern void _ZN6S785C43v12Ev();
extern void _ZN6S785C43v13Ev();
extern void _ZN6S785C43v14Ev();
extern void _ZN6S785C43v15Ev();
extern void _ZN6S785C43v16Ev();
extern void _ZN6S785C43v17Ev();
extern void _ZN6S785C43v18Ev();
extern void _ZN6S785C43v19Ev();
extern void _ZN6S785C43v20Ev();
extern void _ZN6S785C43v21Ev();
extern void _ZN6S785C43v22Ev();
extern void _ZN6S785C43v23Ev();
extern void _ZN6S785C43v24Ev();
extern void _ZN6S785C43v25Ev();
extern void _ZN6S785C43v26Ev();
extern void _ZN6S785C43v27Ev();
extern void _ZN6S785C43v28Ev();
extern void _ZN6S785C43v29Ev();
extern void _ZN6S785C43v30Ev();
extern void _ZN6S785C43v31Ev();
extern void _ZN6S785C43v32Ev();
extern void _ZN6S785C43v33Ev();
extern void _ZN6S785C43v34Ev();
extern void _ZN6S785C43v35Ev();
extern void _ZN6S785C43v36Ev();
extern void _ZN6S785C43v37Ev();
extern void _ZN6S785C43v38Ev();
extern void _ZN6S785C43v39Ev();
extern void _ZN6S785C43v40Ev();
extern void _ZN6S785C43v41Ev();
extern void _ZN6S785C43v42Ev();
extern void _ZN6S785C43v43Ev();
extern void _ZN6S785C43v44Ev();
extern void _ZN6S785C43v45Ev();
extern void _ZN6S785C43v46Ev();
extern void _ZN6S785C43v47Ev();
extern void _ZN6S785C43v48Ev();
extern void _ZN6S785C43v49Ev();
extern void _ZN6S785C43v50Ev();
extern void _ZN6S785C43v51Ev();
extern void _ZN6S785C43v52Ev();
extern void _ZN6S785C43v53Ev();
extern void _ZN6S785C43v54Ev();
extern void _ZN6S785C43v55Ev();
extern void _ZN6S785C43v56Ev();
extern void _ZN6S785C43v57Ev();
extern void _ZN6S785C43v58Ev();
extern void _ZN6S785C43v59Ev();
extern void _ZN6S785C43v60Ev();
extern void _ZN6S785C43v61Ev();
extern void _ZN6S785C43v62Ev();
extern void _ZN6S785C43v63Ev();
extern void _ZN6S785C43v64Ev();
extern void _ZN6S785C43v65Ev();
extern void _ZN6S785C43v66Ev();
extern void _ZN6S785C43v67Ev();
extern void _ZN6S785C43v68Ev();
extern void _ZN6S785C43v69Ev();
extern void _ZN6S785C43v70Ev();
extern void _ZN6S785C43v71Ev();
extern void _ZN6S785C43v72Ev();
extern void _ZN6S785C43v73Ev();
extern void _ZN6S785C43v74Ev();
extern void _ZN6S785C43v75Ev();
extern void _ZN6S785C43v76Ev();
extern void _ZN6S785C43v77Ev();
extern void _ZN6S785C43v78Ev();
extern void _ZN6S785C43v79Ev();
extern void _ZN6S785C43v80Ev();
extern void _ZN6S785C43v81Ev();
extern void _ZN6S785C43v82Ev();
extern void _ZN6S785C43v83Ev();
extern void _ZN6S785C43v84Ev();
extern void _ZN6S785C43v85Ev();
extern void _ZN6S785C43v86Ev();
extern void _ZN6S785C43v87Ev();
extern void _ZN6S785C43v88Ev();
extern void _ZN6S785C43v89Ev();
extern void _ZN6S785C43v90Ev();
extern void _ZN6S785C43v91Ev();
extern void _ZN6S785C43v92Ev();
extern void _ZN6S785C43v93Ev();
extern void _ZN6S785C43v94Ev();
extern void _ZN6S785C43v95Ev();
extern void _ZN6S785C43v96Ev();
extern void _ZN6S785C43v97Ev();
extern void _ZN6S785C43v98Ev();
extern void _ZN6S785C43v99Ev();
extern void _ZN6S785C44v100Ev();
extern void _ZN6S785C44v101Ev();
extern void _ZN6S785C44v102Ev();
extern void _ZN6S785C44v103Ev();
extern void _ZN6S785C44v104Ev();
extern void _ZN6S785C44v105Ev();
extern void _ZN6S785C44v106Ev();
extern void _ZN6S785C44v107Ev();
extern void _ZN6S785C44v108Ev();
extern void _ZN6S785C44v109Ev();
extern void _ZN6S785C44v110Ev();
extern void _ZN6S785C44v111Ev();
extern void _ZN6S785C44v112Ev();
extern void _ZN6S785C44v113Ev();
extern void _ZN6S785C44v114Ev();
extern void _ZN6S785C44v115Ev();
extern void _ZN6S785C44v116Ev();
extern void _ZN6S785C44v117Ev();
extern void _ZN6S785C44v118Ev();
extern void _ZN6S785C44v119Ev();
extern void _ZN6S785C44v120Ev();
extern void _ZN6S785C44v121Ev();
extern void _ZN6S785C44v122Ev();
extern void _ZN6S785C44v123Ev();
extern void _ZN6S785C44v124Ev();
extern void _ZN6S785C44v125Ev();
extern void _ZN6S785C44v126Ev();
extern void _ZN6S785C44v127Ev();
extern void _ZN6S785C34v128Ev();
extern void _ZN6S785C34v129Ev();
extern void _ZN6S785C34v130Ev();
extern void _ZN6S785C34v131Ev();
extern void _ZN6S785C34v132Ev();
extern void _ZN6S785C34v133Ev();
extern void _ZN6S785C34v134Ev();
extern void _ZN6S785C34v135Ev();
extern void _ZN6S785C34v136Ev();
extern void _ZN6S785C34v137Ev();
extern void _ZN6S785C34v138Ev();
extern void _ZN6S785C34v139Ev();
extern void _ZN6S785C34v140Ev();
extern void _ZN6S785C34v141Ev();
extern void _ZN6S785C34v142Ev();
extern void _ZN6S785C34v143Ev();
extern void _ZN6S785C34v144Ev();
extern void _ZN6S785C34v145Ev();
extern void _ZN6S785C24v146Ev();
extern void _ZN6S785C24v147Ev();
extern void _ZN6S785C24v148Ev();
extern void _ZN6S785C24v149Ev();
extern void _ZN6S785C24v150Ev();
extern void _ZN6S785C24v151Ev();
extern void _ZN6S785C24v152Ev();
extern void _ZN6S785C24v153Ev();
extern void _ZN6S785C24v154Ev();
extern void _ZN6S785C24v155Ev();
extern void _ZN6S785C24v156Ev();
extern void _ZN6S785C24v157Ev();
extern void _ZN6S785C24v158Ev();
extern void _ZN6S785C24v159Ev();
extern void _ZN6S785C24v160Ev();
extern void _ZN6S785C24v161Ev();
extern void _ZN6S785C24v162Ev();
extern void _ZN6S785C24v163Ev();
extern void _ZN6S785C24v164Ev();
static  VTBL_ENTRY vtc_S785C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S785C2[0]),
  (VTBL_ENTRY)&_ZN6S785C2D1Ev,
  (VTBL_ENTRY)&_ZN6S785C2D0Ev,
  (VTBL_ENTRY)&_ZN6S785C42v6Ev,
  (VTBL_ENTRY)&_ZN6S785C42v7Ev,
  (VTBL_ENTRY)&_ZN6S785C42v8Ev,
  (VTBL_ENTRY)&_ZN6S785C42v9Ev,
  (VTBL_ENTRY)&_ZN6S785C43v10Ev,
  (VTBL_ENTRY)&_ZN6S785C43v11Ev,
  (VTBL_ENTRY)&_ZN6S785C43v12Ev,
  (VTBL_ENTRY)&_ZN6S785C43v13Ev,
  (VTBL_ENTRY)&_ZN6S785C43v14Ev,
  (VTBL_ENTRY)&_ZN6S785C43v15Ev,
  (VTBL_ENTRY)&_ZN6S785C43v16Ev,
  (VTBL_ENTRY)&_ZN6S785C43v17Ev,
  (VTBL_ENTRY)&_ZN6S785C43v18Ev,
  (VTBL_ENTRY)&_ZN6S785C43v19Ev,
  (VTBL_ENTRY)&_ZN6S785C43v20Ev,
  (VTBL_ENTRY)&_ZN6S785C43v21Ev,
  (VTBL_ENTRY)&_ZN6S785C43v22Ev,
  (VTBL_ENTRY)&_ZN6S785C43v23Ev,
  (VTBL_ENTRY)&_ZN6S785C43v24Ev,
  (VTBL_ENTRY)&_ZN6S785C43v25Ev,
  (VTBL_ENTRY)&_ZN6S785C43v26Ev,
  (VTBL_ENTRY)&_ZN6S785C43v27Ev,
  (VTBL_ENTRY)&_ZN6S785C43v28Ev,
  (VTBL_ENTRY)&_ZN6S785C43v29Ev,
  (VTBL_ENTRY)&_ZN6S785C43v30Ev,
  (VTBL_ENTRY)&_ZN6S785C43v31Ev,
  (VTBL_ENTRY)&_ZN6S785C43v32Ev,
  (VTBL_ENTRY)&_ZN6S785C43v33Ev,
  (VTBL_ENTRY)&_ZN6S785C43v34Ev,
  (VTBL_ENTRY)&_ZN6S785C43v35Ev,
  (VTBL_ENTRY)&_ZN6S785C43v36Ev,
  (VTBL_ENTRY)&_ZN6S785C43v37Ev,
  (VTBL_ENTRY)&_ZN6S785C43v38Ev,
  (VTBL_ENTRY)&_ZN6S785C43v39Ev,
  (VTBL_ENTRY)&_ZN6S785C43v40Ev,
  (VTBL_ENTRY)&_ZN6S785C43v41Ev,
  (VTBL_ENTRY)&_ZN6S785C43v42Ev,
  (VTBL_ENTRY)&_ZN6S785C43v43Ev,
  (VTBL_ENTRY)&_ZN6S785C43v44Ev,
  (VTBL_ENTRY)&_ZN6S785C43v45Ev,
  (VTBL_ENTRY)&_ZN6S785C43v46Ev,
  (VTBL_ENTRY)&_ZN6S785C43v47Ev,
  (VTBL_ENTRY)&_ZN6S785C43v48Ev,
  (VTBL_ENTRY)&_ZN6S785C43v49Ev,
  (VTBL_ENTRY)&_ZN6S785C43v50Ev,
  (VTBL_ENTRY)&_ZN6S785C43v51Ev,
  (VTBL_ENTRY)&_ZN6S785C43v52Ev,
  (VTBL_ENTRY)&_ZN6S785C43v53Ev,
  (VTBL_ENTRY)&_ZN6S785C43v54Ev,
  (VTBL_ENTRY)&_ZN6S785C43v55Ev,
  (VTBL_ENTRY)&_ZN6S785C43v56Ev,
  (VTBL_ENTRY)&_ZN6S785C43v57Ev,
  (VTBL_ENTRY)&_ZN6S785C43v58Ev,
  (VTBL_ENTRY)&_ZN6S785C43v59Ev,
  (VTBL_ENTRY)&_ZN6S785C43v60Ev,
  (VTBL_ENTRY)&_ZN6S785C43v61Ev,
  (VTBL_ENTRY)&_ZN6S785C43v62Ev,
  (VTBL_ENTRY)&_ZN6S785C43v63Ev,
  (VTBL_ENTRY)&_ZN6S785C43v64Ev,
  (VTBL_ENTRY)&_ZN6S785C43v65Ev,
  (VTBL_ENTRY)&_ZN6S785C43v66Ev,
  (VTBL_ENTRY)&_ZN6S785C43v67Ev,
  (VTBL_ENTRY)&_ZN6S785C43v68Ev,
  (VTBL_ENTRY)&_ZN6S785C43v69Ev,
  (VTBL_ENTRY)&_ZN6S785C43v70Ev,
  (VTBL_ENTRY)&_ZN6S785C43v71Ev,
  (VTBL_ENTRY)&_ZN6S785C43v72Ev,
  (VTBL_ENTRY)&_ZN6S785C43v73Ev,
  (VTBL_ENTRY)&_ZN6S785C43v74Ev,
  (VTBL_ENTRY)&_ZN6S785C43v75Ev,
  (VTBL_ENTRY)&_ZN6S785C43v76Ev,
  (VTBL_ENTRY)&_ZN6S785C43v77Ev,
  (VTBL_ENTRY)&_ZN6S785C43v78Ev,
  (VTBL_ENTRY)&_ZN6S785C43v79Ev,
  (VTBL_ENTRY)&_ZN6S785C43v80Ev,
  (VTBL_ENTRY)&_ZN6S785C43v81Ev,
  (VTBL_ENTRY)&_ZN6S785C43v82Ev,
  (VTBL_ENTRY)&_ZN6S785C43v83Ev,
  (VTBL_ENTRY)&_ZN6S785C43v84Ev,
  (VTBL_ENTRY)&_ZN6S785C43v85Ev,
  (VTBL_ENTRY)&_ZN6S785C43v86Ev,
  (VTBL_ENTRY)&_ZN6S785C43v87Ev,
  (VTBL_ENTRY)&_ZN6S785C43v88Ev,
  (VTBL_ENTRY)&_ZN6S785C43v89Ev,
  (VTBL_ENTRY)&_ZN6S785C43v90Ev,
  (VTBL_ENTRY)&_ZN6S785C43v91Ev,
  (VTBL_ENTRY)&_ZN6S785C43v92Ev,
  (VTBL_ENTRY)&_ZN6S785C43v93Ev,
  (VTBL_ENTRY)&_ZN6S785C43v94Ev,
  (VTBL_ENTRY)&_ZN6S785C43v95Ev,
  (VTBL_ENTRY)&_ZN6S785C43v96Ev,
  (VTBL_ENTRY)&_ZN6S785C43v97Ev,
  (VTBL_ENTRY)&_ZN6S785C43v98Ev,
  (VTBL_ENTRY)&_ZN6S785C43v99Ev,
  (VTBL_ENTRY)&_ZN6S785C44v100Ev,
  (VTBL_ENTRY)&_ZN6S785C44v101Ev,
  (VTBL_ENTRY)&_ZN6S785C44v102Ev,
  (VTBL_ENTRY)&_ZN6S785C44v103Ev,
  (VTBL_ENTRY)&_ZN6S785C44v104Ev,
  (VTBL_ENTRY)&_ZN6S785C44v105Ev,
  (VTBL_ENTRY)&_ZN6S785C44v106Ev,
  (VTBL_ENTRY)&_ZN6S785C44v107Ev,
  (VTBL_ENTRY)&_ZN6S785C44v108Ev,
  (VTBL_ENTRY)&_ZN6S785C44v109Ev,
  (VTBL_ENTRY)&_ZN6S785C44v110Ev,
  (VTBL_ENTRY)&_ZN6S785C44v111Ev,
  (VTBL_ENTRY)&_ZN6S785C44v112Ev,
  (VTBL_ENTRY)&_ZN6S785C44v113Ev,
  (VTBL_ENTRY)&_ZN6S785C44v114Ev,
  (VTBL_ENTRY)&_ZN6S785C44v115Ev,
  (VTBL_ENTRY)&_ZN6S785C44v116Ev,
  (VTBL_ENTRY)&_ZN6S785C44v117Ev,
  (VTBL_ENTRY)&_ZN6S785C44v118Ev,
  (VTBL_ENTRY)&_ZN6S785C44v119Ev,
  (VTBL_ENTRY)&_ZN6S785C44v120Ev,
  (VTBL_ENTRY)&_ZN6S785C44v121Ev,
  (VTBL_ENTRY)&_ZN6S785C44v122Ev,
  (VTBL_ENTRY)&_ZN6S785C44v123Ev,
  (VTBL_ENTRY)&_ZN6S785C44v124Ev,
  (VTBL_ENTRY)&_ZN6S785C44v125Ev,
  (VTBL_ENTRY)&_ZN6S785C44v126Ev,
  (VTBL_ENTRY)&_ZN6S785C44v127Ev,
  (VTBL_ENTRY)&_ZN6S785C34v128Ev,
  (VTBL_ENTRY)&_ZN6S785C34v129Ev,
  (VTBL_ENTRY)&_ZN6S785C34v130Ev,
  (VTBL_ENTRY)&_ZN6S785C34v131Ev,
  (VTBL_ENTRY)&_ZN6S785C34v132Ev,
  (VTBL_ENTRY)&_ZN6S785C34v133Ev,
  (VTBL_ENTRY)&_ZN6S785C34v134Ev,
  (VTBL_ENTRY)&_ZN6S785C34v135Ev,
  (VTBL_ENTRY)&_ZN6S785C34v136Ev,
  (VTBL_ENTRY)&_ZN6S785C34v137Ev,
  (VTBL_ENTRY)&_ZN6S785C34v138Ev,
  (VTBL_ENTRY)&_ZN6S785C34v139Ev,
  (VTBL_ENTRY)&_ZN6S785C34v140Ev,
  (VTBL_ENTRY)&_ZN6S785C34v141Ev,
  (VTBL_ENTRY)&_ZN6S785C34v142Ev,
  (VTBL_ENTRY)&_ZN6S785C34v143Ev,
  (VTBL_ENTRY)&_ZN6S785C34v144Ev,
  (VTBL_ENTRY)&_ZN6S785C34v145Ev,
  (VTBL_ENTRY)&_ZN6S785C24v146Ev,
  (VTBL_ENTRY)&_ZN6S785C24v147Ev,
  (VTBL_ENTRY)&_ZN6S785C24v148Ev,
  (VTBL_ENTRY)&_ZN6S785C24v149Ev,
  (VTBL_ENTRY)&_ZN6S785C24v150Ev,
  (VTBL_ENTRY)&_ZN6S785C24v151Ev,
  (VTBL_ENTRY)&_ZN6S785C24v152Ev,
  (VTBL_ENTRY)&_ZN6S785C24v153Ev,
  (VTBL_ENTRY)&_ZN6S785C24v154Ev,
  (VTBL_ENTRY)&_ZN6S785C24v155Ev,
  (VTBL_ENTRY)&_ZN6S785C24v156Ev,
  (VTBL_ENTRY)&_ZN6S785C24v157Ev,
  (VTBL_ENTRY)&_ZN6S785C24v158Ev,
  (VTBL_ENTRY)&_ZN6S785C24v159Ev,
  (VTBL_ENTRY)&_ZN6S785C24v160Ev,
  (VTBL_ENTRY)&_ZN6S785C24v161Ev,
  (VTBL_ENTRY)&_ZN6S785C24v162Ev,
  (VTBL_ENTRY)&_ZN6S785C24v163Ev,
  (VTBL_ENTRY)&_ZN6S785C24v164Ev,
};
extern VTBL_ENTRY _ZTI6S785C2[];
extern  VTBL_ENTRY _ZTV6S785C2[];
Class_Descriptor cd_S785C2 = {  "S785C2", // class name
  bases_S785C2, 3,
  &(vtc_S785C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S785C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S785C2),163, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S785C1  : S785C2 {
  virtual void  v1(); // _ZN6S785C12v1Ev
  virtual void  v2(); // _ZN6S785C12v2Ev
  virtual void  v3(); // _ZN6S785C12v3Ev
  virtual void  v4(); // _ZN6S785C12v4Ev
  virtual void  v5(); // _ZN6S785C12v5Ev
  ~S785C1(); // tgen
  S785C1(); // tgen
};
//SIG(1 S785C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164} v1 v2 v3 v4 v5}


void  S785C1 ::v1(){vfunc_called(this, "_ZN6S785C12v1Ev");}
void  S785C1 ::v2(){vfunc_called(this, "_ZN6S785C12v2Ev");}
void  S785C1 ::v3(){vfunc_called(this, "_ZN6S785C12v3Ev");}
void  S785C1 ::v4(){vfunc_called(this, "_ZN6S785C12v4Ev");}
void  S785C1 ::v5(){vfunc_called(this, "_ZN6S785C12v5Ev");}
S785C1 ::~S785C1(){ note_dtor("S785C1", this);} // tgen
S785C1 ::S785C1(){ note_ctor("S785C1", this);} // tgen

static void Test_S785C1()
{
  extern Class_Descriptor cd_S785C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S785C1, buf);
    S785C1 *dp, &lv = *(dp=new (buf) S785C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S785C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S785C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S785C4*)(S785C3*)(S785C2*), 0, "S785C1");
    check_base_class_offset(lv, (S785C4*)(S785C3*)(S785C2*), 0, "S785C1");
    check_base_class_offset(lv, (S785C3*)(S785C2*), 0, "S785C1");
    check_base_class_offset(lv, (S785C2*), 0, "S785C1");
    test_class_info(&lv, &cd_S785C1);
    dp->~S785C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS785C1(Test_S785C1, "S785C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S785C1C1Ev();
extern void _ZN6S785C1D1Ev();
Name_Map name_map_S785C1[] = {
  NSPAIR(_ZN6S785C1C1Ev),
  NSPAIR(_ZN6S785C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S785C4;
extern VTBL_ENTRY _ZTI6S785C4[];
extern  VTBL_ENTRY _ZTV6S785C4[];
extern Class_Descriptor cd_S785C3;
extern VTBL_ENTRY _ZTI6S785C3[];
extern  VTBL_ENTRY _ZTV6S785C3[];
extern Class_Descriptor cd_S785C2;
extern VTBL_ENTRY _ZTI6S785C2[];
extern  VTBL_ENTRY _ZTV6S785C2[];
static Base_Class bases_S785C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S785C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S785C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S785C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S785C1[];
extern void _ZN6S785C1D1Ev();
extern void _ZN6S785C1D0Ev();
extern void _ZN6S785C42v6Ev();
extern void _ZN6S785C42v7Ev();
extern void _ZN6S785C42v8Ev();
extern void _ZN6S785C42v9Ev();
extern void _ZN6S785C43v10Ev();
extern void _ZN6S785C43v11Ev();
extern void _ZN6S785C43v12Ev();
extern void _ZN6S785C43v13Ev();
extern void _ZN6S785C43v14Ev();
extern void _ZN6S785C43v15Ev();
extern void _ZN6S785C43v16Ev();
extern void _ZN6S785C43v17Ev();
extern void _ZN6S785C43v18Ev();
extern void _ZN6S785C43v19Ev();
extern void _ZN6S785C43v20Ev();
extern void _ZN6S785C43v21Ev();
extern void _ZN6S785C43v22Ev();
extern void _ZN6S785C43v23Ev();
extern void _ZN6S785C43v24Ev();
extern void _ZN6S785C43v25Ev();
extern void _ZN6S785C43v26Ev();
extern void _ZN6S785C43v27Ev();
extern void _ZN6S785C43v28Ev();
extern void _ZN6S785C43v29Ev();
extern void _ZN6S785C43v30Ev();
extern void _ZN6S785C43v31Ev();
extern void _ZN6S785C43v32Ev();
extern void _ZN6S785C43v33Ev();
extern void _ZN6S785C43v34Ev();
extern void _ZN6S785C43v35Ev();
extern void _ZN6S785C43v36Ev();
extern void _ZN6S785C43v37Ev();
extern void _ZN6S785C43v38Ev();
extern void _ZN6S785C43v39Ev();
extern void _ZN6S785C43v40Ev();
extern void _ZN6S785C43v41Ev();
extern void _ZN6S785C43v42Ev();
extern void _ZN6S785C43v43Ev();
extern void _ZN6S785C43v44Ev();
extern void _ZN6S785C43v45Ev();
extern void _ZN6S785C43v46Ev();
extern void _ZN6S785C43v47Ev();
extern void _ZN6S785C43v48Ev();
extern void _ZN6S785C43v49Ev();
extern void _ZN6S785C43v50Ev();
extern void _ZN6S785C43v51Ev();
extern void _ZN6S785C43v52Ev();
extern void _ZN6S785C43v53Ev();
extern void _ZN6S785C43v54Ev();
extern void _ZN6S785C43v55Ev();
extern void _ZN6S785C43v56Ev();
extern void _ZN6S785C43v57Ev();
extern void _ZN6S785C43v58Ev();
extern void _ZN6S785C43v59Ev();
extern void _ZN6S785C43v60Ev();
extern void _ZN6S785C43v61Ev();
extern void _ZN6S785C43v62Ev();
extern void _ZN6S785C43v63Ev();
extern void _ZN6S785C43v64Ev();
extern void _ZN6S785C43v65Ev();
extern void _ZN6S785C43v66Ev();
extern void _ZN6S785C43v67Ev();
extern void _ZN6S785C43v68Ev();
extern void _ZN6S785C43v69Ev();
extern void _ZN6S785C43v70Ev();
extern void _ZN6S785C43v71Ev();
extern void _ZN6S785C43v72Ev();
extern void _ZN6S785C43v73Ev();
extern void _ZN6S785C43v74Ev();
extern void _ZN6S785C43v75Ev();
extern void _ZN6S785C43v76Ev();
extern void _ZN6S785C43v77Ev();
extern void _ZN6S785C43v78Ev();
extern void _ZN6S785C43v79Ev();
extern void _ZN6S785C43v80Ev();
extern void _ZN6S785C43v81Ev();
extern void _ZN6S785C43v82Ev();
extern void _ZN6S785C43v83Ev();
extern void _ZN6S785C43v84Ev();
extern void _ZN6S785C43v85Ev();
extern void _ZN6S785C43v86Ev();
extern void _ZN6S785C43v87Ev();
extern void _ZN6S785C43v88Ev();
extern void _ZN6S785C43v89Ev();
extern void _ZN6S785C43v90Ev();
extern void _ZN6S785C43v91Ev();
extern void _ZN6S785C43v92Ev();
extern void _ZN6S785C43v93Ev();
extern void _ZN6S785C43v94Ev();
extern void _ZN6S785C43v95Ev();
extern void _ZN6S785C43v96Ev();
extern void _ZN6S785C43v97Ev();
extern void _ZN6S785C43v98Ev();
extern void _ZN6S785C43v99Ev();
extern void _ZN6S785C44v100Ev();
extern void _ZN6S785C44v101Ev();
extern void _ZN6S785C44v102Ev();
extern void _ZN6S785C44v103Ev();
extern void _ZN6S785C44v104Ev();
extern void _ZN6S785C44v105Ev();
extern void _ZN6S785C44v106Ev();
extern void _ZN6S785C44v107Ev();
extern void _ZN6S785C44v108Ev();
extern void _ZN6S785C44v109Ev();
extern void _ZN6S785C44v110Ev();
extern void _ZN6S785C44v111Ev();
extern void _ZN6S785C44v112Ev();
extern void _ZN6S785C44v113Ev();
extern void _ZN6S785C44v114Ev();
extern void _ZN6S785C44v115Ev();
extern void _ZN6S785C44v116Ev();
extern void _ZN6S785C44v117Ev();
extern void _ZN6S785C44v118Ev();
extern void _ZN6S785C44v119Ev();
extern void _ZN6S785C44v120Ev();
extern void _ZN6S785C44v121Ev();
extern void _ZN6S785C44v122Ev();
extern void _ZN6S785C44v123Ev();
extern void _ZN6S785C44v124Ev();
extern void _ZN6S785C44v125Ev();
extern void _ZN6S785C44v126Ev();
extern void _ZN6S785C44v127Ev();
extern void _ZN6S785C34v128Ev();
extern void _ZN6S785C34v129Ev();
extern void _ZN6S785C34v130Ev();
extern void _ZN6S785C34v131Ev();
extern void _ZN6S785C34v132Ev();
extern void _ZN6S785C34v133Ev();
extern void _ZN6S785C34v134Ev();
extern void _ZN6S785C34v135Ev();
extern void _ZN6S785C34v136Ev();
extern void _ZN6S785C34v137Ev();
extern void _ZN6S785C34v138Ev();
extern void _ZN6S785C34v139Ev();
extern void _ZN6S785C34v140Ev();
extern void _ZN6S785C34v141Ev();
extern void _ZN6S785C34v142Ev();
extern void _ZN6S785C34v143Ev();
extern void _ZN6S785C34v144Ev();
extern void _ZN6S785C34v145Ev();
extern void _ZN6S785C24v146Ev();
extern void _ZN6S785C24v147Ev();
extern void _ZN6S785C24v148Ev();
extern void _ZN6S785C24v149Ev();
extern void _ZN6S785C24v150Ev();
extern void _ZN6S785C24v151Ev();
extern void _ZN6S785C24v152Ev();
extern void _ZN6S785C24v153Ev();
extern void _ZN6S785C24v154Ev();
extern void _ZN6S785C24v155Ev();
extern void _ZN6S785C24v156Ev();
extern void _ZN6S785C24v157Ev();
extern void _ZN6S785C24v158Ev();
extern void _ZN6S785C24v159Ev();
extern void _ZN6S785C24v160Ev();
extern void _ZN6S785C24v161Ev();
extern void _ZN6S785C24v162Ev();
extern void _ZN6S785C24v163Ev();
extern void _ZN6S785C24v164Ev();
extern void _ZN6S785C12v1Ev();
extern void _ZN6S785C12v2Ev();
extern void _ZN6S785C12v3Ev();
extern void _ZN6S785C12v4Ev();
extern void _ZN6S785C12v5Ev();
static  VTBL_ENTRY vtc_S785C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S785C1[0]),
  (VTBL_ENTRY)&_ZN6S785C1D1Ev,
  (VTBL_ENTRY)&_ZN6S785C1D0Ev,
  (VTBL_ENTRY)&_ZN6S785C42v6Ev,
  (VTBL_ENTRY)&_ZN6S785C42v7Ev,
  (VTBL_ENTRY)&_ZN6S785C42v8Ev,
  (VTBL_ENTRY)&_ZN6S785C42v9Ev,
  (VTBL_ENTRY)&_ZN6S785C43v10Ev,
  (VTBL_ENTRY)&_ZN6S785C43v11Ev,
  (VTBL_ENTRY)&_ZN6S785C43v12Ev,
  (VTBL_ENTRY)&_ZN6S785C43v13Ev,
  (VTBL_ENTRY)&_ZN6S785C43v14Ev,
  (VTBL_ENTRY)&_ZN6S785C43v15Ev,
  (VTBL_ENTRY)&_ZN6S785C43v16Ev,
  (VTBL_ENTRY)&_ZN6S785C43v17Ev,
  (VTBL_ENTRY)&_ZN6S785C43v18Ev,
  (VTBL_ENTRY)&_ZN6S785C43v19Ev,
  (VTBL_ENTRY)&_ZN6S785C43v20Ev,
  (VTBL_ENTRY)&_ZN6S785C43v21Ev,
  (VTBL_ENTRY)&_ZN6S785C43v22Ev,
  (VTBL_ENTRY)&_ZN6S785C43v23Ev,
  (VTBL_ENTRY)&_ZN6S785C43v24Ev,
  (VTBL_ENTRY)&_ZN6S785C43v25Ev,
  (VTBL_ENTRY)&_ZN6S785C43v26Ev,
  (VTBL_ENTRY)&_ZN6S785C43v27Ev,
  (VTBL_ENTRY)&_ZN6S785C43v28Ev,
  (VTBL_ENTRY)&_ZN6S785C43v29Ev,
  (VTBL_ENTRY)&_ZN6S785C43v30Ev,
  (VTBL_ENTRY)&_ZN6S785C43v31Ev,
  (VTBL_ENTRY)&_ZN6S785C43v32Ev,
  (VTBL_ENTRY)&_ZN6S785C43v33Ev,
  (VTBL_ENTRY)&_ZN6S785C43v34Ev,
  (VTBL_ENTRY)&_ZN6S785C43v35Ev,
  (VTBL_ENTRY)&_ZN6S785C43v36Ev,
  (VTBL_ENTRY)&_ZN6S785C43v37Ev,
  (VTBL_ENTRY)&_ZN6S785C43v38Ev,
  (VTBL_ENTRY)&_ZN6S785C43v39Ev,
  (VTBL_ENTRY)&_ZN6S785C43v40Ev,
  (VTBL_ENTRY)&_ZN6S785C43v41Ev,
  (VTBL_ENTRY)&_ZN6S785C43v42Ev,
  (VTBL_ENTRY)&_ZN6S785C43v43Ev,
  (VTBL_ENTRY)&_ZN6S785C43v44Ev,
  (VTBL_ENTRY)&_ZN6S785C43v45Ev,
  (VTBL_ENTRY)&_ZN6S785C43v46Ev,
  (VTBL_ENTRY)&_ZN6S785C43v47Ev,
  (VTBL_ENTRY)&_ZN6S785C43v48Ev,
  (VTBL_ENTRY)&_ZN6S785C43v49Ev,
  (VTBL_ENTRY)&_ZN6S785C43v50Ev,
  (VTBL_ENTRY)&_ZN6S785C43v51Ev,
  (VTBL_ENTRY)&_ZN6S785C43v52Ev,
  (VTBL_ENTRY)&_ZN6S785C43v53Ev,
  (VTBL_ENTRY)&_ZN6S785C43v54Ev,
  (VTBL_ENTRY)&_ZN6S785C43v55Ev,
  (VTBL_ENTRY)&_ZN6S785C43v56Ev,
  (VTBL_ENTRY)&_ZN6S785C43v57Ev,
  (VTBL_ENTRY)&_ZN6S785C43v58Ev,
  (VTBL_ENTRY)&_ZN6S785C43v59Ev,
  (VTBL_ENTRY)&_ZN6S785C43v60Ev,
  (VTBL_ENTRY)&_ZN6S785C43v61Ev,
  (VTBL_ENTRY)&_ZN6S785C43v62Ev,
  (VTBL_ENTRY)&_ZN6S785C43v63Ev,
  (VTBL_ENTRY)&_ZN6S785C43v64Ev,
  (VTBL_ENTRY)&_ZN6S785C43v65Ev,
  (VTBL_ENTRY)&_ZN6S785C43v66Ev,
  (VTBL_ENTRY)&_ZN6S785C43v67Ev,
  (VTBL_ENTRY)&_ZN6S785C43v68Ev,
  (VTBL_ENTRY)&_ZN6S785C43v69Ev,
  (VTBL_ENTRY)&_ZN6S785C43v70Ev,
  (VTBL_ENTRY)&_ZN6S785C43v71Ev,
  (VTBL_ENTRY)&_ZN6S785C43v72Ev,
  (VTBL_ENTRY)&_ZN6S785C43v73Ev,
  (VTBL_ENTRY)&_ZN6S785C43v74Ev,
  (VTBL_ENTRY)&_ZN6S785C43v75Ev,
  (VTBL_ENTRY)&_ZN6S785C43v76Ev,
  (VTBL_ENTRY)&_ZN6S785C43v77Ev,
  (VTBL_ENTRY)&_ZN6S785C43v78Ev,
  (VTBL_ENTRY)&_ZN6S785C43v79Ev,
  (VTBL_ENTRY)&_ZN6S785C43v80Ev,
  (VTBL_ENTRY)&_ZN6S785C43v81Ev,
  (VTBL_ENTRY)&_ZN6S785C43v82Ev,
  (VTBL_ENTRY)&_ZN6S785C43v83Ev,
  (VTBL_ENTRY)&_ZN6S785C43v84Ev,
  (VTBL_ENTRY)&_ZN6S785C43v85Ev,
  (VTBL_ENTRY)&_ZN6S785C43v86Ev,
  (VTBL_ENTRY)&_ZN6S785C43v87Ev,
  (VTBL_ENTRY)&_ZN6S785C43v88Ev,
  (VTBL_ENTRY)&_ZN6S785C43v89Ev,
  (VTBL_ENTRY)&_ZN6S785C43v90Ev,
  (VTBL_ENTRY)&_ZN6S785C43v91Ev,
  (VTBL_ENTRY)&_ZN6S785C43v92Ev,
  (VTBL_ENTRY)&_ZN6S785C43v93Ev,
  (VTBL_ENTRY)&_ZN6S785C43v94Ev,
  (VTBL_ENTRY)&_ZN6S785C43v95Ev,
  (VTBL_ENTRY)&_ZN6S785C43v96Ev,
  (VTBL_ENTRY)&_ZN6S785C43v97Ev,
  (VTBL_ENTRY)&_ZN6S785C43v98Ev,
  (VTBL_ENTRY)&_ZN6S785C43v99Ev,
  (VTBL_ENTRY)&_ZN6S785C44v100Ev,
  (VTBL_ENTRY)&_ZN6S785C44v101Ev,
  (VTBL_ENTRY)&_ZN6S785C44v102Ev,
  (VTBL_ENTRY)&_ZN6S785C44v103Ev,
  (VTBL_ENTRY)&_ZN6S785C44v104Ev,
  (VTBL_ENTRY)&_ZN6S785C44v105Ev,
  (VTBL_ENTRY)&_ZN6S785C44v106Ev,
  (VTBL_ENTRY)&_ZN6S785C44v107Ev,
  (VTBL_ENTRY)&_ZN6S785C44v108Ev,
  (VTBL_ENTRY)&_ZN6S785C44v109Ev,
  (VTBL_ENTRY)&_ZN6S785C44v110Ev,
  (VTBL_ENTRY)&_ZN6S785C44v111Ev,
  (VTBL_ENTRY)&_ZN6S785C44v112Ev,
  (VTBL_ENTRY)&_ZN6S785C44v113Ev,
  (VTBL_ENTRY)&_ZN6S785C44v114Ev,
  (VTBL_ENTRY)&_ZN6S785C44v115Ev,
  (VTBL_ENTRY)&_ZN6S785C44v116Ev,
  (VTBL_ENTRY)&_ZN6S785C44v117Ev,
  (VTBL_ENTRY)&_ZN6S785C44v118Ev,
  (VTBL_ENTRY)&_ZN6S785C44v119Ev,
  (VTBL_ENTRY)&_ZN6S785C44v120Ev,
  (VTBL_ENTRY)&_ZN6S785C44v121Ev,
  (VTBL_ENTRY)&_ZN6S785C44v122Ev,
  (VTBL_ENTRY)&_ZN6S785C44v123Ev,
  (VTBL_ENTRY)&_ZN6S785C44v124Ev,
  (VTBL_ENTRY)&_ZN6S785C44v125Ev,
  (VTBL_ENTRY)&_ZN6S785C44v126Ev,
  (VTBL_ENTRY)&_ZN6S785C44v127Ev,
  (VTBL_ENTRY)&_ZN6S785C34v128Ev,
  (VTBL_ENTRY)&_ZN6S785C34v129Ev,
  (VTBL_ENTRY)&_ZN6S785C34v130Ev,
  (VTBL_ENTRY)&_ZN6S785C34v131Ev,
  (VTBL_ENTRY)&_ZN6S785C34v132Ev,
  (VTBL_ENTRY)&_ZN6S785C34v133Ev,
  (VTBL_ENTRY)&_ZN6S785C34v134Ev,
  (VTBL_ENTRY)&_ZN6S785C34v135Ev,
  (VTBL_ENTRY)&_ZN6S785C34v136Ev,
  (VTBL_ENTRY)&_ZN6S785C34v137Ev,
  (VTBL_ENTRY)&_ZN6S785C34v138Ev,
  (VTBL_ENTRY)&_ZN6S785C34v139Ev,
  (VTBL_ENTRY)&_ZN6S785C34v140Ev,
  (VTBL_ENTRY)&_ZN6S785C34v141Ev,
  (VTBL_ENTRY)&_ZN6S785C34v142Ev,
  (VTBL_ENTRY)&_ZN6S785C34v143Ev,
  (VTBL_ENTRY)&_ZN6S785C34v144Ev,
  (VTBL_ENTRY)&_ZN6S785C34v145Ev,
  (VTBL_ENTRY)&_ZN6S785C24v146Ev,
  (VTBL_ENTRY)&_ZN6S785C24v147Ev,
  (VTBL_ENTRY)&_ZN6S785C24v148Ev,
  (VTBL_ENTRY)&_ZN6S785C24v149Ev,
  (VTBL_ENTRY)&_ZN6S785C24v150Ev,
  (VTBL_ENTRY)&_ZN6S785C24v151Ev,
  (VTBL_ENTRY)&_ZN6S785C24v152Ev,
  (VTBL_ENTRY)&_ZN6S785C24v153Ev,
  (VTBL_ENTRY)&_ZN6S785C24v154Ev,
  (VTBL_ENTRY)&_ZN6S785C24v155Ev,
  (VTBL_ENTRY)&_ZN6S785C24v156Ev,
  (VTBL_ENTRY)&_ZN6S785C24v157Ev,
  (VTBL_ENTRY)&_ZN6S785C24v158Ev,
  (VTBL_ENTRY)&_ZN6S785C24v159Ev,
  (VTBL_ENTRY)&_ZN6S785C24v160Ev,
  (VTBL_ENTRY)&_ZN6S785C24v161Ev,
  (VTBL_ENTRY)&_ZN6S785C24v162Ev,
  (VTBL_ENTRY)&_ZN6S785C24v163Ev,
  (VTBL_ENTRY)&_ZN6S785C24v164Ev,
  (VTBL_ENTRY)&_ZN6S785C12v1Ev,
  (VTBL_ENTRY)&_ZN6S785C12v2Ev,
  (VTBL_ENTRY)&_ZN6S785C12v3Ev,
  (VTBL_ENTRY)&_ZN6S785C12v4Ev,
  (VTBL_ENTRY)&_ZN6S785C12v5Ev,
};
extern VTBL_ENTRY _ZTI6S785C1[];
extern  VTBL_ENTRY _ZTV6S785C1[];
Class_Descriptor cd_S785C1 = {  "S785C1", // class name
  bases_S785C1, 4,
  &(vtc_S785C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S785C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S785C1),168, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C4  {
  short s18574c4f0:6;
  long s18574c4f1;
  short s18574c4f2:4;
  __tsi64 s18574c4f3[13];
  void *s18574c4f4;
  virtual void  v3(); // _ZN8S18574C42v3Ev
  ~S18574C4(); // tgen
  S18574C4(); // tgen
};
//SIG(-1 S18574C4) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S18574C4 ::v3(){vfunc_called(this, "_ZN8S18574C42v3Ev");}
S18574C4 ::~S18574C4(){ note_dtor("S18574C4", this);} // tgen
S18574C4 ::S18574C4(){ note_ctor("S18574C4", this);} // tgen

static void Test_S18574C4()
{
  extern Class_Descriptor cd_S18574C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,32)];
    init_test(&cd_S18574C4, buf);
    S18574C4 *dp, &lv = *(dp=new (buf) S18574C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,124), "sizeof(S18574C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18574C4)");
    set_bf_and_test(lv, s18574c4f0, ABISELECT(8,4), 0, 6, 1, "S18574C4");
    set_bf_and_test(lv, s18574c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S18574C4");
    check_field_offset(lv, s18574c4f1, ABISELECT(16,8), "S18574C4.s18574c4f1");
    set_bf_and_test(lv, s18574c4f2, ABISELECT(24,12), 0, 4, 1, "S18574C4");
    set_bf_and_test(lv, s18574c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S18574C4");
    check_field_offset(lv, s18574c4f3, ABISELECT(32,16), "S18574C4.s18574c4f3");
    check_field_offset(lv, s18574c4f4, ABISELECT(136,120), "S18574C4.s18574c4f4");
    test_class_info(&lv, &cd_S18574C4);
    dp->~S18574C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C4(Test_S18574C4, "S18574C4", ABISELECT(144,124));

#else // __cplusplus

extern void _ZN8S18574C4C1Ev();
extern void _ZN8S18574C4D1Ev();
Name_Map name_map_S18574C4[] = {
  NSPAIR(_ZN8S18574C4C1Ev),
  NSPAIR(_ZN8S18574C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18574C4[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C4[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
Class_Descriptor cd_S18574C4 = {  "S18574C4", // class name
  0,0,//no base classes
  &(vtc_S18574C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI8S18574C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18574C4),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  S18574C5  {
  int s18574c5f0[2];
  __tsi64 s18574c5f1[2];
  ::S18574C4 s18574c5f2[3];
  virtual void  v4(); // _ZN8S18574C52v4Ev
  virtual void  v5(); // _ZN8S18574C52v5Ev
  virtual void  v6(); // _ZN8S18574C52v6Ev
  ~S18574C5(); // tgen
  S18574C5(); // tgen
};
//SIG(-1 S18574C5) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S18574C5 ::v4(){vfunc_called(this, "_ZN8S18574C52v4Ev");}
void  S18574C5 ::v5(){vfunc_called(this, "_ZN8S18574C52v5Ev");}
void  S18574C5 ::v6(){vfunc_called(this, "_ZN8S18574C52v6Ev");}
S18574C5 ::~S18574C5(){ note_dtor("S18574C5", this);} // tgen
S18574C5 ::S18574C5(){ note_ctor("S18574C5", this);} // tgen

static void Test_S18574C5()
{
  extern Class_Descriptor cd_S18574C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,101)];
    init_test(&cd_S18574C5, buf);
    S18574C5 *dp, &lv = *(dp=new (buf) S18574C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,400), "sizeof(S18574C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18574C5)");
    check_field_offset(lv, s18574c5f0, ABISELECT(8,4), "S18574C5.s18574c5f0");
    check_field_offset(lv, s18574c5f1, ABISELECT(16,12), "S18574C5.s18574c5f1");
    check_field_offset(lv, s18574c5f2, ABISELECT(32,28), "S18574C5.s18574c5f2");
    test_class_info(&lv, &cd_S18574C5);
    dp->~S18574C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C5(Test_S18574C5, "S18574C5", ABISELECT(464,400));

#else // __cplusplus

extern void _ZN8S18574C5C1Ev();
extern void _ZN8S18574C5D1Ev();
Name_Map name_map_S18574C5[] = {
  NSPAIR(_ZN8S18574C5C1Ev),
  NSPAIR(_ZN8S18574C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18574C5[];
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY vtc_S18574C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C5[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
Class_Descriptor cd_S18574C5 = {  "S18574C5", // class name
  0,0,//no base classes
  &(vtc_S18574C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI8S18574C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18574C5),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C6  : virtual S18574C4 {
  void *s18574c6f0;
  ::S18574C4 s18574c6f1;
  int s18574c6f2:3;
  ~S18574C6(); // tgen
  S18574C6(); // tgen
};
//SIG(-1 S18574C6) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S18574C6 ::~S18574C6(){ note_dtor("S18574C6", this);} // tgen
S18574C6 ::S18574C6(){ note_ctor("S18574C6", this);} // tgen

static void Test_S18574C6()
{
  extern Class_Descriptor cd_S18574C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,66)];
    init_test(&cd_S18574C6, buf);
    S18574C6 *dp, &lv = *(dp=new (buf) S18574C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,260), "sizeof(S18574C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18574C6)");
    check_base_class_offset(lv, (S18574C4*), ABISELECT(168,136), "S18574C6");
    check_field_offset(lv, s18574c6f0, ABISELECT(8,4), "S18574C6.s18574c6f0");
    check_field_offset(lv, s18574c6f1, ABISELECT(16,8), "S18574C6.s18574c6f1");
    set_bf_and_test(lv, s18574c6f2, ABISELECT(160,132), 0, 3, 1, "S18574C6");
    set_bf_and_test(lv, s18574c6f2, ABISELECT(160,132), 0, 3, hide_sll(1LL<<2), "S18574C6");
    test_class_info(&lv, &cd_S18574C6);
    dp->~S18574C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C6(Test_S18574C6, "S18574C6", ABISELECT(312,260));

#else // __cplusplus

extern void _ZN8S18574C6C1Ev();
extern void _ZN8S18574C6D1Ev();
Name_Map name_map_S18574C6[] = {
  NSPAIR(_ZN8S18574C6C1Ev),
  NSPAIR(_ZN8S18574C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
static Base_Class bases_S18574C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    ABISELECT(168,136), //bcp->offset
    3, //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 _ZTI8S18574C6[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C6[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18574C6[];
static  VTT_ENTRY vtt_S18574C6[] = {
  {&(_ZTV8S18574C6[3]),  3,7},
  {&(_ZTV8S18574C6[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
Class_Descriptor cd_S18574C6 = {  "S18574C6", // class name
  bases_S18574C6, 1,
  &(vtc_S18574C6[0]), // expected_vtbl_contents
  &(vtt_S18574C6[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI8S18574C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18574C6),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18574C6),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  S18574C7  {
  __tsi64 s18574c7f0;
  long double s18574c7f1;
  void *s18574c7f2;
  char s18574c7f3;
  ::S18574C4 s18574c7f4;
  void *s18574c7f5[2];
  __tsi64 s18574c7f6[8];
  short s18574c7f7;
  void *s18574c7f8;
  __tsi64 s18574c7f9:64;
  virtual void  v7(); // _ZN8S18574C72v7Ev
  ~S18574C7(); // tgen
  S18574C7(); // tgen
};
//SIG(-1 S18574C7) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


void  S18574C7 ::v7(){vfunc_called(this, "_ZN8S18574C72v7Ev");}
S18574C7 ::~S18574C7(){ note_dtor("S18574C7", this);} // tgen
S18574C7 ::S18574C7(){ note_ctor("S18574C7", this);} // tgen

static void Test_S18574C7()
{
  extern Class_Descriptor cd_S18574C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,62)];
    init_test(&cd_S18574C7, buf);
    S18574C7 *dp, &lv = *(dp=new (buf) S18574C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,244), "sizeof(S18574C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C7)");
    check_field_offset(lv, s18574c7f0, ABISELECT(8,4), "S18574C7.s18574c7f0");
    check_field_offset(lv, s18574c7f1, ABISELECT(16,12), "S18574C7.s18574c7f1");
    check_field_offset(lv, s18574c7f2, ABISELECT(32,24), "S18574C7.s18574c7f2");
    check_field_offset(lv, s18574c7f3, ABISELECT(40,28), "S18574C7.s18574c7f3");
    check_field_offset(lv, s18574c7f4, ABISELECT(48,32), "S18574C7.s18574c7f4");
    check_field_offset(lv, s18574c7f5, ABISELECT(192,156), "S18574C7.s18574c7f5");
    check_field_offset(lv, s18574c7f6, ABISELECT(208,164), "S18574C7.s18574c7f6");
    check_field_offset(lv, s18574c7f7, ABISELECT(272,228), "S18574C7.s18574c7f7");
    check_field_offset(lv, s18574c7f8, ABISELECT(280,232), "S18574C7.s18574c7f8");
    set_bf_and_test(lv, s18574c7f9, ABISELECT(288,236), 0, 64, 1, "S18574C7");
    set_bf_and_test(lv, s18574c7f9, ABISELECT(288,236), 0, 64, hide_sll(1LL<<63), "S18574C7");
    test_class_info(&lv, &cd_S18574C7);
    dp->~S18574C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C7(Test_S18574C7, "S18574C7", ABISELECT(304,244));

#else // __cplusplus

extern void _ZN8S18574C7C1Ev();
extern void _ZN8S18574C7D1Ev();
Name_Map name_map_S18574C7[] = {
  NSPAIR(_ZN8S18574C7C1Ev),
  NSPAIR(_ZN8S18574C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18574C7[];
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY vtc_S18574C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C7[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
Class_Descriptor cd_S18574C7 = {  "S18574C7", // class name
  0,0,//no base classes
  &(vtc_S18574C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI8S18574C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18574C7),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C3  : S18574C4 , virtual S18574C5 , virtual S18574C6 , virtual S18574C7 {
  ::S18574C7 s18574c3f0;
  short s18574c3f1;
  int s18574c3f2[2];
  ~S18574C3(); // tgen
  S18574C3(); // tgen
};
//SIG(-1 S18574C3) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v2 v3 v4 Fi[2] FL[2] FC2[3]} VBC4{ VBC2 Fp FC2 Fi:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S18574C3 ::~S18574C3(){ note_dtor("S18574C3", this);} // tgen
S18574C3 ::S18574C3(){ note_ctor("S18574C3", this);} // tgen

static void Test_S18574C3()
{
  extern Class_Descriptor cd_S18574C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,322)];
    init_test(&cd_S18574C3, buf);
    S18574C3 *dp, &lv = *(dp=new (buf) S18574C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,1284), "sizeof(S18574C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C3)");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), 0, "S18574C3");
    check_base_class_offset(lv, (S18574C5*), ABISELECT(464,380), "S18574C3");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(1096,916), "S18574C3");
    check_base_class_offset(lv, (S18574C6*), ABISELECT(928,780), "S18574C3");
    check_base_class_offset(lv, (S18574C7*), ABISELECT(1248,1040), "S18574C3");
    check_field_offset(lv, s18574c3f0, ABISELECT(144,124), "S18574C3.s18574c3f0");
    check_field_offset(lv, s18574c3f1, ABISELECT(448,368), "S18574C3.s18574c3f1");
    check_field_offset(lv, s18574c3f2, ABISELECT(452,372), "S18574C3.s18574c3f2");
    test_class_info(&lv, &cd_S18574C3);
    dp->~S18574C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C3(Test_S18574C3, "S18574C3", ABISELECT(1552,1284));

#else // __cplusplus

extern void _ZN8S18574C3C1Ev();
extern void _ZN8S18574C3D1Ev();
Name_Map name_map_S18574C3[] = {
  NSPAIR(_ZN8S18574C3C1Ev),
  NSPAIR(_ZN8S18574C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
static Base_Class bases_S18574C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(464,380), //bcp->offset
    7, //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},
  {&cd_S18574C4,    ABISELECT(1096,916), //bcp->offset
    18, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(928,780), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C7,    ABISELECT(1248,1040), //bcp->offset
    22, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18574C3[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY vtc_S18574C3[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S18574C3[];
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__8S18574C3[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C3[] = {
  {&(_ZTV8S18574C3[6]),  6,26},
  {&(_ZTV8S18574C3[12]),  12,26},
  {&(_ZTV8S18574C3[18]),  18,26},
  {&(_ZTV8S18574C3[21]),  21,26},
  {&(_ZTV8S18574C3[25]),  25,26},
  {&(_tg__ZTV8S18574C6__8S18574C3[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__8S18574C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
Class_Descriptor cd_S18574C3 = {  "S18574C3", // class name
  bases_S18574C3, 5,
  &(vtc_S18574C3[0]), // expected_vtbl_contents
  &(vtt_S18574C3[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI8S18574C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18574C3),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18574C3),7, //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  S18574C9  : S18574C7 , S18574C5 , S18574C4 {
  __tsi64 s18574c9f0[2];
  void *s18574c9f1[8];
  ::S18574C3 s18574c9f2;
  void *s18574c9f3;
  int s18574c9f4;
  ::S18574C3 s18574c9f5;
  int s18574c9f6;
  virtual  ~S18574C9(); // _ZN8S18574C9D1Ev
  virtual void  v8(); // _ZN8S18574C92v8Ev
  S18574C9(); // tgen
};
//SIG(-1 S18574C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S18574C9 ::~S18574C9(){ note_dtor("S18574C9", this);}
void  S18574C9 ::v8(){vfunc_called(this, "_ZN8S18574C92v8Ev");}
S18574C9 ::S18574C9(){ note_ctor("S18574C9", this);} // tgen

static void Test_S18574C9()
{
  extern Class_Descriptor cd_S18574C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,850)];
    init_test(&cd_S18574C9, buf);
    S18574C9 *dp, &lv = *(dp=new (buf) S18574C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,3396), "sizeof(S18574C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C9)");
    check_base_class_offset(lv, (S18574C7*), 0, "S18574C9");
    check_base_class_offset(lv, (S18574C5*), ABISELECT(296,244), "S18574C9");
    check_base_class_offset(lv, (S18574C4*), ABISELECT(760,644), "S18574C9");
    check_field_offset(lv, s18574c9f0, ABISELECT(904,768), "S18574C9.s18574c9f0");
    check_field_offset(lv, s18574c9f1, ABISELECT(920,784), "S18574C9.s18574c9f1");
    check_field_offset(lv, s18574c9f2, ABISELECT(992,816), "S18574C9.s18574c9f2");
    check_field_offset(lv, s18574c9f3, ABISELECT(2544,2100), "S18574C9.s18574c9f3");
    check_field_offset(lv, s18574c9f4, ABISELECT(2552,2104), "S18574C9.s18574c9f4");
    check_field_offset(lv, s18574c9f5, ABISELECT(2560,2108), "S18574C9.s18574c9f5");
    check_field_offset(lv, s18574c9f6, ABISELECT(4112,3392), "S18574C9.s18574c9f6");
    test_class_info(&lv, &cd_S18574C9);
    dp->~S18574C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C9(Test_S18574C9, "S18574C9", ABISELECT(4128,3396));

#else // __cplusplus

extern void _ZN8S18574C9C1Ev();
extern void _ZN8S18574C9D1Ev();
Name_Map name_map_S18574C9[] = {
  NSPAIR(_ZN8S18574C9C1Ev),
  NSPAIR(_ZN8S18574C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
static Base_Class bases_S18574C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S18574C5,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_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_S18574C4,    ABISELECT(760,644), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18574C9[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C9D1Ev();
extern void _ZN8S18574C9D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C9[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S18574C9[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S18574C9[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
Class_Descriptor cd_S18574C9 = {  "S18574C9", // class name
  bases_S18574C9, 3,
  &(vtc_S18574C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI8S18574C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S18574C9),14, //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  S18574C12  : S18574C7 {
  ::S18574C6 s18574c12f0;
  int s18574c12f1;
  void *s18574c12f2;
  int s18574c12f3;
  virtual  ~S18574C12(); // _ZN9S18574C12D1Ev
  virtual void  v12(); // _ZN9S18574C123v12Ev
  S18574C12(); // tgen
};
//SIG(-1 S18574C12) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


 S18574C12 ::~S18574C12(){ note_dtor("S18574C12", this);}
void  S18574C12 ::v12(){vfunc_called(this, "_ZN9S18574C123v12Ev");}
S18574C12 ::S18574C12(){ note_ctor("S18574C12", this);} // tgen

static void Test_S18574C12()
{
  extern Class_Descriptor cd_S18574C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,130)];
    init_test(&cd_S18574C12, buf);
    S18574C12 *dp, &lv = *(dp=new (buf) S18574C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,516), "sizeof(S18574C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C12)");
    check_base_class_offset(lv, (S18574C7*), 0, "S18574C12");
    check_field_offset(lv, s18574c12f0, ABISELECT(296,244), "S18574C12.s18574c12f0");
    check_field_offset(lv, s18574c12f1, ABISELECT(608,504), "S18574C12.s18574c12f1");
    check_field_offset(lv, s18574c12f2, ABISELECT(616,508), "S18574C12.s18574c12f2");
    check_field_offset(lv, s18574c12f3, ABISELECT(624,512), "S18574C12.s18574c12f3");
    test_class_info(&lv, &cd_S18574C12);
    dp->~S18574C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C12(Test_S18574C12, "S18574C12", ABISELECT(640,516));

#else // __cplusplus

extern void _ZN9S18574C12C1Ev();
extern void _ZN9S18574C12D1Ev();
Name_Map name_map_S18574C12[] = {
  NSPAIR(_ZN9S18574C12C1Ev),
  NSPAIR(_ZN9S18574C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
static Base_Class bases_S18574C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S18574C12[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN9S18574C12D1Ev();
extern void _ZN9S18574C12D0Ev();
extern void _ZN9S18574C123v12Ev();
static  VTBL_ENTRY vtc_S18574C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C12[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18574C12D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C12D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C123v12Ev,
};
extern VTBL_ENTRY _ZTI9S18574C12[];
extern  VTBL_ENTRY _ZTV9S18574C12[];
Class_Descriptor cd_S18574C12 = {  "S18574C12", // class name
  bases_S18574C12, 1,
  &(vtc_S18574C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI9S18574C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S18574C12),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  S18574C11  : virtual S18574C7 , virtual S18574C9 , virtual S18574C4 , virtual S18574C6 {
  __tsi64 s18574c11f0:44;
  void *s18574c11f1;
  int s18574c11f2;
  ::S18574C3 s18574c11f3;
  __tsi64 s18574c11f4[2];
  int s18574c11f5[3];
  ::S18574C9 s18574c11f6;
  char s18574c11f7:7;
  ::S18574C12 s18574c11f8;
  ~S18574C11(); // tgen
  S18574C11(); // tgen
};
//SIG(-1 S18574C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S18574C11 ::~S18574C11(){ note_dtor("S18574C11", this);} // tgen
S18574C11 ::S18574C11(){ note_ctor("S18574C11", this);} // tgen

static void Test_S18574C11()
{
  extern Class_Descriptor cd_S18574C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,2288)];
    init_test(&cd_S18574C11, buf);
    S18574C11 *dp, &lv = *(dp=new (buf) S18574C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,9148), "sizeof(S18574C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C11)");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*), ABISELECT(6400,5248), "S18574C11");
    check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(6704,5492), "S18574C11");
    check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(7000,5736), "S18574C11");
    check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(7464,6136), "S18574C11");
    check_base_class_offset(lv, (S18574C9*), ABISELECT(6704,5492), "S18574C11");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), ABISELECT(10824,8888), "S18574C11");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(10824,8888), "S18574C11");
    check_base_class_offset(lv, (S18574C6*), ABISELECT(10968,9012), "S18574C11");
    set_bf_and_test(lv, s18574c11f0, ABISELECT(8,4), 0, 44, 1, "S18574C11");
    set_bf_and_test(lv, s18574c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S18574C11");
    check_field_offset(lv, s18574c11f1, ABISELECT(16,12), "S18574C11.s18574c11f1");
    check_field_offset(lv, s18574c11f2, ABISELECT(24,16), "S18574C11.s18574c11f2");
    check_field_offset(lv, s18574c11f3, ABISELECT(32,20), "S18574C11.s18574c11f3");
    check_field_offset(lv, s18574c11f4, ABISELECT(1584,1304), "S18574C11.s18574c11f4");
    check_field_offset(lv, s18574c11f5, ABISELECT(1600,1320), "S18574C11.s18574c11f5");
    check_field_offset(lv, s18574c11f6, ABISELECT(1616,1332), "S18574C11.s18574c11f6");
    set_bf_and_test(lv, s18574c11f7, ABISELECT(5744,4728), 0, 7, 1, "S18574C11");
    set_bf_and_test(lv, s18574c11f7, ABISELECT(5744,4728), 0, 7, hide_sll(1LL<<6), "S18574C11");
    check_field_offset(lv, s18574c11f8, ABISELECT(5760,4732), "S18574C11.s18574c11f8");
    test_class_info(&lv, &cd_S18574C11);
    dp->~S18574C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C11(Test_S18574C11, "S18574C11", ABISELECT(11136,9148));

#else // __cplusplus

extern void _ZN9S18574C11C1Ev();
extern void _ZN9S18574C11D1Ev();
Name_Map name_map_S18574C11[] = {
  NSPAIR(_ZN9S18574C11C1Ev),
  NSPAIR(_ZN9S18574C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
static Base_Class bases_S18574C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C7,    ABISELECT(6400,5248), //bcp->offset
    8, //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_S18574C7,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(7000,5736), //bcp->offset
    25, //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
    4, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(7464,6136), //bcp->offset
    30, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(6704,5492), //bcp->offset
    12, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(10824,8888), //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C6,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C11[];
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S18574C11D1Ev,_ZThn5492_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S18574C11D0Ev,_ZThn5492_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C11[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern VTBL_ENTRY _ZTV9S18574C11[];
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C11[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C11[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C11[] = {
  {&(_ZTV9S18574C11[6]),  6,40},
  {&(_ZTV9S18574C11[11]),  11,40},
  {&(_ZTV9S18574C11[21]),  21,40},
  {&(_ZTV9S18574C11[27]),  27,40},
  {&(_ZTV9S18574C11[32]),  32,40},
  {&(_ZTV9S18574C11[36]),  36,40},
  {&(_ZTV9S18574C11[40]),  40,40},
  {&(_tg__ZTV8S18574C6__9S18574C11[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18574C11D0Ev,_ZThn5492_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18574C11D1Ev,_ZThn5492_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C11 = {  "S18574C11", // class name
  bases_S18574C11, 7,
  &(vtc_S18574C11[0]), // expected_vtbl_contents
  &(vtt_S18574C11[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI9S18574C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S18574C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C10  : virtual S18574C9 , virtual S18574C4 , virtual S18574C6 , S18574C3 , S18574C11 {
  ::S18574C9 s18574c10f0;
  __tsi64 s18574c10f1;
  char s18574c10f2:7;
  virtual void  v9(); // _ZN9S18574C102v9Ev
  ~S18574C10(); // tgen
  S18574C10(); // tgen
};
//SIG(-1 S18574C10) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S18574C10 ::v9(){vfunc_called(this, "_ZN9S18574C102v9Ev");}
S18574C10 ::~S18574C10(){ note_dtor("S18574C10", this);} // tgen
S18574C10 ::S18574C10(){ note_ctor("S18574C10", this);} // tgen

static void Test_S18574C10()
{
  extern Class_Descriptor cd_S18574C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,3335)];
    init_test(&cd_S18574C10, buf);
    S18574C10 *dp, &lv = *(dp=new (buf) S18574C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,13336), "sizeof(S18574C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C10)");
    check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(11008,9036), "S18574C10");
    check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(11304,9280), "S18574C10");
    check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(11768,9680), "S18574C10");
    check_base_class_offset(lv, (S18574C9*), ABISELECT(11008,9036), "S18574C10");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*), ABISELECT(11008,9036), "S18574C10");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), ABISELECT(15128,12432), "S18574C10");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(15128,12432), "S18574C10");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*), ABISELECT(15128,12432), "S18574C10");
    check_base_class_offset(lv, (S18574C6*), ABISELECT(15272,12556), "S18574C10");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(15272,12556), "S18574C10");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*), ABISELECT(15272,12556), "S18574C10");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), 0, "S18574C10");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(15440,12692), "S18574C10");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(15904,13092), "S18574C10");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*), ABISELECT(15904,13092), "S18574C10");
    check_base_class_offset(lv, (S18574C3*), 0, "S18574C10");
    check_base_class_offset(lv, (S18574C11*), ABISELECT(464,380), "S18574C10");
    check_field_offset(lv, s18574c10f0, ABISELECT(6864,5628), "S18574C10.s18574c10f0");
    check_field_offset(lv, s18574c10f1, ABISELECT(10992,9024), "S18574C10.s18574c10f1");
    set_bf_and_test(lv, s18574c10f2, ABISELECT(11000,9032), 0, 7, 1, "S18574C10");
    set_bf_and_test(lv, s18574c10f2, ABISELECT(11000,9032), 0, 7, hide_sll(1LL<<6), "S18574C10");
    test_class_info(&lv, &cd_S18574C10);
    dp->~S18574C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C10(Test_S18574C10, "S18574C10", ABISELECT(16208,13336));

#else // __cplusplus

extern void _ZN9S18574C10C1Ev();
extern void _ZN9S18574C10D1Ev();
Name_Map name_map_S18574C10[] = {
  NSPAIR(_ZN9S18574C10C1Ev),
  NSPAIR(_ZN9S18574C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
static Base_Class bases_S18574C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C7,    ABISELECT(11008,9036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18574C5,    ABISELECT(11304,9280), //bcp->offset
    32, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(11768,9680), //bcp->offset
    37, //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_S18574C9,    ABISELECT(11008,9036), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(15128,12432), //bcp->offset
    40, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C6,    ABISELECT(15272,12556), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(15440,12692), //bcp->offset
    47, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(15904,13092), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18574C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S18574C11,    ABISELECT(464,380), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C10[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY vtc_S18574C10[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern VTBL_ENTRY _ZTV9S18574C10[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__9S18574C10[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__9S18574C10[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__9S18574C10[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__9S18574C10[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__9S18574C10[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C11__9S18574C10[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C11__9S18574C10[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C11__9S18574C10[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C11__9S18574C10[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C11__9S18574C10[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C11__9S18574C10[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C10[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C10[] = {
  {&(_ZTV9S18574C10[7]),  7,59},
  {&(_tg__ZTV8S18574C3__9S18574C10[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__9S18574C10[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__9S18574C10[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__9S18574C10[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__9S18574C10[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C11__9S18574C10[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C11__9S18574C10[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C11__9S18574C10[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C11__9S18574C10[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C11__9S18574C10[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C11__9S18574C10[3]),  3,3},
  {&(_ZTV9S18574C10[28]),  28,59},
  {&(_ZTV9S18574C10[34]),  34,59},
  {&(_ZTV9S18574C10[39]),  39,59},
  {&(_ZTV9S18574C10[43]),  43,59},
  {&(_ZTV9S18574C10[47]),  47,59},
  {&(_ZTV9S18574C10[52]),  52,59},
  {&(_ZTV9S18574C10[58]),  58,59},
  {&(_ZTV9S18574C10[17]),  17,59},
  {&(_tg__ZTV8S18574C6__9S18574C10[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C10 = {  "S18574C10", // class name
  bases_S18574C10, 11,
  &(vtc_S18574C10[0]), // expected_vtbl_contents
  &(vtt_S18574C10[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI9S18574C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18574C10),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C10),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C8  : virtual S18574C4 , virtual S18574C3 , S18574C9 , S18574C10 {
  ::S18574C11 s18574c8f0;
  short s18574c8f1;
  int s18574c8f2:8;
  virtual void  v10(); // _ZN8S18574C83v10Ev
  virtual void  v11(); // _ZN8S18574C83v11Ev
  ~S18574C8(); // tgen
  S18574C8(); // tgen
};
//SIG(-1 S18574C8) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC5{ VBC2 Fp FC2 Fi:3} VBC6{ v7 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ BC6 BC4 BC2 vd v8 FL[2] Fp[8] FC3 Fp Fi FC3 Fi} BC8{ VBC7 VBC2 VBC5 BC3 BC9{ VBC6 VBC7 VBC2 VBC5 FL:44 Fp Fi FC3 FL[2] Fi[3] FC7 Fc:7 FC10{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC7 FL Fc:7} v1 v2 FC9 Fs Fi:8}


void  S18574C8 ::v10(){vfunc_called(this, "_ZN8S18574C83v10Ev");}
void  S18574C8 ::v11(){vfunc_called(this, "_ZN8S18574C83v11Ev");}
S18574C8 ::~S18574C8(){ note_dtor("S18574C8", this);} // tgen
S18574C8 ::S18574C8(){ note_ctor("S18574C8", this);} // tgen

static void Test_S18574C8()
{
  extern Class_Descriptor cd_S18574C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,6567)];
    init_test(&cd_S18574C8, buf);
    S18574C8 *dp, &lv = *(dp=new (buf) S18574C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,26264), "sizeof(S18574C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C8)");
    /*is_ambiguous_... S18574C8::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), ABISELECT(26280,21584), "S18574C8");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(26280,21584), "S18574C8");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*), ABISELECT(26280,21584), "S18574C8");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*), ABISELECT(26280,21584), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), ABISELECT(26432,21708), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(26896,22088), "S18574C8");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*), ABISELECT(26896,22088), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(27360,22488), "S18574C8");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*), ABISELECT(27360,22488), "S18574C8");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*), ABISELECT(27360,22488), "S18574C8");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*), ABISELECT(27360,22488), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(27536,22624), "S18574C8");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*), ABISELECT(27536,22624), "S18574C8");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*), ABISELECT(27536,22624), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*), ABISELECT(26432,21708), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*), 0, "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(296,244), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(760,644), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C9*), 0, "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(27840,22868), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(28136,23112), "S18574C8");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(28600,23512), "S18574C8");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*), ABISELECT(27840,22868), "S18574C8");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*), ABISELECT(27840,22868), "S18574C8");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*), ABISELECT(4128,3396), "S18574C8");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*), ABISELECT(4128,3396), "S18574C8");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*), ABISELECT(4592,3776), "S18574C8");
    check_base_class_offset(lv, (S18574C10*), ABISELECT(4128,3396), "S18574C8");
    check_field_offset(lv, s18574c8f0, ABISELECT(15136,12432), "S18574C8.s18574c8f0");
    check_field_offset(lv, s18574c8f1, ABISELECT(26272,21580), "S18574C8.s18574c8f1");
    set_bf_and_test(lv, s18574c8f2, ABISELECT(26274,21582), 0, 8, 1, "S18574C8");
    set_bf_and_test(lv, s18574c8f2, ABISELECT(26274,21582), 0, 8, hide_sll(1LL<<7), "S18574C8");
    test_class_info(&lv, &cd_S18574C8);
    dp->~S18574C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C8(Test_S18574C8, "S18574C8", ABISELECT(31968,26264));

#else // __cplusplus

extern void _ZN8S18574C8C1Ev();
extern void _ZN8S18574C8D1Ev();
Name_Map name_map_S18574C8[] = {
  NSPAIR(_ZN8S18574C8C1Ev),
  NSPAIR(_ZN8S18574C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
static Base_Class bases_S18574C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    ABISELECT(26280,21584), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(26432,21708), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(26896,22088), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(27360,22488), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(27536,22624), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(26432,21708), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(296,244), //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
    9, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(760,644), //bcp->offset
    19, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S18574C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C7,    ABISELECT(27840,22868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(28136,23112), //bcp->offset
    81, //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(28600,23512), //bcp->offset
    86, //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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(27840,22868), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(4592,3776), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(4128,3396), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18574C8[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C8D1Ev();
extern void _ZN8S18574C8D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev)();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18574C8D1Ev,_ZThn22868_N8S18574C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18574C8D0Ev,_ZThn22868_N8S18574C8D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C8[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev),
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18574C8[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C10__8S18574C8[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C10__A1__8S18574C8[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C10__A1__8S18574C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C10__A1__8S18574C8[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A1__8S18574C8[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C10__A1__8S18574C8[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__8S18574C8[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C10__8S18574C8[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18574C11D1Ev,_ZThn19092_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18574C11D0Ev,_ZThn19092_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C10__8S18574C8[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__8S18574C8[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__8S18574C8[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C10__8S18574C8[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C10__8S18574C8[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18574C10D1Ev,_ZThn19472_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18574C10D0Ev,_ZThn19472_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C10__8S18574C8[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C10__8S18574C8[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C10__8S18574C8[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C10__8S18574C8[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10__8S18574C8[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C10__8S18574C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C10__8S18574C8[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10__8S18574C8[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C8[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__8S18574C8[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__8S18574C8[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__8S18574C8[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__8S18574C8[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C8[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__8S18574C8[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C8[] = {
  {&(_ZTV8S18574C8[8]),  8,89},
  {&(_tg__ZTV9S18574C10__8S18574C8[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C10__A1__8S18574C8[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C10__A1__8S18574C8[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C10__A1__8S18574C8[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A1__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C10__A1__8S18574C8[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C10__8S18574C8[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C10__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C10__8S18574C8[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__8S18574C8[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__8S18574C8[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C10__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C10__8S18574C8[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C10__8S18574C8[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C10__8S18574C8[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C10__8S18574C8[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C10__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C10__8S18574C8[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C10__8S18574C8[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C10__8S18574C8[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10__8S18574C8[6]),  6,8},
  {&(_ZTV8S18574C8[44]),  44,89},
  {&(_ZTV8S18574C8[52]),  52,89},
  {&(_ZTV8S18574C8[58]),  58,89},
  {&(_ZTV8S18574C8[64]),  64,89},
  {&(_ZTV8S18574C8[67]),  67,89},
  {&(_ZTV8S18574C8[29]),  29,89},
  {&(_ZTV8S18574C8[77]),  77,89},
  {&(_ZTV8S18574C8[83]),  83,89},
  {&(_ZTV8S18574C8[88]),  88,89},
  {&(_ZTV8S18574C8[39]),  39,89},
  {&(_tg__ZTV8S18574C3__8S18574C8[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__8S18574C8[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__8S18574C8[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__8S18574C8[3]),  3,4},
  {&(_tg__ZTV8S18574C6__8S18574C8[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__8S18574C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18574C8[];
extern  VTBL_ENTRY _ZTV8S18574C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C8[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18574C10D0Ev,_ZThn19472_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18574C10D1Ev,_ZThn19472_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18574C11D0Ev,_ZThn19092_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18574C11D1Ev,_ZThn19092_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18574C8D0Ev,_ZThn22868_N8S18574C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18574C8D1Ev,_ZThn22868_N8S18574C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C8 = {  "S18574C8", // class name
  bases_S18574C8, 18,
  &(vtc_S18574C8[0]), // expected_vtbl_contents
  &(vtt_S18574C8[0]), // expected_vtt_contents
  ABISELECT(31968,26264), // object size
  NSPAIRA(_ZTI8S18574C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18574C8),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18574C8),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C14  : virtual S18574C6 {
  ::S18574C11 s18574c14f0;
  int s18574c14f1:6;
  int s18574c14f2;
  __tsi64 s18574c14f3;
  ~S18574C14(); // tgen
  S18574C14(); // tgen
};
//SIG(-1 S18574C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC3 Fi:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 FL[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} Fi:6 Fi FL}


S18574C14 ::~S18574C14(){ note_dtor("S18574C14", this);} // tgen
S18574C14 ::S18574C14(){ note_ctor("S18574C14", this);} // tgen

static void Test_S18574C14()
{
  extern Class_Descriptor cd_S18574C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,2358)];
    init_test(&cd_S18574C14, buf);
    S18574C14 *dp, &lv = *(dp=new (buf) S18574C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,9428), "sizeof(S18574C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C14)");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(11336,9304), "S18574C14");
    check_base_class_offset(lv, (S18574C6*), ABISELECT(11168,9168), "S18574C14");
    check_field_offset(lv, s18574c14f0, ABISELECT(16,4), "S18574C14.s18574c14f0");
    set_bf_and_test(lv, s18574c14f1, ABISELECT(11152,9152), 0, 6, 1, "S18574C14");
    set_bf_and_test(lv, s18574c14f1, ABISELECT(11152,9152), 0, 6, hide_sll(1LL<<5), "S18574C14");
    check_field_offset(lv, s18574c14f2, ABISELECT(11156,9156), "S18574C14.s18574c14f2");
    check_field_offset(lv, s18574c14f3, ABISELECT(11160,9160), "S18574C14.s18574c14f3");
    test_class_info(&lv, &cd_S18574C14);
    dp->~S18574C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C14(Test_S18574C14, "S18574C14", ABISELECT(11488,9428));

#else // __cplusplus

extern void _ZN9S18574C14C1Ev();
extern void _ZN9S18574C14D1Ev();
Name_Map name_map_S18574C14[] = {
  NSPAIR(_ZN9S18574C14C1Ev),
  NSPAIR(_ZN9S18574C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
static Base_Class bases_S18574C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    ABISELECT(11336,9304), //bcp->offset
    7, //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
    1, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(11168,9168), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //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 _ZTI9S18574C14[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C14[] = {
  ABISELECT(11336,9304),
  ABISELECT(11168,9168),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
  ABISELECT(168,136),
  ABISELECT(-11168,-9168),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
  0,
  ABISELECT(-11336,-9304),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18574C14[];
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C14[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C14[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C14[] = {
  {&(_ZTV9S18574C14[4]),  4,11},
  {&(_ZTV9S18574C14[7]),  7,11},
  {&(_ZTV9S18574C14[10]),  10,11},
  {&(_tg__ZTV8S18574C6__9S18574C14[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C14[];
extern  VTBL_ENTRY _ZTV9S18574C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C14[];
Class_Descriptor cd_S18574C14 = {  "S18574C14", // class name
  bases_S18574C14, 2,
  &(vtc_S18574C14[0]), // expected_vtbl_contents
  &(vtt_S18574C14[0]), // expected_vtt_contents
  ABISELECT(11488,9428), // object size
  NSPAIRA(_ZTI9S18574C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S18574C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C14),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  S18574C15  : virtual S18574C7 , S18574C5 , virtual S18574C10 {
  char s18574c15f0:8;
  int s18574c15f1;
  ~S18574C15(); // tgen
  S18574C15(); // tgen
};
//SIG(-1 S18574C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 FL[2] Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S18574C15 ::~S18574C15(){ note_dtor("S18574C15", this);} // tgen
S18574C15 ::S18574C15(){ note_ctor("S18574C15", this);} // tgen

static void Test_S18574C15()
{
  extern Class_Descriptor cd_S18574C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,3437)];
    init_test(&cd_S18574C15, buf);
    S18574C15 *dp, &lv = *(dp=new (buf) S18574C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,13744), "sizeof(S18574C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C15)");
    /*is_ambiguous_... S18574C15::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*), ABISELECT(480,408), "S18574C15");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*), ABISELECT(480,408), "S18574C15");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*), ABISELECT(480,408), "S18574C15");
    /*is_ambiguous_... S18574C15::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*), 0, "S18574C15");
    check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(11792,9688), "S18574C15");
    check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(12088,9932), "S18574C15");
    check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(12552,10332), "S18574C15");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*), ABISELECT(11792,9688), "S18574C15");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*), ABISELECT(11792,9688), "S18574C15");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*), ABISELECT(15912,13084), "S18574C15");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(15912,13084), "S18574C15");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*), ABISELECT(15912,13084), "S18574C15");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*), ABISELECT(16056,13208), "S18574C15");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*), ABISELECT(16056,13208), "S18574C15");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*), ABISELECT(16056,13208), "S18574C15");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*), ABISELECT(784,652), "S18574C15");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*), ABISELECT(16224,13344), "S18574C15");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*), ABISELECT(784,652), "S18574C15");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*), ABISELECT(1248,1032), "S18574C15");
    check_base_class_offset(lv, (S18574C10*), ABISELECT(784,652), "S18574C15");
    set_bf_and_test(lv, s18574c15f0, ABISELECT(464,400), 0, 8, 1, "S18574C15");
    set_bf_and_test(lv, s18574c15f0, ABISELECT(464,400), 0, 8, hide_sll(1LL<<7), "S18574C15");
    check_field_offset(lv, s18574c15f1, ABISELECT(468,404), "S18574C15.s18574c15f1");
    test_class_info(&lv, &cd_S18574C15);
    dp->~S18574C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C15(Test_S18574C15, "S18574C15", ABISELECT(16688,13744));

#else // __cplusplus

extern void _ZN9S18574C15C1Ev();
extern void _ZN9S18574C15D1Ev();
Name_Map name_map_S18574C15[] = {
  NSPAIR(_ZN9S18574C15C1Ev),
  NSPAIR(_ZN9S18574C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
static Base_Class bases_S18574C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C7,    ABISELECT(480,408), //bcp->offset
    13, //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_S18574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C7,    ABISELECT(11792,9688), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(12088,9932), //bcp->offset
    52, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(12552,10332), //bcp->offset
    57, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(11792,9688), //bcp->offset
    39, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(15912,13084), //bcp->offset
    60, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(16056,13208), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(16224,13344), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    10, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(1248,1032), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(784,652), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C15[];
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN9S18574C15D1Ev();
extern void _ZN9S18574C15D0Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S18574C15D1Ev,_ZThn652_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S18574C15D0Ev,_ZThn652_N9S18574C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev)();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S18574C15D1Ev,_ZThn9688_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S18574C15D0Ev,_ZThn9688_N9S18574C15D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY vtc_S18574C15[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(-784,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-784,-652),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18574C15[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C15[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C10__9S18574C15[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C10__9S18574C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C10__9S18574C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C10__9S18574C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C10__9S18574C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C10__9S18574C15[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C10__9S18574C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__9S18574C15[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__9S18574C15[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C10__9S18574C15[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C10__9S18574C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C10__9S18574C15[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C10__9S18574C15[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C10__9S18574C15[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C10__9S18574C15[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10__9S18574C15[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C10__9S18574C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C10__9S18574C15[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10__9S18574C15[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C15[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C15[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C15[] = {
  {&(_ZTV9S18574C15[8]),  8,75},
  {&(_ZTV9S18574C15[16]),  16,75},
  {&(_ZTV9S18574C15[27]),  27,75},
  {&(_ZTV9S18574C15[48]),  48,75},
  {&(_ZTV9S18574C15[54]),  54,75},
  {&(_ZTV9S18574C15[59]),  59,75},
  {&(_ZTV9S18574C15[63]),  63,75},
  {&(_ZTV9S18574C15[67]),  67,75},
  {&(_ZTV9S18574C15[72]),  72,75},
  {&(_ZTV9S18574C15[37]),  37,75},
  {&(_tg__ZTV9S18574C10__9S18574C15[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C10__9S18574C15[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C10__9S18574C15[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C10__9S18574C15[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C15[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C10__9S18574C15[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__9S18574C15[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__9S18574C15[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C10__9S18574C15[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C10__9S18574C15[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C10__9S18574C15[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C10__9S18574C15[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C10__9S18574C15[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C10__9S18574C15[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C10__9S18574C15[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10__9S18574C15[6]),  6,8},
  {&(_tg__ZTV8S18574C6__9S18574C15[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C15[];
extern  VTBL_ENTRY _ZTV9S18574C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C15[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18574C15D0Ev,_ZThn9688_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18574C15D1Ev,_ZThn9688_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18574C15D0Ev,_ZThn652_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18574C15D1Ev,_ZThn652_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C15 = {  "S18574C15", // class name
  bases_S18574C15, 13,
  &(vtc_S18574C15[0]), // expected_vtbl_contents
  &(vtt_S18574C15[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI9S18574C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18574C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C16  : S18574C4 , virtual S18574C7 , virtual S18574C15 , S18574C3 , S18574C12 {
  int s18574c16f0;
  ::S18574C3 s18574c16f1;
  int s18574c16f2;
  short s18574c16f3;
  __tsi64 s18574c16f4:8;
  int s18574c16f5;
  virtual  ~S18574C16(); // _ZN9S18574C16D2Ev
  virtual void  v13(); // _ZN9S18574C163v13Ev
  S18574C16(); // tgen
};
//SIG(-1 S18574C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v3 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} VBC4{ VBC3 BC5{ v4 v5 v6 Fi[2] FL[2] FC2[3]} VBC6{ VBC7{ BC3 BC5 BC2 vd v7 FL[2] Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC8 Fi} VBC2 VBC9 BC8 BC10{ VBC3 VBC7 VBC2 VBC9 FL:44 Fp Fi FC8 FL[2] Fi[3] FC7 Fc:7 FC11{ BC3 vd v9 FC9 Fi Fp Fi}} v8 FC7 FL Fc:7} Fc:8 Fi} BC8 BC11 vd v1 Fi FC8 Fi Fs FL:8 Fi}


 S18574C16 ::~S18574C16(){ note_dtor("S18574C16", this);}
void  S18574C16 ::v13(){vfunc_called(this, "_ZN9S18574C163v13Ev");}
S18574C16 ::S18574C16(){ note_ctor("S18574C16", this);} // tgen

static void Test_S18574C16()
{
  extern Class_Descriptor cd_S18574C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,4017)];
    init_test(&cd_S18574C16, buf);
    S18574C16 *dp, &lv = *(dp=new (buf) S18574C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,16064), "sizeof(S18574C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C16)");
    /*is_ambiguous_... S18574C16::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), 0, "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*), ABISELECT(2816,2320), "S18574C16");
    /*is_ambiguous_... S18574C15::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C15*), ABISELECT(2816,2320), "S18574C16");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*), ABISELECT(2816,2320), "S18574C16");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*), ABISELECT(2816,2320), "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(2816,2320), "S18574C16");
    /*is_ambiguous_... S18574C15::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C15*), ABISELECT(3112,2564), "S18574C16");
    check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(14592,12008), "S18574C16");
    check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(14888,12252), "S18574C16");
    check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(15352,12652), "S18574C16");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*), ABISELECT(14592,12008), "S18574C16");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*), ABISELECT(14592,12008), "S18574C16");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*), ABISELECT(18712,15404), "S18574C16");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(18712,15404), "S18574C16");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*), ABISELECT(18712,15404), "S18574C16");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*), ABISELECT(18856,15528), "S18574C16");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*), ABISELECT(18856,15528), "S18574C16");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*), ABISELECT(18856,15528), "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(18856,15528), "S18574C16");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*), ABISELECT(3584,2972), "S18574C16");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*), ABISELECT(19024,15664), "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(19024,15664), "S18574C16");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*), ABISELECT(3584,2972), "S18574C16");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*), ABISELECT(4048,3352), "S18574C16");
    check_base_class_offset(lv, (S18574C10*)(S18574C15*), ABISELECT(3584,2972), "S18574C16");
    check_base_class_offset(lv, (S18574C15*), ABISELECT(3112,2564), "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), ABISELECT(144,124), "S18574C16");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*), ABISELECT(144,124), "S18574C16");
    check_base_class_offset(lv, (S18574C7*)(S18574C12*), ABISELECT(608,504), "S18574C16");
    check_base_class_offset(lv, (S18574C12*), ABISELECT(608,504), "S18574C16");
    check_field_offset(lv, s18574c16f0, ABISELECT(1236,1020), "S18574C16.s18574c16f0");
    check_field_offset(lv, s18574c16f1, ABISELECT(1248,1024), "S18574C16.s18574c16f1");
    check_field_offset(lv, s18574c16f2, ABISELECT(2800,2308), "S18574C16.s18574c16f2");
    check_field_offset(lv, s18574c16f3, ABISELECT(2804,2312), "S18574C16.s18574c16f3");
    set_bf_and_test(lv, s18574c16f4, ABISELECT(2806,2314), 0, 8, 1, "S18574C16");
    set_bf_and_test(lv, s18574c16f4, ABISELECT(2806,2314), 0, 8, hide_sll(1LL<<7), "S18574C16");
    check_field_offset(lv, s18574c16f5, ABISELECT(2808,2316), "S18574C16.s18574c16f5");
    test_class_info(&lv, &cd_S18574C16);
    dp->~S18574C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C16(Test_S18574C16, "S18574C16", ABISELECT(19488,16064));

#else // __cplusplus

extern void _ZN9S18574C16C1Ev();
extern void _ZN9S18574C16D2Ev();
Name_Map name_map_S18574C16[] = {
  NSPAIR(_ZN9S18574C16C1Ev),
  NSPAIR(_ZN9S18574C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C15;
extern VTBL_ENTRY _ZTI9S18574C15[];
extern  VTBL_ENTRY _ZTV9S18574C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C15[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C12;
extern VTBL_ENTRY _ZTI9S18574C12[];
extern  VTBL_ENTRY _ZTV9S18574C12[];
static Base_Class bases_S18574C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C7,    ABISELECT(2816,2320), //bcp->offset
    26, //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
  1, 1},
  {&cd_S18574C5,    ABISELECT(3112,2564), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(14592,12008), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(14888,12252), //bcp->offset
    82, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(15352,12652), //bcp->offset
    87, //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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(14592,12008), //bcp->offset
    69, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(18712,15404), //bcp->offset
    90, //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(18856,15528), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(19024,15664), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(3584,2972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(4048,3352), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(3584,2972), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S18574C15,    ABISELECT(3112,2564), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(144,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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(144,124), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C7,    ABISELECT(608,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C12,    ABISELECT(608,504), //bcp->offset
    20, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C16[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C16D1Ev();
extern void _ZN9S18574C16D0Ev();
extern void _ZN9S18574C163v13Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZThn608_N9S18574C16D1Ev,_ZThn504_N9S18574C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S18574C16D0Ev,_ZThn504_N9S18574C16D0Ev)();
extern void _ZN9S18574C123v12Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S18574C16D1Ev,_ZThn2564_N9S18574C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S18574C16D0Ev,_ZThn2564_N9S18574C16D0Ev)() __attribute__((weak));
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S18574C16D1Ev,_ZThn2972_N9S18574C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S18574C16D0Ev,_ZThn2972_N9S18574C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev)();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S18574C16D1Ev,_ZThn12008_N9S18574C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S18574C16D0Ev,_ZThn12008_N9S18574C16D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY vtc_S18574C16[] = {
  ABISELECT(19024,15664),
  ABISELECT(18856,15528),
  ABISELECT(18712,15404),
  ABISELECT(14592,12008),
  ABISELECT(3584,2972),
  ABISELECT(3112,2564),
  ABISELECT(2816,2320),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-608,-504),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18574C16D1Ev,_ZThn504_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18574C16D0Ev,_ZThn504_N9S18574C16D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C123v12Ev,
  0,
  ABISELECT(-2816,-2320),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(-3112,-2564),
  0,
  0,
  0,
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  ABISELECT(-3112,-2564),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev),
  ABISELECT(-3584,-2972),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-3584,-2972),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-4048,-3352),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-14592,-12008),
  0,
  ABISELECT(-14592,-12008),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-14888,-12252),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-15352,-12652),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-18856,-15528),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-15664),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18574C16[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__A1__9S18574C16[] = {
  ABISELECT(2672,2196),
  ABISELECT(18568,15280),
  ABISELECT(18712,15404),
  ABISELECT(18880,15540),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__A1__9S18574C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-15540),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__A1__9S18574C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-18712,-15404),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__A1__9S18574C16[] = {
  0,
  ABISELECT(-18568,-15280),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__A1__9S18574C16[] = {
  0,
  ABISELECT(-2672,-2196),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN9S18574C15D1Ev();
extern void _ZN9S18574C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C15__9S18574C16[] = {
  ABISELECT(15912,13100),
  ABISELECT(15744,12964),
  ABISELECT(15600,12840),
  ABISELECT(11480,9444),
  ABISELECT(472,408),
  ABISELECT(-296,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C15__9S18574C16[] = {
  0,
  ABISELECT(296,244),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C15__9S18574C16[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S18574C15D1Ev,_ZThn9444_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S18574C15D0Ev,_ZThn9444_N9S18574C15D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C15__9S18574C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11480,-9444),
  0,
  ABISELECT(-11480,-9444),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C15__9S18574C16[] = {
  ABISELECT(-11776,-9688),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C15__9S18574C16[] = {
  ABISELECT(-12240,-10088),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C15__9S18574C16[] = {
  0,
  ABISELECT(-15600,-12840),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C15__9S18574C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15744,-12964),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A2__9S18574C15__9S18574C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-13100),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C15__9S18574C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C16[] = {
  ABISELECT(11008,9036),
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C10__9S18574C16[] = {
  ABISELECT(-768,-652),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C10__9S18574C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C10__9S18574C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C10__9S18574C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C10__9S18574C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C10__9S18574C16[] = {
  0,
  ABISELECT(1232,1032),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C10__9S18574C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__9S18574C16[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__9S18574C16[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C10__9S18574C16[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C10__9S18574C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C10__9S18574C16[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C10__9S18574C16[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C10__9S18574C16[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C10__9S18574C16[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10__9S18574C16[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C10__9S18574C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C10__9S18574C16[] = {
  0,
  ABISELECT(768,652),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10__9S18574C16[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-1232,-1032),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C16[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C16[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C16[] = {
  {&(_ZTV9S18574C16[9]),  9,105},
  {&(_tg__ZTV8S18574C3__A1__9S18574C16[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__A1__9S18574C16[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__A1__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__A1__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__A1__9S18574C16[3]),  3,4},
  {&(_ZTV9S18574C16[29]),  29,105},
  {&(_ZTV9S18574C16[42]),  42,105},
  {&(_ZTV9S18574C16[57]),  57,105},
  {&(_ZTV9S18574C16[78]),  78,105},
  {&(_ZTV9S18574C16[84]),  84,105},
  {&(_ZTV9S18574C16[89]),  89,105},
  {&(_ZTV9S18574C16[93]),  93,105},
  {&(_ZTV9S18574C16[97]),  97,105},
  {&(_ZTV9S18574C16[102]),  102,105},
  {&(_ZTV9S18574C16[67]),  67,105},
  {&(_ZTV9S18574C16[19]),  19,105},
  {&(_tg__ZTV9S18574C15__9S18574C16[8]),  8,13},
  {&(_tg__ZTV8S18574C7__9S18574C15__9S18574C16[3]),  3,4},
  {&(_tg__ZTV9S18574C10__9S18574C15__9S18574C16[10]),  10,14},
  {&(_tg__ZTV8S18574C9__9S18574C15__9S18574C16[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C15__9S18574C16[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C15__9S18574C16[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C15__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C15__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A2__9S18574C15__9S18574C16[5]),  5,8},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C15__9S18574C16[6]),  6,8},
  {&(_tg__ZTV9S18574C10__9S18574C16[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C10__9S18574C16[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C10__9S18574C16[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C10__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C16[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C10__9S18574C16[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__9S18574C16[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__9S18574C16[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C10__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C10__9S18574C16[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C10__9S18574C16[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C10__9S18574C16[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C10__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C10__9S18574C16[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C10__9S18574C16[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10__9S18574C16[6]),  6,8},
  {&(_tg__ZTV8S18574C6__9S18574C16[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C16[];
extern  VTBL_ENTRY _ZTV9S18574C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C16[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D0Ev,_ZThn9036_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18574C10D1Ev,_ZThn9036_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D0Ev,_ZThn8656_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18574C11D1Ev,_ZThn8656_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18574C15D0Ev,_ZThn9444_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18574C15D1Ev,_ZThn9444_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18574C16D0Ev,_ZThn12008_N9S18574C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18574C16D1Ev,_ZThn12008_N9S18574C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18574C16D0Ev,_ZThn2972_N9S18574C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18574C16D1Ev,_ZThn2972_N9S18574C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18574C16D0Ev,_ZThn2564_N9S18574C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18574C16D1Ev,_ZThn2564_N9S18574C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C16 = {  "S18574C16", // class name
  bases_S18574C16, 19,
  &(vtc_S18574C16[0]), // expected_vtbl_contents
  &(vtt_S18574C16[0]), // expected_vtt_contents
  ABISELECT(19488,16064), // object size
  NSPAIRA(_ZTI9S18574C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18574C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C13  : virtual S18574C5 , S18574C8 , S18574C14 , virtual S18574C15 , virtual S18574C16 {
  ::S18574C15 s18574c13f0;
  ::S18574C8 s18574c13f1;
  virtual void  v14(); // _ZN9S18574C133v14Ev
  ~S18574C13(); // tgen
  S18574C13(); // tgen
};
//SIG(-1 S18574C13) C1{ VBC2{ v2 v3 v4 Fi[2] FL[2] FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 Fi:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 FL[2] Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 FL[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs Fi:8} BC12{ VBC6 FC10 Fi:6 Fi FL} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S18574C13 ::v14(){vfunc_called(this, "_ZN9S18574C133v14Ev");}
S18574C13 ::~S18574C13(){ note_dtor("S18574C13", this);} // tgen
S18574C13 ::S18574C13(){ note_ctor("S18574C13", this);} // tgen

static void Test_S18574C13()
{
  extern Class_Descriptor cd_S18574C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,21802)];
    init_test(&cd_S18574C13, buf);
    S18574C13 *dp, &lv = *(dp=new (buf) S18574C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,87204), "sizeof(S18574C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C13)");
    /*is_ambiguous_... S18574C13::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*), ABISELECT(86112,70760), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(86112,70760), "S18574C13");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(86112,70760), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*), ABISELECT(86112,70760), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C16*), ABISELECT(86112,70760), "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C8*), ABISELECT(86576,71160), "S18574C13");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(86576,71160), "S18574C13");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*)(S18574C8*), ABISELECT(86576,71160), "S18574C13");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(86576,71160), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*), ABISELECT(86576,71160), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*), ABISELECT(86576,71160), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), ABISELECT(86720,71284), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(87184,71664), "S18574C13");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*)(S18574C8*), ABISELECT(87184,71664), "S18574C13");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(87184,71664), "S18574C13");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(87184,71664), "S18574C13");
    check_base_class_offset(lv, (S18574C6*)(S18574C14*), ABISELECT(87184,71664), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C10*), ABISELECT(87184,71664), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*), ABISELECT(87184,71664), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*), ABISELECT(87184,71664), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C16*), ABISELECT(87184,71664), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(87360,71800), "S18574C13");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C15::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C15*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C16*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C16*), ABISELECT(87360,71800), "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C8*), ABISELECT(86720,71284), "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*)(S18574C8*), 0, "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*)(S18574C8*), ABISELECT(296,244), "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*)(S18574C8*), ABISELECT(760,644), "S18574C13");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C8*), 0, "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(87664,72044), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(87960,72288), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(88424,72688), "S18574C13");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*)(S18574C8*), ABISELECT(87664,72044), "S18574C13");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(87664,72044), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C10*), ABISELECT(87664,72044), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*), ABISELECT(87664,72044), "S18574C13");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C13");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C13");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(4592,3776), "S18574C13");
    check_base_class_offset(lv, (S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C13");
    check_base_class_offset(lv, (S18574C8*), 0, "S18574C13");
    check_base_class_offset(lv, (S18574C14*), ABISELECT(26288,21584), "S18574C13");
    /*is_ambiguous_... S18574C15::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C15*), ABISELECT(91784,75440), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*), ABISELECT(92256,75848), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C10*), ABISELECT(92256,75848), "S18574C13");
    /*is_ambiguous_... S18574C13::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C11*)(S18574C10*), ABISELECT(92720,76228), "S18574C13");
    check_base_class_offset(lv, (S18574C10*)(S18574C15*), ABISELECT(92256,75848), "S18574C13");
    check_base_class_offset(lv, (S18574C15*), ABISELECT(91784,75440), "S18574C13");
    check_base_class_offset(lv, (S18574C15*)(S18574C16*), ABISELECT(91784,75440), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C16*), ABISELECT(103264,84884), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C16*), ABISELECT(103408,85008), "S18574C13");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C16*), ABISELECT(103408,85008), "S18574C13");
    check_base_class_offset(lv, (S18574C7*)(S18574C12*)(S18574C16*), ABISELECT(103872,85388), "S18574C13");
    check_base_class_offset(lv, (S18574C12*)(S18574C16*), ABISELECT(103872,85388), "S18574C13");
    check_base_class_offset(lv, (S18574C16*), ABISELECT(103264,84884), "S18574C13");
    check_field_offset(lv, s18574c13f0, ABISELECT(37456,30752), "S18574C13.s18574c13f0");
    check_field_offset(lv, s18574c13f1, ABISELECT(54144,44496), "S18574C13.s18574c13f1");
    test_class_info(&lv, &cd_S18574C13);
    dp->~S18574C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C13(Test_S18574C13, "S18574C13", ABISELECT(106080,87204));

#else // __cplusplus

extern void _ZN9S18574C13C1Ev();
extern void _ZN9S18574C13D1Ev();
Name_Map name_map_S18574C13[] = {
  NSPAIR(_ZN9S18574C13C1Ev),
  NSPAIR(_ZN9S18574C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C8;
extern VTBL_ENTRY _ZTI8S18574C8[];
extern  VTBL_ENTRY _ZTV8S18574C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C8[];
extern Class_Descriptor cd_S18574C14;
extern VTBL_ENTRY _ZTI9S18574C14[];
extern  VTBL_ENTRY _ZTV9S18574C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C14[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C15;
extern VTBL_ENTRY _ZTI9S18574C15[];
extern  VTBL_ENTRY _ZTV9S18574C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C15[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C12;
extern VTBL_ENTRY _ZTI9S18574C12[];
extern  VTBL_ENTRY _ZTV9S18574C12[];
extern Class_Descriptor cd_S18574C16;
extern VTBL_ENTRY _ZTI9S18574C16[];
extern  VTBL_ENTRY _ZTV9S18574C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C16[];
static Base_Class bases_S18574C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C5,    ABISELECT(86112,70760), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(86576,71160), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(86720,71284), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C6,    ABISELECT(87184,71664), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(87360,71800), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(86720,71284), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S18574C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(296,244), //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
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(760,644), //bcp->offset
    23, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S18574C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(87664,72044), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(87960,72288), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(88424,72688), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(87664,72044), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(4592,3776), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(4128,3396), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C8,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C14,    ABISELECT(26288,21584), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C5,    ABISELECT(91784,75440), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(92256,75848), //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(92256,75848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(92720,76228), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(92256,75848), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S18574C15,    ABISELECT(91784,75440), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(103264,84884), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(103408,85008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(103408,85008), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(103872,85388), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S18574C12,    ABISELECT(103872,85388), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18574C16,    ABISELECT(103264,84884), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C13[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN9S18574C13D1Ev();
extern void _ZN9S18574C13D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN9S18574C133v14Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18574C13D1Ev,_ZThn3396_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18574C13D0Ev,_ZThn3396_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn4592_N9S18574C13D1Ev,_ZThn3776_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18574C13D0Ev,_ZThn3776_N9S18574C13D0Ev)();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn87664_N9S18574C13D1Ev,_ZThn72044_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn87664_N9S18574C13D0Ev,_ZThn72044_N9S18574C13D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn91784_N9S18574C13D1Ev,_ZThn75440_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn91784_N9S18574C13D0Ev,_ZThn75440_N9S18574C13D0Ev)() __attribute__((weak));
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn92256_N9S18574C13D1Ev,_ZThn75848_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn92256_N9S18574C13D0Ev,_ZThn75848_N9S18574C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18574C13D1Ev,_ZTvn380_n40_N9S18574C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C13D0Ev,_ZTvn380_n40_N9S18574C13D0Ev)();
extern void _ZN8S18574C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn103264_N9S18574C13D1Ev,_ZThn84884_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn103264_N9S18574C13D0Ev,_ZThn84884_N9S18574C13D0Ev)() __attribute__((weak));
extern void _ZN9S18574C163v13Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18574C13D1Ev,_ZTvn504_n44_N9S18574C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18574C13D0Ev,_ZTvn504_n44_N9S18574C13D0Ev)();
extern void _ZN9S18574C123v12Ev();
static  VTBL_ENTRY vtc_S18574C13[] = {
  ABISELECT(103264,84884),
  ABISELECT(92256,75848),
  ABISELECT(91784,75440),
  ABISELECT(87664,72044),
  ABISELECT(87360,71800),
  ABISELECT(87184,71664),
  ABISELECT(86112,70760),
  ABISELECT(86720,71284),
  ABISELECT(86576,71160),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18574C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18574C133v14Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18574C13D1Ev,_ZThn3396_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18574C13D0Ev,_ZThn3396_N9S18574C13D0Ev),
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18574C13D1Ev,_ZThn3776_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18574C13D0Ev,_ZThn3776_N9S18574C13D0Ev),
  ABISELECT(60288,49576),
  ABISELECT(60896,50080),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-70760),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  0,
  ABISELECT(-86576,-71160),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  ABISELECT(-86720,-71284),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-608,-504),
  ABISELECT(-87184,-71664),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  0,
  ABISELECT(-87360,-71800),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-87664,-72044),
  0,
  ABISELECT(-87664,-72044),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-87960,-72288),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-88424,-72688),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-91784,-75440),
  0,
  0,
  0,
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(-91784,-75440),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev),
  ABISELECT(-92256,-75848),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(-92256,-75848),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev),
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-92720,-76228),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C13D1Ev,_ZTvn380_n40_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C13D0Ev,_ZTvn380_n40_N9S18574C13D0Ev),
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-103264,-84884),
  0,
  ABISELECT(-17152,-14124),
  ABISELECT(-16080,-13220),
  ABISELECT(-16688,-13724),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  ABISELECT(-103264,-84884),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  ABISELECT(-103408,-85008),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-103872,-85388),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18574C13D1Ev,_ZTvn504_n44_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18574C13D0Ev,_ZTvn504_n44_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C123v12Ev,
};
extern VTBL_ENTRY _ZTV9S18574C13[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C8D1Ev();
extern void _ZN8S18574C8D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C8__9S18574C13[] = {
  ABISELECT(87664,72044),
  ABISELECT(87360,71800),
  ABISELECT(87184,71664),
  ABISELECT(86112,70760),
  ABISELECT(86720,71284),
  ABISELECT(86576,71160),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C108S18574C8__A1__9S18574C13[] = {
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-67364),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-83056,-68268),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__9S18574C13[] = {
  0,
  ABISELECT(-82448,-67764),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__9S18574C13[] = {
  0,
  ABISELECT(-83232,-68404),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-82768,-68024),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn83072_N9S18574C11D1Ev,_ZThn68268_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn83072_N9S18574C11D0Ev,_ZThn68268_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-83072,-68268),
  0,
  ABISELECT(-83072,-68268),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-83368,-68512),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-83832,-68912),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-81984,-67384),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-82592,-67888),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn83536_N9S18574C10D1Ev,_ZThn68648_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn83536_N9S18574C10D0Ev,_ZThn68648_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-83536,-68648),
  0,
  ABISELECT(-83536,-68648),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-83832,-68892),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-84296,-69292),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C108S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-82448,-67764),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-83056,-68268),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C108S18574C8__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-67364),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C108S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-83232,-68404),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C108S18574C8__9S18574C13[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-86576,-71160),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C8__9S18574C13[] = {
  0,
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  ABISELECT(-86720,-71284),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C8__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-70760),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C8__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-87184,-71664),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C8__9S18574C13[] = {
  0,
  ABISELECT(-87360,-71800),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__8S18574C8__9S18574C13[] = {
  ABISELECT(83536,68648),
  ABISELECT(83232,68404),
  ABISELECT(82448,67764),
  ABISELECT(83056,68268),
  ABISELECT(81984,67364),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn87664_N8S18574C8D1Ev,_ZThn72044_N8S18574C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn87664_N8S18574C8D0Ev,_ZThn72044_N8S18574C8D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__A1__8S18574C8__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-87664,-72044),
  0,
  ABISELECT(-87664,-72044),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A2__8S18574C8__9S18574C13[] = {
  ABISELECT(-87960,-72288),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A3__8S18574C8__9S18574C13[] = {
  ABISELECT(-88424,-72688),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__8S18574C8__9S18574C13[] = {
  ABISELECT(82592,67888),
  ABISELECT(81984,67384),
  ABISELECT(83072,68268),
  ABISELECT(82768,68024),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18574C14__9S18574C13[] = {
  ABISELECT(60288,49576),
  ABISELECT(60896,50080),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C14__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-60896,-50080),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__9S18574C14__9S18574C13[] = {
  0,
  ABISELECT(-60288,-49576),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__9S18574C13[] = {
  ABISELECT(640,516),
  ABISELECT(-144,-124),
  ABISELECT(464,380),
  ABISELECT(-608,-524),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(608,524),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__9S18574C13[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__9S18574C13[] = {
  0,
  ABISELECT(-640,-516),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C13[] = {
  ABISELECT(-608,-504),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C13[] = {
  0,
  ABISELECT(608,504),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN9S18574C15D1Ev();
extern void _ZN9S18574C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C15__9S18574C13[] = {
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C15__9S18574C13[] = {
  0,
  ABISELECT(4424,3640),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C15__9S18574C13[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C15__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4120,3396),
  0,
  ABISELECT(4120,3396),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C15__9S18574C13[] = {
  ABISELECT(3824,3152),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C15__9S18574C13[] = {
  ABISELECT(3360,2752),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C15__9S18574C13[] = {
  0,
  ABISELECT(5208,4280),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C15__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(4600,3776),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A2__9S18574C15__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(5672,4680),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C15__9S18574C13[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C10__A1__9S18574C13[] = {
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C10__A2__9S18574C13[] = {
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C10__A2__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,5088),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C10__A2__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(5072,4184),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A2__9S18574C13[] = {
  0,
  ABISELECT(5680,4688),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C10__A2__9S18574C13[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__A1__9S18574C13[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C10__A1__9S18574C13[] = {
  0,
  ABISELECT(5360,4428),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C10__A1__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(5056,4184),
  0,
  ABISELECT(5056,4184),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__A1__9S18574C13[] = {
  ABISELECT(4760,3940),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__A1__9S18574C13[] = {
  ABISELECT(4296,3540),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C10__A1__9S18574C13[] = {
  0,
  ABISELECT(6144,5068),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C10__A1__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(5536,4564),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C10__A1__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4592,3804),
  0,
  ABISELECT(4592,3804),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C10__A1__9S18574C13[] = {
  ABISELECT(4296,3560),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C10__A1__9S18574C13[] = {
  ABISELECT(3832,3160),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C10__A1__9S18574C13[] = {
  0,
  ABISELECT(5680,4688),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10__A1__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(5072,4184),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C10__A1__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,5088),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C10__A1__9S18574C13[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10__A1__9S18574C13[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C16D1Ev();
extern void _ZN9S18574C16D0Ev();
extern void _ZN9S18574C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C16__9S18574C13[] = {
  ABISELECT(-17152,-14124),
  ABISELECT(-16080,-13220),
  ABISELECT(-16688,-13724),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C16__A3__9S18574C13[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C16__A3__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(17296,14248),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C16__A3__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(16224,13344),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C16__A3__9S18574C13[] = {
  0,
  ABISELECT(16832,13848),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C16__A3__9S18574C13[] = {
  0,
  ABISELECT(16048,13208),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C16__9S18574C13[] = {
  0,
  ABISELECT(15904,13084),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C15__9S18574C16__9S18574C13[] = {
  ABISELECT(11480,9444),
  0,
  0,
  0,
  ABISELECT(-5672,-4680),
  ABISELECT(-4600,-3776),
  ABISELECT(-5208,-4280),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(11480,9444),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C16__9S18574C13[] = {
  ABISELECT(11008,9036),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5680,-4688),
  ABISELECT(-5072,-4184),
  ABISELECT(-6144,-5088),
  ABISELECT(11008,9036),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C16__9S18574C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(15600,12840),
  0,
  ABISELECT(15600,12840),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C16__9S18574C13[] = {
  ABISELECT(15304,12596),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A1__9S18574C16__9S18574C13[] = {
  ABISELECT(14840,12196),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A2__9S18574C16__9S18574C13[] = {
  0,
  ABISELECT(16688,13724),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C16__9S18574C13[] = {
  ABISELECT(-608,-504),
  ABISELECT(16080,13220),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A2__9S18574C16__9S18574C13[] = {
  0,
  0,
  0,
  ABISELECT(17152,14124),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C16__9S18574C13[] = {
  ABISELECT(-5536,-4564),
  ABISELECT(-6144,-5068),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(10544,8656),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__A1__9S18574C16__9S18574C13[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16832,-13848),
  ABISELECT(-16224,-13344),
  ABISELECT(-17296,-14248),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C13[] = {
  {&(_ZTV9S18574C13[11]),  11,167},
  {&(_tg__ZTV8S18574C8__9S18574C13[8]),  8,14},
  {&(_tg__ZTV9S18574C108S18574C8__9S18574C13[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C108S18574C8__A1__9S18574C13[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C108S18574C8__9S18574C13[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C108S18574C8__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C108S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C108S18574C8__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C108S18574C8__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C108S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C108S18574C8__9S18574C13[6]),  6,8},
  {&(_tg__ZTV8S18574C4__8S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C3__8S18574C8__9S18574C13[7]),  7,8},
  {&(_tg__ZTV8S18574C5__8S18574C8__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C8__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C7__8S18574C8__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C10__8S18574C8__9S18574C13[7]),  7,11},
  {&(_tg__ZTV8S18574C9__A1__8S18574C8__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A2__8S18574C8__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A3__8S18574C8__9S18574C13[2]),  2,3},
  {&(_tg__ZTV9S18574C119S18574C10__8S18574C8__9S18574C13[6]),  6,8},
  {&(_tg__ZTV9S18574C14__9S18574C13[4]),  4,4},
  {&(_tg__ZTV8S18574C6__9S18574C14__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__9S18574C14__9S18574C13[3]),  3,4},
  {&(_ZTV9S18574C13[54]),  54,167},
  {&(_ZTV9S18574C13[60]),  60,167},
  {&(_ZTV9S18574C13[68]),  68,167},
  {&(_ZTV9S18574C13[72]),  72,167},
  {&(_ZTV9S18574C13[75]),  75,167},
  {&(_ZTV9S18574C13[33]),  33,167},
  {&(_ZTV9S18574C13[85]),  85,167},
  {&(_ZTV9S18574C13[91]),  91,167},
  {&(_ZTV9S18574C13[96]),  96,167},
  {&(_ZTV9S18574C13[43]),  43,167},
  {&(_ZTV9S18574C13[49]),  49,167},
  {&(_ZTV9S18574C13[109]),  109,167},
  {&(_ZTV9S18574C13[124]),  124,167},
  {&(_ZTV9S18574C13[134]),  134,167},
  {&(_ZTV9S18574C13[150]),  150,167},
  {&(_ZTV9S18574C13[160]),  160,167},
  {&(_ZTV9S18574C13[163]),  163,167},
  {&(_tg__ZTV8S18574C3__9S18574C13[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C15__9S18574C13[8]),  8,13},
  {&(_tg__ZTV8S18574C7__9S18574C15__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C10__9S18574C15__9S18574C13[10]),  10,14},
  {&(_tg__ZTV8S18574C9__9S18574C15__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C15__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C15__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C15__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C15__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A2__9S18574C15__9S18574C13[5]),  5,8},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C15__9S18574C13[6]),  6,8},
  {&(_tg__ZTV9S18574C10__A1__9S18574C13[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C10__A2__9S18574C13[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C10__A2__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C10__A2__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A2__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C10__A2__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C10__A1__9S18574C13[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C10__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C10__A1__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__A1__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__A1__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C10__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C10__A1__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C10__A1__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C10__A1__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C10__A1__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C10__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C10__A1__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C10__A1__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C10__A1__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10__A1__9S18574C13[6]),  6,8},
  {&(_tg__ZTV9S18574C16__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C39S18574C16__A3__9S18574C13[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C16__A3__9S18574C13[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C16__A3__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C16__A3__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C16__A3__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C7__9S18574C16__9S18574C13[3]),  3,4},
  {&(_tg__ZTV9S18574C15__9S18574C16__9S18574C13[12]),  12,17},
  {&(_tg__ZTV9S18574C10__9S18574C16__9S18574C13[10]),  10,14},
  {&(_tg__ZTV8S18574C9__9S18574C16__9S18574C13[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C16__9S18574C13[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A1__9S18574C16__9S18574C13[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A2__9S18574C16__9S18574C13[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C16__9S18574C13[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A2__9S18574C16__9S18574C13[5]),  5,8},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C16__9S18574C13[6]),  6,8},
  {&(_tg__ZTV8S18574C3__A1__9S18574C16__9S18574C13[6]),  6,7},
};
extern VTBL_ENTRY _ZTI9S18574C13[];
extern  VTBL_ENTRY _ZTV9S18574C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C13[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18574C8D0Ev,_ZThn72044_N8S18574C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18574C8D1Ev,_ZThn72044_N8S18574C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18574C10D0Ev,_ZThn68648_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18574C10D1Ev,_ZThn68648_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18574C11D0Ev,_ZThn68268_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18574C11D1Ev,_ZThn68268_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18574C13D0Ev,_ZThn84884_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18574C13D1Ev,_ZThn84884_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18574C13D0Ev,_ZThn75848_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18574C13D1Ev,_ZThn75848_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18574C13D0Ev,_ZThn75440_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18574C13D1Ev,_ZThn75440_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18574C13D0Ev,_ZThn72044_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18574C13D1Ev,_ZThn72044_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C13 = {  "S18574C13", // class name
  bases_S18574C13, 32,
  &(vtc_S18574C13[0]), // expected_vtbl_contents
  &(vtt_S18574C13[0]), // expected_vtt_contents
  ABISELECT(106080,87204), // object size
  NSPAIRA(_ZTI9S18574C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18574C13),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C13),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C17  : S18574C3 , S18574C11 {
  int s18574c17f0:13;
  __tsi64 s18574c17f1;
  int s18574c17f2;
  void *s18574c17f3[2];
  __tsi64 s18574c17f4;
  ::S18574C5 s18574c17f5;
  virtual  ~S18574C17(); // _ZN9S18574C17D2Ev
  virtual void  v15(); // _ZN9S18574C173v15Ev
  virtual void  v16(); // _ZN9S18574C173v16Ev
  S18574C17(); // tgen
};
//SIG(-1 S18574C17) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v4 v5 v6 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC6 VBC8{ BC6 BC4 BC3 vd v8 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC8 Fc:7 FC9{ BC6 vd v9 FC5 Fi Fp Fi}} vd v1 v2 Fi:13 FL Fi Fp[2] FL FC4}


 S18574C17 ::~S18574C17(){ note_dtor("S18574C17", this);}
void  S18574C17 ::v15(){vfunc_called(this, "_ZN9S18574C173v15Ev");}
void  S18574C17 ::v16(){vfunc_called(this, "_ZN9S18574C173v16Ev");}
S18574C17 ::S18574C17(){ note_ctor("S18574C17", this);} // tgen

static void Test_S18574C17()
{
  extern Class_Descriptor cd_S18574C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2591)];
    init_test(&cd_S18574C17, buf);
    S18574C17 *dp, &lv = *(dp=new (buf) S18574C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,10360), "sizeof(S18574C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C17)");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), 0, "S18574C17");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(7376,6060), "S18574C17");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(8008,6596), "S18574C17");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*), ABISELECT(8008,6596), "S18574C17");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(7840,6460), "S18574C17");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*), ABISELECT(7840,6460), "S18574C17");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(8160,6720), "S18574C17");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*), ABISELECT(8160,6720), "S18574C17");
    check_base_class_offset(lv, (S18574C3*), 0, "S18574C17");
    check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(8464,6964), "S18574C17");
    check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(8760,7208), "S18574C17");
    check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(9224,7608), "S18574C17");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*), ABISELECT(8464,6964), "S18574C17");
    check_base_class_offset(lv, (S18574C11*), ABISELECT(464,380), "S18574C17");
    set_bf_and_test(lv, s18574c17f0, ABISELECT(6864,5628), 0, 13, 1, "S18574C17");
    set_bf_and_test(lv, s18574c17f0, ABISELECT(6864,5628), 0, 13, hide_sll(1LL<<12), "S18574C17");
    check_field_offset(lv, s18574c17f1, ABISELECT(6872,5632), "S18574C17.s18574c17f1");
    check_field_offset(lv, s18574c17f2, ABISELECT(6880,5640), "S18574C17.s18574c17f2");
    check_field_offset(lv, s18574c17f3, ABISELECT(6888,5644), "S18574C17.s18574c17f3");
    check_field_offset(lv, s18574c17f4, ABISELECT(6904,5652), "S18574C17.s18574c17f4");
    check_field_offset(lv, s18574c17f5, ABISELECT(6912,5660), "S18574C17.s18574c17f5");
    test_class_info(&lv, &cd_S18574C17);
    dp->~S18574C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C17(Test_S18574C17, "S18574C17", ABISELECT(12592,10360));

#else // __cplusplus

extern void _ZN9S18574C17C1Ev();
extern void _ZN9S18574C17D2Ev();
Name_Map name_map_S18574C17[] = {
  NSPAIR(_ZN9S18574C17C1Ev),
  NSPAIR(_ZN9S18574C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
static Base_Class bases_S18574C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(7376,6060), //bcp->offset
    20, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(8008,6596), //bcp->offset
    31, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(7840,6460), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(8160,6720), //bcp->offset
    35, //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
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S18574C7,    ABISELECT(8464,6964), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(8760,7208), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(9224,7608), //bcp->offset
    57, //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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(8464,6964), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18574C11,    ABISELECT(464,380), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C17[];
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C17D1Ev();
extern void _ZN9S18574C17D0Ev();
extern void _ZN9S18574C173v15Ev();
extern void _ZN9S18574C173v16Ev();
extern void ABISELECT(_ZThn464_N9S18574C17D1Ev,_ZThn380_N9S18574C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C17D0Ev,_ZThn380_N9S18574C17D0Ev)();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C17D1Ev,_ZTv0_n16_N9S18574C17D1Ev)();
extern void ABISELECT(_ZThn8464_N9S18574C17D1Ev,_ZThn6964_N9S18574C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C17D0Ev,_ZTv0_n16_N9S18574C17D0Ev)();
extern void ABISELECT(_ZThn8464_N9S18574C17D0Ev,_ZThn6964_N9S18574C17D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C17[] = {
  ABISELECT(8464,6964),
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18574C173v16Ev,
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C17D1Ev,_ZThn380_N9S18574C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C17D0Ev,_ZThn380_N9S18574C17D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8464,-6964),
  0,
  ABISELECT(-8464,-6964),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C17D1Ev,_ZTv0_n16_N9S18574C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C17D0Ev,_ZTv0_n16_N9S18574C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-8760,-7208),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-9224,-7608),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18574C17[];
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__9S18574C17[] = {
  ABISELECT(8160,6720),
  ABISELECT(8008,6596),
  ABISELECT(7840,6460),
  ABISELECT(7376,6060),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__9S18574C17[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-6060),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__9S18574C17[] = {
  ABISELECT(168,136),
  ABISELECT(-7840,-6460),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__9S18574C17[] = {
  0,
  ABISELECT(-8008,-6596),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__9S18574C17[] = {
  0,
  ABISELECT(-8160,-6720),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C17[] = {
  ABISELECT(7376,6080),
  ABISELECT(7544,6216),
  ABISELECT(8000,6584),
  ABISELECT(7696,6340),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C11__9S18574C17[] = {
  0,
  ABISELECT(-7696,-6340),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn8000_N9S18574C11D1Ev,_ZThn6584_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn8000_N9S18574C11D0Ev,_ZThn6584_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C11__9S18574C17[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-8000,-6584),
  0,
  ABISELECT(-8000,-6584),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C11__9S18574C17[] = {
  ABISELECT(-8296,-6828),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C11__9S18574C17[] = {
  ABISELECT(-8760,-7228),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C11__9S18574C17[] = {
  0,
  ABISELECT(-7544,-6216),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C11__9S18574C17[] = {
  ABISELECT(168,136),
  ABISELECT(-7376,-6080),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C17[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C17[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C17[] = {
  {&(_ZTV9S18574C17[7]),  7,60},
  {&(_tg__ZTV8S18574C3__9S18574C17[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__9S18574C17[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__9S18574C17[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__9S18574C17[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__9S18574C17[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C17[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C11__9S18574C17[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C11__9S18574C17[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C11__9S18574C17[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C11__9S18574C17[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C11__9S18574C17[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C11__9S18574C17[3]),  3,3},
  {&(_ZTV9S18574C17[25]),  25,60},
  {&(_ZTV9S18574C17[31]),  31,60},
  {&(_ZTV9S18574C17[34]),  34,60},
  {&(_ZTV9S18574C17[38]),  38,60},
  {&(_ZTV9S18574C17[18]),  18,60},
  {&(_ZTV9S18574C17[48]),  48,60},
  {&(_ZTV9S18574C17[54]),  54,60},
  {&(_ZTV9S18574C17[59]),  59,60},
  {&(_tg__ZTV8S18574C6__9S18574C17[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C17[];
extern  VTBL_ENTRY _ZTV9S18574C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C17[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18574C11D0Ev,_ZThn6584_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18574C11D1Ev,_ZThn6584_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C17D0Ev,_ZTv0_n16_N9S18574C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18574C17D0Ev,_ZThn6964_N9S18574C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C17D1Ev,_ZTv0_n16_N9S18574C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18574C17D1Ev,_ZThn6964_N9S18574C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C17 = {  "S18574C17", // class name
  bases_S18574C17, 11,
  &(vtc_S18574C17[0]), // expected_vtbl_contents
  &(vtt_S18574C17[0]), // expected_vtt_contents
  ABISELECT(12592,10360), // object size
  NSPAIRA(_ZTI9S18574C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S18574C17),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C17),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S18574C19_nt  {
  char s18574c19f0:8;
  void *s18574c19f1;
  short s18574c19f2;
  long double s18574c19f3;
  void *s18574c19f4;
  void *s18574c19f5;
  long s18574c19f6[5];
  void  mf18574c19(); // _ZN12S18574C19_nt10mf18574c19Ev
};
//SIG(1 S18574C19_nt) U1{ m Fc:8 Fp Fs FD Fp Fp Fl[5]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18574C18  : S18574C5 , virtual S18574C8 , S18574C4 {
  int s18574c18f0;
  ::S18574C19_nt s18574c18f1;
  int s18574c18f2;
  ::S18574C8 s18574c18f3;
  char s18574c18f4[6];
  __tsi64 s18574c18f5;
  int s18574c18f6;
  int  :0;
  virtual  ~S18574C18(); // _ZN9S18574C18D2Ev
  S18574C18(); // tgen
};
//SIG(-1 S18574C18) C1{ BC2{ v1 v2 v3 Fi[2] FL[2] FC3{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]} VBC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 Fi:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v6 FL[2] Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 FL[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs Fi:8} BC3 vd Fi FU12{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC4 Fc[6] FL Fi Fi:0}


 S18574C18 ::~S18574C18(){ note_dtor("S18574C18", this);}
S18574C18 ::S18574C18(){ note_ctor("S18574C18", this);} // tgen

static void Test_S18574C18()
{
  extern Class_Descriptor cd_S18574C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4042,13276)];
    init_test(&cd_S18574C18, buf);
    S18574C18 *dp, &lv = *(dp=new (buf) S18574C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64656,53100), "sizeof(S18574C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C18)");
    /*is_ambiguous_... S18574C18::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*), 0, "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C8*), ABISELECT(58968,48420), "S18574C18");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(58968,48420), "S18574C18");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*)(S18574C8*), ABISELECT(58968,48420), "S18574C18");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(58968,48420), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), ABISELECT(59120,48544), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(59584,48924), "S18574C18");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(59584,48924), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(60048,49324), "S18574C18");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*)(S18574C8*), ABISELECT(60048,49324), "S18574C18");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(60048,49324), "S18574C18");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(60048,49324), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(60224,49460), "S18574C18");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(60224,49460), "S18574C18");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(60224,49460), "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C8*), ABISELECT(59120,48544), "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*)(S18574C8*), ABISELECT(32688,26836), "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*)(S18574C8*), ABISELECT(32984,27080), "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*)(S18574C8*), ABISELECT(33448,27480), "S18574C18");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C8*), ABISELECT(32688,26836), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(60528,49704), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(60824,49948), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(61288,50348), "S18574C18");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*)(S18574C8*), ABISELECT(60528,49704), "S18574C18");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(60528,49704), "S18574C18");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(36816,30232), "S18574C18");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(36816,30232), "S18574C18");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(37280,30612), "S18574C18");
    check_base_class_offset(lv, (S18574C10*)(S18574C8*), ABISELECT(36816,30232), "S18574C18");
    check_base_class_offset(lv, (S18574C8*), ABISELECT(32688,26836), "S18574C18");
    /*is_ambiguous_... S18574C18::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*), ABISELECT(464,400), "S18574C18");
    check_field_offset(lv, s18574c18f0, ABISELECT(608,524), "S18574C18.s18574c18f0");
    check_field_offset(lv, s18574c18f1, ABISELECT(624,528), "S18574C18.s18574c18f1");
    check_field_offset(lv, s18574c18f2, ABISELECT(672,548), "S18574C18.s18574c18f2");
    check_field_offset(lv, s18574c18f3, ABISELECT(688,552), "S18574C18.s18574c18f3");
    check_field_offset(lv, s18574c18f4, ABISELECT(32656,26816), "S18574C18.s18574c18f4");
    check_field_offset(lv, s18574c18f5, ABISELECT(32664,26824), "S18574C18.s18574c18f5");
    check_field_offset(lv, s18574c18f6, ABISELECT(32672,26832), "S18574C18.s18574c18f6");
    test_class_info(&lv, &cd_S18574C18);
    dp->~S18574C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C18(Test_S18574C18, "S18574C18", ABISELECT(64656,53100));

#else // __cplusplus

extern void _ZN9S18574C18C1Ev();
extern void _ZN9S18574C18D2Ev();
Name_Map name_map_S18574C18[] = {
  NSPAIR(_ZN9S18574C18C1Ev),
  NSPAIR(_ZN9S18574C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C8;
extern VTBL_ENTRY _ZTI8S18574C8[];
extern  VTBL_ENTRY _ZTV8S18574C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C8[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
static Base_Class bases_S18574C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C4,    ABISELECT(58968,48420), //bcp->offset
    68, //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
    4, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(59120,48544), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(59584,48924), //bcp->offset
    80, //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(60048,49324), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(60224,49460), //bcp->offset
    91, //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
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(59120,48544), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(32688,26836), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(32984,27080), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(33448,27480), //bcp->offset
    46, //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
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(32688,26836), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(60528,49704), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(60824,49948), //bcp->offset
    108, //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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(61288,50348), //bcp->offset
    113, //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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(60528,49704), //bcp->offset
    95, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(36816,30232), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(36816,30232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(37280,30612), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(36816,30232), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18574C8,    ABISELECT(32688,26836), //bcp->offset
    17, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C4,    ABISELECT(464,400), //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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18574C18[];
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN9S18574C18D1Ev();
extern void _ZN9S18574C18D0Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C18D1Ev,_ZTv0_n40_N9S18574C18D1Ev)();
extern void ABISELECT(_ZThn32688_N9S18574C18D1Ev,_ZThn26836_N9S18574C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C18D0Ev,_ZTv0_n40_N9S18574C18D0Ev)();
extern void ABISELECT(_ZThn32688_N9S18574C18D0Ev,_ZThn26836_N9S18574C18D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTvn4128_n80_N9S18574C18D1Ev,_ZTvn3396_n40_N9S18574C18D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N9S18574C18D0Ev,_ZTvn3396_n40_N9S18574C18D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18574C18D1Ev,_ZTvn3776_n40_N9S18574C18D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18574C18D0Ev,_ZTvn3776_n40_N9S18574C18D0Ev)();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C18D1Ev,_ZTv0_n16_N9S18574C18D1Ev)();
extern void ABISELECT(_ZThn60528_N9S18574C18D1Ev,_ZThn49704_N9S18574C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C18D0Ev,_ZTv0_n16_N9S18574C18D0Ev)();
extern void ABISELECT(_ZThn60528_N9S18574C18D0Ev,_ZThn49704_N9S18574C18D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY vtc_S18574C18[] = {
  ABISELECT(60528,49704),
  ABISELECT(60224,49460),
  ABISELECT(60048,49324),
  ABISELECT(59584,48924),
  ABISELECT(59120,48544),
  ABISELECT(58968,48420),
  ABISELECT(32688,26836),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18574C18D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C18D0Ev,
  ABISELECT(-464,-400),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(4128,3396),
  0,
  0,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-32688,-26836),
  0,
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  ABISELECT(-32688,-26836),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C18D1Ev,_ZTv0_n40_N9S18574C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C18D0Ev,_ZTv0_n40_N9S18574C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  ABISELECT(-32984,-27080),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-33448,-27480),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-36816,-30232),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18574C18D1Ev,_ZTvn3396_n40_N9S18574C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18574C18D0Ev,_ZTvn3396_n40_N9S18574C18D0Ev),
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-37280,-30612),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18574C18D1Ev,_ZTvn3776_n40_N9S18574C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18574C18D0Ev,_ZTvn3776_n40_N9S18574C18D0Ev),
  0,
  ABISELECT(-58968,-48420),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-59120,-48544),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-59584,-48924),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-1080,-904),
  ABISELECT(-60048,-49324),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  0,
  ABISELECT(-60224,-49460),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-60528,-49704),
  0,
  ABISELECT(-60528,-49704),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C18D1Ev,_ZTv0_n16_N9S18574C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C18D0Ev,_ZTv0_n16_N9S18574C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-60824,-49948),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-61288,-50348),
  (VTBL_ENTRY)&(_ZTI9S18574C18[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18574C18[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C8D1Ev();
extern void _ZN8S18574C8D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C8__9S18574C18[] = {
  ABISELECT(27840,22868),
  ABISELECT(27536,22624),
  ABISELECT(27360,22488),
  ABISELECT(26896,22088),
  ABISELECT(26432,21708),
  ABISELECT(26280,21584),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C108S18574C8__A1__9S18574C18[] = {
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__9S18574C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__9S18574C18[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__9S18574C18[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__9S18574C18[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-22944,-18848),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18574C11D1Ev,_ZThn19092_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18574C11D0Ev,_ZThn19092_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23248,-19092),
  0,
  ABISELECT(-23248,-19092),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-23544,-19336),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-24008,-19736),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-21688,-17808),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-22768,-18712),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18574C10D1Ev,_ZThn19472_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18574C10D0Ev,_ZThn19472_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23712,-19472),
  0,
  ABISELECT(-23712,-19472),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-24008,-19716),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-24472,-20116),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C108S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-22152,-18188),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-23232,-19092),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C108S18574C8__9S18574C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-18692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C108S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-23408,-19228),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C108S18574C8__9S18574C18[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-26280,-21584),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C8__9S18574C18[] = {
  0,
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-26432,-21708),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C8__9S18574C18[] = {
  0,
  0,
  0,
  ABISELECT(-26896,-22088),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C8__9S18574C18[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-27360,-22488),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C8__9S18574C18[] = {
  0,
  ABISELECT(-27536,-22624),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__8S18574C8__9S18574C18[] = {
  ABISELECT(23712,19472),
  ABISELECT(23408,19228),
  ABISELECT(22152,18188),
  ABISELECT(23232,19092),
  ABISELECT(22768,18692),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18574C8D1Ev,_ZThn22868_N8S18574C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18574C8D0Ev,_ZThn22868_N8S18574C8D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__A1__8S18574C8__9S18574C18[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-27840,-22868),
  0,
  ABISELECT(-27840,-22868),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A2__8S18574C8__9S18574C18[] = {
  ABISELECT(-28136,-23112),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A3__8S18574C8__9S18574C18[] = {
  ABISELECT(-28600,-23512),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__8S18574C8__9S18574C18[] = {
  ABISELECT(22768,18712),
  ABISELECT(21688,17808),
  ABISELECT(23248,19092),
  ABISELECT(22944,18848),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__9S18574C18[] = {
  ABISELECT(1104,916),
  ABISELECT(-152,-124),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__9S18574C18[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__9S18574C18[] = {
  ABISELECT(-1080,-904),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__9S18574C18[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__9S18574C18[] = {
  0,
  ABISELECT(-1104,-916),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C18[] = {
  ABISELECT(-1080,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__9S18574C18[] = {
  0,
  ABISELECT(1080,904),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C18[] = {
  {&(_ZTV9S18574C18[9]),  9,116},
  {&(_ZTV9S18574C18[35]),  35,116},
  {&(_ZTV9S18574C18[71]),  71,116},
  {&(_ZTV9S18574C18[79]),  79,116},
  {&(_ZTV9S18574C18[85]),  85,116},
  {&(_ZTV9S18574C18[91]),  91,116},
  {&(_ZTV9S18574C18[94]),  94,116},
  {&(_ZTV9S18574C18[43]),  43,116},
  {&(_ZTV9S18574C18[48]),  48,116},
  {&(_ZTV9S18574C18[56]),  56,116},
  {&(_ZTV9S18574C18[104]),  104,116},
  {&(_ZTV9S18574C18[110]),  110,116},
  {&(_ZTV9S18574C18[115]),  115,116},
  {&(_ZTV9S18574C18[66]),  66,116},
  {&(_tg__ZTV8S18574C8__9S18574C18[8]),  8,14},
  {&(_tg__ZTV9S18574C108S18574C8__9S18574C18[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C108S18574C8__A1__9S18574C18[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__9S18574C18[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__9S18574C18[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C108S18574C8__9S18574C18[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__9S18574C18[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C108S18574C8__9S18574C18[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__9S18574C18[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__9S18574C18[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C108S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C108S18574C8__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C108S18574C8__9S18574C18[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C108S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C108S18574C8__9S18574C18[6]),  6,8},
  {&(_tg__ZTV8S18574C4__8S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C3__8S18574C8__9S18574C18[7]),  7,8},
  {&(_tg__ZTV8S18574C5__8S18574C8__9S18574C18[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C8__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C7__8S18574C8__9S18574C18[3]),  3,4},
  {&(_tg__ZTV9S18574C10__8S18574C8__9S18574C18[7]),  7,11},
  {&(_tg__ZTV8S18574C9__A1__8S18574C8__9S18574C18[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A2__8S18574C8__9S18574C18[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A3__8S18574C8__9S18574C18[2]),  2,3},
  {&(_tg__ZTV9S18574C119S18574C10__8S18574C8__9S18574C18[6]),  6,8},
  {&(_tg__ZTV8S18574C3__9S18574C18[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__9S18574C18[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__9S18574C18[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C18[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__9S18574C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18574C18[];
extern  VTBL_ENTRY _ZTV9S18574C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C18[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18574C8D0Ev,_ZThn22868_N8S18574C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18574C8D1Ev,_ZThn22868_N8S18574C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18574C10D0Ev,_ZThn19472_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18574C10D1Ev,_ZThn19472_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18574C11D0Ev,_ZThn19092_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18574C11D1Ev,_ZThn19092_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C18D0Ev,_ZTv0_n16_N9S18574C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18574C18D0Ev,_ZThn49704_N9S18574C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C18D1Ev,_ZTv0_n16_N9S18574C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18574C18D1Ev,_ZThn49704_N9S18574C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C18D0Ev,_ZTv0_n40_N9S18574C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18574C18D0Ev,_ZThn26836_N9S18574C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C18D1Ev,_ZTv0_n40_N9S18574C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18574C18D1Ev,_ZThn26836_N9S18574C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C18 = {  "S18574C18", // class name
  bases_S18574C18, 21,
  &(vtc_S18574C18[0]), // expected_vtbl_contents
  &(vtt_S18574C18[0]), // expected_vtt_contents
  ABISELECT(64656,53100), // object size
  NSPAIRA(_ZTI9S18574C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18574C18),116, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18574C18),53, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C2  : virtual S18574C3 , S18574C8 , S18574C13 , virtual S18574C17 {
  ::S18574C18 s18574c2f0;
  int s18574c2f1;
  int s18574c2f2;
  int s18574c2f3;
  int s18574c2f4;
  int s18574c2f5;
  char s18574c2f6;
  int s18574c2f7;
  void *s18574c2f8;
  void *s18574c2f9;
  int s18574c2f10;
  ::S18574C6 s18574c2f11;
  ~S18574C2(); // tgen
  S18574C2(); // tgen
};
//SIG(-1 S18574C2) C1{ VBC2{ BC3{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC4{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC5{ VBC3 Fp FC3 Fi:3} VBC6{ v5 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC3 VBC2 BC8{ BC6 BC4 BC3 vd v6 FL[2] Fp[8] FC2 Fp Fi FC2 Fi} BC9{ VBC8 VBC3 VBC5 BC2 BC10{ VBC6 VBC8 VBC3 VBC5 FL:44 Fp Fi FC2 FL[2] Fi[3] FC8 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs Fi:8} BC12{ VBC4 BC7 BC13{ VBC5 FC10 Fi:6 Fi FL} VBC14{ VBC6 BC4 VBC9 Fc:8 Fi} VBC15{ BC3 VBC6 VBC14 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v12 FC14 FC7} VBC16{ BC2 BC10 vd v13 v14 Fi:13 FL Fi Fp[2] FL FC4} FC17{ BC4 VBC7 BC3 vd Fi FU18{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC7 Fc[6] FL Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC5}


S18574C2 ::~S18574C2(){ note_dtor("S18574C2", this);} // tgen
S18574C2 ::S18574C2(){ note_ctor("S18574C2", this);} // tgen

static void Test_S18574C2()
{
  extern Class_Descriptor cd_S18574C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12799,42063)];
    init_test(&cd_S18574C2, buf);
    S18574C2 *dp, &lv = *(dp=new (buf) S18574C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(204768,168248), "sizeof(S18574C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C2)");
    /*is_ambiguous_... S18574C2::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*), ABISELECT(177424,145744), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*), ABISELECT(177888,146124), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(177888,146124), "S18574C2");
    /*is_ambiguous_... S18574C13::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C13*), ABISELECT(177888,146124), "S18574C2");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(177888,146124), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C10*), ABISELECT(177888,146124), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C16*), ABISELECT(177888,146124), "S18574C2");
    check_base_class_offset(lv, (S18574C5*)(S18574C3*)(S18574C17*), ABISELECT(177888,146124), "S18574C2");
    check_base_class_offset(lv, (S18574C4*)(S18574C6*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C8*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*)(S18574C8*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C8*)(S18574C13*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C10::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C10*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C10*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C11::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C11*)(S18574C17*), ABISELECT(178520,146660), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C10*)(S18574C8*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C14*)(S18574C13*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C10*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C10*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C10*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C16*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C3*)(S18574C17*), ABISELECT(178352,146524), "S18574C2");
    check_base_class_offset(lv, (S18574C6*)(S18574C11*)(S18574C17*), ABISELECT(178352,146524), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(178672,146784), "S18574C2");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C15::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C15*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C10*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C10*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C16*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C16*), ABISELECT(178672,146784), "S18574C2");
    check_base_class_offset(lv, (S18574C7*)(S18574C3*)(S18574C17*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C11::S18574C7 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C11*)(S18574C17*), ABISELECT(178672,146784), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*), ABISELECT(177424,145744), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C8*), ABISELECT(177424,145744), "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C8*)(S18574C13*), ABISELECT(177424,145744), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*)(S18574C8*), 0, "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*)(S18574C8*), ABISELECT(296,244), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*)(S18574C8*), ABISELECT(760,644), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C8*), 0, "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*), ABISELECT(178976,147028), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*), ABISELECT(179272,147272), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*), ABISELECT(179736,147672), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C10*)(S18574C8*), ABISELECT(178976,147028), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(178976,147028), "S18574C2");
    check_base_class_offset(lv, (S18574C9*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178976,147028), "S18574C2");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(178976,147028), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C10*), ABISELECT(178976,147028), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C10*), ABISELECT(178976,147028), "S18574C2");
    check_base_class_offset(lv, (S18574C9*)(S18574C11*)(S18574C17*), ABISELECT(178976,147028), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C11*)(S18574C10*)(S18574C8*), ABISELECT(4592,3776), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C10*)(S18574C8*), ABISELECT(4128,3396), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C8 */ AMB_check_base_class_offset(lv, (S18574C8*), 0, "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C7*)(S18574C9*)(S18574C8*)(S18574C13*), ABISELECT(26288,21584), "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C9*)(S18574C8*)(S18574C13*), ABISELECT(26584,21828), "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C9*)(S18574C8*)(S18574C13*), ABISELECT(27048,22228), "S18574C2");
    /*is_ambiguous_... S18574C8::S18574C9 */ AMB_check_base_class_offset(lv, (S18574C9*)(S18574C8*)(S18574C13*), ABISELECT(26288,21584), "S18574C2");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(30416,24980), "S18574C2");
    check_base_class_offset(lv, (S18574C3*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(30416,24980), "S18574C2");
    check_base_class_offset(lv, (S18574C11*)(S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(30880,25360), "S18574C2");
    check_base_class_offset(lv, (S18574C10*)(S18574C8*)(S18574C13*), ABISELECT(30416,24980), "S18574C2");
    check_base_class_offset(lv, (S18574C8*)(S18574C13*), ABISELECT(26288,21584), "S18574C2");
    check_base_class_offset(lv, (S18574C14*)(S18574C13*), ABISELECT(52576,43168), "S18574C2");
    /*is_ambiguous_... S18574C15::S18574C5 */ AMB_check_base_class_offset(lv, (S18574C5*)(S18574C15*), ABISELECT(183096,150424), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C10*), ABISELECT(183568,150832), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C10*), ABISELECT(183568,150832), "S18574C2");
    /*is_ambiguous_... S18574C2::S18574C10 */ AMB_check_base_class_offset(lv, (S18574C11*)(S18574C10*), ABISELECT(184032,151212), "S18574C2");
    check_base_class_offset(lv, (S18574C10*)(S18574C15*), ABISELECT(183568,150832), "S18574C2");
    check_base_class_offset(lv, (S18574C15*)(S18574C13*), ABISELECT(183096,150424), "S18574C2");
    check_base_class_offset(lv, (S18574C15*)(S18574C16*), ABISELECT(183096,150424), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C16*), ABISELECT(194576,159868), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C16*), ABISELECT(194720,159992), "S18574C2");
    /*is_ambiguous_... S18574C16::S18574C3 */ AMB_check_base_class_offset(lv, (S18574C3*)(S18574C16*), ABISELECT(194720,159992), "S18574C2");
    check_base_class_offset(lv, (S18574C7*)(S18574C12*)(S18574C16*), ABISELECT(195184,160372), "S18574C2");
    check_base_class_offset(lv, (S18574C12*)(S18574C16*), ABISELECT(195184,160372), "S18574C2");
    check_base_class_offset(lv, (S18574C16*)(S18574C13*), ABISELECT(194576,159868), "S18574C2");
    check_base_class_offset(lv, (S18574C13*), ABISELECT(26288,21584), "S18574C2");
    /*is_ambiguous_... S18574C3::S18574C4 */ AMB_check_base_class_offset(lv, (S18574C4*)(S18574C3*)(S18574C17*), ABISELECT(197392,162188), "S18574C2");
    check_base_class_offset(lv, (S18574C3*)(S18574C17*), ABISELECT(197392,162188), "S18574C2");
    check_base_class_offset(lv, (S18574C11*)(S18574C17*), ABISELECT(197856,162568), "S18574C2");
    check_base_class_offset(lv, (S18574C17*), ABISELECT(197392,162188), "S18574C2");
    check_field_offset(lv, s18574c2f0, ABISELECT(112400,92344), "S18574C2.s18574c2f0");
    check_field_offset(lv, s18574c2f1, ABISELECT(177056,145444), "S18574C2.s18574c2f1");
    check_field_offset(lv, s18574c2f2, ABISELECT(177060,145448), "S18574C2.s18574c2f2");
    check_field_offset(lv, s18574c2f3, ABISELECT(177064,145452), "S18574C2.s18574c2f3");
    check_field_offset(lv, s18574c2f4, ABISELECT(177068,145456), "S18574C2.s18574c2f4");
    check_field_offset(lv, s18574c2f5, ABISELECT(177072,145460), "S18574C2.s18574c2f5");
    check_field_offset(lv, s18574c2f6, ABISELECT(177076,145464), "S18574C2.s18574c2f6");
    check_field_offset(lv, s18574c2f7, ABISELECT(177080,145468), "S18574C2.s18574c2f7");
    check_field_offset(lv, s18574c2f8, ABISELECT(177088,145472), "S18574C2.s18574c2f8");
    check_field_offset(lv, s18574c2f9, ABISELECT(177096,145476), "S18574C2.s18574c2f9");
    check_field_offset(lv, s18574c2f10, ABISELECT(177104,145480), "S18574C2.s18574c2f10");
    check_field_offset(lv, s18574c2f11, ABISELECT(177112,145484), "S18574C2.s18574c2f11");
    test_class_info(&lv, &cd_S18574C2);
    dp->~S18574C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C2(Test_S18574C2, "S18574C2", ABISELECT(204768,168248));

#else // __cplusplus

extern void _ZN8S18574C2C1Ev();
extern void _ZN8S18574C2D1Ev();
Name_Map name_map_S18574C2[] = {
  NSPAIR(_ZN8S18574C2C1Ev),
  NSPAIR(_ZN8S18574C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C6;
extern VTBL_ENTRY _ZTI8S18574C6[];
extern  VTBL_ENTRY _ZTV8S18574C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C6[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C8;
extern VTBL_ENTRY _ZTI8S18574C8[];
extern  VTBL_ENTRY _ZTV8S18574C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C8[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C9;
extern VTBL_ENTRY _ZTI8S18574C9[];
extern  VTBL_ENTRY _ZTV8S18574C9[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C8;
extern VTBL_ENTRY _ZTI8S18574C8[];
extern  VTBL_ENTRY _ZTV8S18574C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C8[];
extern Class_Descriptor cd_S18574C14;
extern VTBL_ENTRY _ZTI9S18574C14[];
extern  VTBL_ENTRY _ZTV9S18574C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C14[];
extern Class_Descriptor cd_S18574C5;
extern VTBL_ENTRY _ZTI8S18574C5[];
extern  VTBL_ENTRY _ZTV8S18574C5[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C10;
extern VTBL_ENTRY _ZTI9S18574C10[];
extern  VTBL_ENTRY _ZTV9S18574C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C10[];
extern Class_Descriptor cd_S18574C15;
extern VTBL_ENTRY _ZTI9S18574C15[];
extern  VTBL_ENTRY _ZTV9S18574C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C15[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C7;
extern VTBL_ENTRY _ZTI8S18574C7[];
extern  VTBL_ENTRY _ZTV8S18574C7[];
extern Class_Descriptor cd_S18574C12;
extern VTBL_ENTRY _ZTI9S18574C12[];
extern  VTBL_ENTRY _ZTV9S18574C12[];
extern Class_Descriptor cd_S18574C16;
extern VTBL_ENTRY _ZTI9S18574C16[];
extern  VTBL_ENTRY _ZTV9S18574C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C16[];
extern Class_Descriptor cd_S18574C13;
extern VTBL_ENTRY _ZTI9S18574C13[];
extern  VTBL_ENTRY _ZTV9S18574C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C13[];
extern Class_Descriptor cd_S18574C4;
extern VTBL_ENTRY _ZTI8S18574C4[];
extern  VTBL_ENTRY _ZTV8S18574C4[];
extern Class_Descriptor cd_S18574C3;
extern VTBL_ENTRY _ZTI8S18574C3[];
extern  VTBL_ENTRY _ZTV8S18574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C3[];
extern Class_Descriptor cd_S18574C11;
extern VTBL_ENTRY _ZTI9S18574C11[];
extern  VTBL_ENTRY _ZTV9S18574C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C11[];
extern Class_Descriptor cd_S18574C17;
extern VTBL_ENTRY _ZTI9S18574C17[];
extern  VTBL_ENTRY _ZTV9S18574C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18574C17[];
static Base_Class bases_S18574C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18574C4,    ABISELECT(177424,145744), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18574C5,    ABISELECT(177888,146124), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(178520,146660), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18574C6,    ABISELECT(178352,146524), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C7,    ABISELECT(178672,146784), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18574C3,    ABISELECT(177424,145744), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18574C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(296,244), //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
    28, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(760,644), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18574C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(178976,147028), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(179272,147272), //bcp->offset
    134, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(179736,147672), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(178976,147028), //bcp->offset
    121, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(4128,3396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(4592,3776), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(4128,3396), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18574C8,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C7,    ABISELECT(26288,21584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(26584,21828), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(27048,22228), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18574C9,    ABISELECT(26288,21584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(30416,24980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(30416,24980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(30880,25360), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(30416,24980), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18574C8,    ABISELECT(26288,21584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18574C14,    ABISELECT(52576,43168), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18574C5,    ABISELECT(183096,150424), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(183568,150832), //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(183568,150832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(184032,151212), //bcp->offset
    173, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18574C10,    ABISELECT(183568,150832), //bcp->offset
    159, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S18574C15,    ABISELECT(183096,150424), //bcp->offset
    142, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S18574C4,    ABISELECT(194576,159868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18574C4,    ABISELECT(194720,159992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(194720,159992), //bcp->offset
    199, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18574C7,    ABISELECT(195184,160372), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S18574C12,    ABISELECT(195184,160372), //bcp->offset
    206, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18574C16,    ABISELECT(194576,159868), //bcp->offset
    181, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S18574C13,    ABISELECT(26288,21584), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18574C4,    ABISELECT(197392,162188), //bcp->offset
    -1, //bcp->virtual_function_table_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
    43, //immediately_derived
  0, 0},
  {&cd_S18574C3,    ABISELECT(197392,162188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18574C11,    ABISELECT(197856,162568), //bcp->offset
    228, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    170, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18574C17,    ABISELECT(197392,162188), //bcp->offset
    212, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18574C2[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C2D1Ev();
extern void _ZN8S18574C2D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C2D1Ev,_ZThn3396_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C2D0Ev,_ZThn3396_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C2D1Ev,_ZThn3776_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C2D0Ev,_ZThn3776_N8S18574C2D0Ev)();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZThn26288_N8S18574C2D1Ev,_ZThn21584_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn26288_N8S18574C2D0Ev,_ZThn21584_N8S18574C2D0Ev)();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN9S18574C133v14Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn30416_N8S18574C2D1Ev,_ZThn24980_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn30416_N8S18574C2D0Ev,_ZThn24980_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn30880_N8S18574C2D1Ev,_ZThn25360_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn30880_N8S18574C2D0Ev,_ZThn25360_N8S18574C2D0Ev)();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C2D1Ev,_ZTv0_n16_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18574C2D1Ev,_ZThn147028_N8S18574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C2D0Ev,_ZTv0_n16_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18574C2D0Ev,_ZThn147028_N8S18574C2D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S18574C2D1Ev,_ZTv0_n48_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn183096_N8S18574C2D1Ev,_ZThn150424_N8S18574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S18574C2D0Ev,_ZTv0_n48_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn183096_N8S18574C2D0Ev,_ZThn150424_N8S18574C2D0Ev)() __attribute__((weak));
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S18574C2D1Ev,_ZTv0_n40_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn183568_N8S18574C2D1Ev,_ZThn150832_N8S18574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S18574C2D0Ev,_ZTv0_n40_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn183568_N8S18574C2D0Ev,_ZThn150832_N8S18574C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S18574C2D1Ev,_ZTvn380_n40_N8S18574C2D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S18574C2D0Ev,_ZTvn380_n40_N8S18574C2D0Ev)();
extern void _ZN8S18574C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S18574C2D1Ev,_ZTv0_n44_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn194576_N8S18574C2D1Ev,_ZThn159868_N8S18574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S18574C2D0Ev,_ZTv0_n44_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn194576_N8S18574C2D0Ev,_ZThn159868_N8S18574C2D0Ev)() __attribute__((weak));
extern void _ZN9S18574C163v13Ev();
extern void _ZN8S18574C42v3Ev();
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S18574C2D1Ev,_ZTvn504_n44_N8S18574C2D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S18574C2D0Ev,_ZTvn504_n44_N8S18574C2D0Ev)();
extern void _ZN9S18574C123v12Ev();
extern void _ZN8S18574C42v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S18574C2D1Ev,_ZTv0_n36_N8S18574C2D1Ev)();
extern void ABISELECT(_ZThn197392_N8S18574C2D1Ev,_ZThn162188_N8S18574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S18574C2D0Ev,_ZTv0_n36_N8S18574C2D0Ev)();
extern void ABISELECT(_ZThn197392_N8S18574C2D0Ev,_ZThn162188_N8S18574C2D0Ev)() __attribute__((weak));
extern void _ZN9S18574C173v15Ev();
extern void _ZN9S18574C173v16Ev();
extern void ABISELECT(_ZTvn464_n72_N8S18574C2D1Ev,_ZTvn380_n36_N8S18574C2D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N8S18574C2D0Ev,_ZTvn380_n36_N8S18574C2D0Ev)();
static  VTBL_ENTRY vtc_S18574C2[] = {
  ABISELECT(197392,162188),
  ABISELECT(194576,159868),
  ABISELECT(183568,150832),
  ABISELECT(183096,150424),
  ABISELECT(178976,147028),
  ABISELECT(178672,146784),
  ABISELECT(178352,146524),
  ABISELECT(177888,146124),
  ABISELECT(177424,145744),
  ABISELECT(178520,146660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(174848,143632),
  ABISELECT(174544,143388),
  ABISELECT(174392,143264),
  ABISELECT(174224,143128),
  ABISELECT(173760,142728),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C2D1Ev,_ZThn3396_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C2D0Ev,_ZThn3396_N8S18574C2D0Ev),
  ABISELECT(173760,142748),
  ABISELECT(173928,142884),
  ABISELECT(174384,143252),
  ABISELECT(174080,143008),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C2D1Ev,_ZThn3776_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C2D0Ev,_ZThn3776_N8S18574C2D0Ev),
  ABISELECT(168288,138284),
  ABISELECT(157280,129248),
  ABISELECT(156808,128840),
  ABISELECT(152688,125444),
  ABISELECT(152384,125200),
  ABISELECT(152064,124940),
  ABISELECT(151600,124540),
  ABISELECT(151136,124160),
  ABISELECT(152232,125076),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18574C2D1Ev,_ZThn21584_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18574C2D0Ev,_ZThn21584_N8S18574C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18574C133v14Ev,
  ABISELECT(-26584,-21828),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-27048,-22228),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(148560,122048),
  ABISELECT(148256,121804),
  ABISELECT(148104,121680),
  ABISELECT(147936,121544),
  ABISELECT(147472,121144),
  ABISELECT(-30416,-24980),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18574C2D1Ev,_ZThn24980_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18574C2D0Ev,_ZThn24980_N8S18574C2D0Ev),
  ABISELECT(147472,121164),
  ABISELECT(147640,121300),
  ABISELECT(148096,121668),
  ABISELECT(147792,121424),
  ABISELECT(-30880,-25360),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18574C2D1Ev,_ZThn25360_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18574C2D0Ev,_ZThn25360_N8S18574C2D0Ev),
  ABISELECT(125944,103492),
  ABISELECT(125776,103356),
  ABISELECT(-52576,-43168),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  0,
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-177424,-145744),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-177888,-146124),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(168,136),
  ABISELECT(-178352,-146524),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  0,
  ABISELECT(-178520,-146660),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  0,
  ABISELECT(-178672,-146784),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-178976,-147028),
  0,
  ABISELECT(-178976,-147028),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C2D1Ev,_ZTv0_n16_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C2D0Ev,_ZTv0_n16_N8S18574C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  ABISELECT(-179272,-147272),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  ABISELECT(-179736,-147672),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-183096,-150424),
  0,
  0,
  0,
  ABISELECT(-5208,-4300),
  ABISELECT(-4744,-3900),
  ABISELECT(-4576,-3764),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(-183096,-150424),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18574C2D1Ev,_ZTv0_n48_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18574C2D0Ev,_ZTv0_n48_N8S18574C2D0Ev),
  ABISELECT(-183568,-150832),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  ABISELECT(-183568,-150832),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18574C2D1Ev,_ZTv0_n40_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18574C2D0Ev,_ZTv0_n40_N8S18574C2D0Ev),
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-184032,-151212),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18574C2D1Ev,_ZTvn380_n40_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18574C2D0Ev,_ZTvn380_n40_N8S18574C2D0Ev),
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-194576,-159868),
  0,
  ABISELECT(-16688,-13744),
  ABISELECT(-16224,-13344),
  ABISELECT(-16056,-13208),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  ABISELECT(-194576,-159868),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18574C2D1Ev,_ZTv0_n44_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18574C2D0Ev,_ZTv0_n44_N8S18574C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
  ABISELECT(-16048,-13208),
  ABISELECT(-16200,-13332),
  ABISELECT(-16368,-13468),
  ABISELECT(-16832,-13868),
  ABISELECT(-194720,-159992),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  ABISELECT(-195184,-160372),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18574C2D1Ev,_ZTvn504_n44_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18574C2D0Ev,_ZTvn504_n44_N8S18574C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C123v12Ev,
  0,
  0,
  ABISELECT(-197392,-162188),
  0,
  ABISELECT(-18416,-15160),
  ABISELECT(-18720,-15404),
  ABISELECT(-18872,-15528),
  ABISELECT(-19040,-15664),
  ABISELECT(-19504,-16064),
  ABISELECT(-197392,-162188),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18574C2D1Ev,_ZTv0_n36_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18574C2D0Ev,_ZTv0_n36_N8S18574C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18574C173v16Ev,
  ABISELECT(-19504,-16044),
  ABISELECT(-19336,-15908),
  ABISELECT(-18880,-15540),
  ABISELECT(-19184,-15784),
  ABISELECT(-197856,-162568),
  (VTBL_ENTRY)&(_ZTI8S18574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18574C2D1Ev,_ZTvn380_n36_N8S18574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18574C2D0Ev,_ZTvn380_n36_N8S18574C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S18574C2[];
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C8D1Ev();
extern void _ZN8S18574C8D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C8__8S18574C2[] = {
  ABISELECT(178976,147028),
  ABISELECT(178672,146784),
  ABISELECT(178352,146524),
  ABISELECT(177888,146124),
  ABISELECT(177424,145744),
  ABISELECT(178520,146660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(174848,143632),
  ABISELECT(174544,143388),
  ABISELECT(174392,143264),
  ABISELECT(174224,143128),
  ABISELECT(173760,142728),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C108S18574C8__A1__8S18574C2[] = {
  ABISELECT(174544,143388),
  ABISELECT(174392,143264),
  ABISELECT(174224,143128),
  ABISELECT(173760,142728),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-142728),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-174224,-143128),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__8S18574C2[] = {
  0,
  ABISELECT(-174392,-143264),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__8S18574C2[] = {
  0,
  ABISELECT(-174544,-143388),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(173760,142748),
  ABISELECT(173928,142884),
  ABISELECT(174384,143252),
  ABISELECT(174080,143008),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-174080,-143008),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn174384_N9S18574C11D1Ev,_ZThn143252_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn174384_N9S18574C11D0Ev,_ZThn143252_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-174384,-143252),
  0,
  ABISELECT(-174384,-143252),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(-174680,-143496),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(-175144,-143896),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-173928,-142884),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-173760,-142748),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn174848_N9S18574C10D1Ev,_ZThn143632_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn174848_N9S18574C10D0Ev,_ZThn143632_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-174848,-143632),
  0,
  ABISELECT(-174848,-143632),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(-175144,-143876),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(-175608,-144276),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C108S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-174392,-143264),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-174224,-143128),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C108S18574C8__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-142728),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C108S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-174544,-143388),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C108S18574C8__8S18574C2[] = {
  ABISELECT(173760,142748),
  ABISELECT(173928,142884),
  ABISELECT(174384,143252),
  ABISELECT(174080,143008),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-178520,-146660),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C8__8S18574C2[] = {
  0,
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-177424,-145744),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C8__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-177888,-146124),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C8__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-178352,-146524),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C8__8S18574C2[] = {
  0,
  ABISELECT(-178672,-146784),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__8S18574C8__8S18574C2[] = {
  ABISELECT(174848,143632),
  ABISELECT(174544,143388),
  ABISELECT(174392,143264),
  ABISELECT(174224,143128),
  ABISELECT(173760,142728),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18574C8D1Ev,_ZThn147028_N8S18574C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18574C8D0Ev,_ZThn147028_N8S18574C8D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__A1__8S18574C8__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-178976,-147028),
  0,
  ABISELECT(-178976,-147028),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A2__8S18574C8__8S18574C2[] = {
  ABISELECT(-179272,-147272),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A3__8S18574C8__8S18574C2[] = {
  ABISELECT(-179736,-147672),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__8S18574C8__8S18574C2[] = {
  ABISELECT(173760,142748),
  ABISELECT(173928,142884),
  ABISELECT(174384,143252),
  ABISELECT(174080,143008),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void _ZN9S18574C13D1Ev();
extern void _ZN9S18574C13D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
extern void _ZN9S18574C133v14Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C13__8S18574C2[] = {
  ABISELECT(168288,138284),
  ABISELECT(157280,129248),
  ABISELECT(156808,128840),
  ABISELECT(152688,125444),
  ABISELECT(152384,125200),
  ABISELECT(152064,124940),
  ABISELECT(151600,124540),
  ABISELECT(151136,124160),
  ABISELECT(152232,125076),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18574C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18574C133v14Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void _ZN8S18574C8D1Ev();
extern void _ZN8S18574C8D0Ev();
extern void _ZN8S18574C92v8Ev();
extern void _ZN8S18574C83v10Ev();
extern void _ZN8S18574C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(152688,125444),
  ABISELECT(152384,125200),
  ABISELECT(152064,124940),
  ABISELECT(151600,124540),
  ABISELECT(151136,124160),
  ABISELECT(152232,125076),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18574C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18574C83v11Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(148560,122048),
  ABISELECT(148256,121804),
  ABISELECT(148104,121680),
  ABISELECT(147936,121544),
  ABISELECT(147472,121144),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[] = {
  ABISELECT(148256,121804),
  ABISELECT(148104,121680),
  ABISELECT(147936,121544),
  ABISELECT(147472,121144),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-121144),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-147936,-121544),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[] = {
  0,
  ABISELECT(-148104,-121680),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[] = {
  0,
  ABISELECT(-148256,-121804),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(147472,121164),
  ABISELECT(147640,121300),
  ABISELECT(148096,121668),
  ABISELECT(147792,121424),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-147792,-121424),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZThn148096_N9S18574C11D1Ev,_ZThn121668_N9S18574C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void ABISELECT(_ZThn148096_N9S18574C11D0Ev,_ZThn121668_N9S18574C11D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-148096,-121668),
  0,
  ABISELECT(-148096,-121668),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-148392,-121912),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-148856,-122312),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-147640,-121300),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-147472,-121164),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn148560_N9S18574C10D1Ev,_ZThn122048_N9S18574C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void ABISELECT(_ZThn148560_N9S18574C10D0Ev,_ZThn122048_N9S18574C10D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-148560,-122048),
  0,
  ABISELECT(-148560,-122048),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-148856,-122292),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-149320,-122692),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-148104,-121680),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-147936,-121544),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-121144),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-148256,-121804),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C108S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(147472,121164),
  ABISELECT(147640,121300),
  ABISELECT(148096,121668),
  ABISELECT(147792,121424),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-152232,-125076),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-151136,-124160),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-124540),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-152064,-124940),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C89S18574C13__A1__8S18574C2[] = {
  0,
  ABISELECT(-152384,-125200),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(148560,122048),
  ABISELECT(148256,121804),
  ABISELECT(148104,121680),
  ABISELECT(147936,121544),
  ABISELECT(147472,121144),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D1Ev,_ZThn3396_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18574C8D0Ev,_ZThn3396_N8S18574C8D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn152688_N8S18574C8D1Ev,_ZThn125444_N8S18574C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev)();
extern void ABISELECT(_ZThn152688_N8S18574C8D0Ev,_ZThn125444_N8S18574C8D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__A1__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-152688,-125444),
  0,
  ABISELECT(-152688,-125444),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A2__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-152984,-125688),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A3__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(-153448,-126088),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__8S18574C89S18574C13__A1__8S18574C2[] = {
  ABISELECT(147472,121164),
  ABISELECT(147640,121300),
  ABISELECT(148096,121668),
  ABISELECT(147792,121424),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI8S18574C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D1Ev,_ZThn3776_N8S18574C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18574C8D0Ev,_ZThn3776_N8S18574C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18574C149S18574C13__8S18574C2[] = {
  ABISELECT(125944,103492),
  ABISELECT(125776,103356),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C149S18574C13__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-125776,-103356),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__9S18574C149S18574C13__8S18574C2[] = {
  0,
  ABISELECT(-125944,-103492),
  (VTBL_ENTRY)&(_ZTI9S18574C14[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__9S18574C13__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-124540),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__9S18574C13__8S18574C2[] = {
  0,
  ABISELECT(-152232,-125076),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__9S18574C13__8S18574C2[] = {
  0,
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  ABISELECT(-151136,-124160),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C13__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-152064,-124940),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C13__8S18574C2[] = {
  0,
  ABISELECT(-152384,-125200),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18574C13D1Ev,_ZThn3396_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18574C13D0Ev,_ZThn3396_N9S18574C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C108S18574C8__9S18574C13__8S18574C2[] = {
  ABISELECT(148560,122048),
  ABISELECT(148256,121804),
  ABISELECT(148104,121680),
  ABISELECT(147936,121544),
  ABISELECT(147472,121144),
  ABISELECT(-4128,-3396),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18574C13D1Ev,_ZThn3396_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18574C13D0Ev,_ZThn3396_N9S18574C13D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn152688_N9S18574C13D1Ev,_ZThn125444_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn152688_N9S18574C13D0Ev,_ZThn125444_N9S18574C13D0Ev)() __attribute__((weak));
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__A1__9S18574C13__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-152688,-125444),
  0,
  ABISELECT(-152688,-125444),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A2__9S18574C13__8S18574C2[] = {
  ABISELECT(-152984,-125688),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A3__9S18574C13__8S18574C2[] = {
  ABISELECT(-153448,-126088),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S18574C13D1Ev,_ZThn3776_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18574C13D0Ev,_ZThn3776_N9S18574C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C108S18574C8__9S18574C13__8S18574C2[] = {
  ABISELECT(147472,121164),
  ABISELECT(147640,121300),
  ABISELECT(148096,121668),
  ABISELECT(147792,121424),
  ABISELECT(-4592,-3776),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18574C13D1Ev,_ZThn3776_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18574C13D0Ev,_ZThn3776_N9S18574C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18574C14__9S18574C13__8S18574C2[] = {
  ABISELECT(125944,103492),
  ABISELECT(125776,103356),
  ABISELECT(-26288,-21584),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn156808_N9S18574C13D1Ev,_ZThn128840_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn156808_N9S18574C13D0Ev,_ZThn128840_N9S18574C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18574C15__9S18574C13__8S18574C2[] = {
  ABISELECT(-156808,-128840),
  0,
  0,
  0,
  ABISELECT(-5208,-4300),
  ABISELECT(-4744,-3900),
  ABISELECT(-4576,-3764),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(-156808,-128840),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn157280_N9S18574C13D1Ev,_ZThn129248_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn157280_N9S18574C13D0Ev,_ZThn129248_N9S18574C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18574C10__A1__9S18574C13__8S18574C2[] = {
  ABISELECT(-157280,-129248),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  ABISELECT(-157280,-129248),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C13D1Ev,_ZTvn380_n40_N9S18574C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C13D0Ev,_ZTvn380_n40_N9S18574C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__A1__9S18574C13__8S18574C2[] = {
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-157744,-129628),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C13D1Ev,_ZTvn380_n40_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C13D0Ev,_ZTvn380_n40_N9S18574C13D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev)();
extern void ABISELECT(_ZThn168288_N9S18574C13D1Ev,_ZThn138284_N9S18574C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev)();
extern void ABISELECT(_ZThn168288_N9S18574C13D0Ev,_ZThn138284_N9S18574C13D0Ev)() __attribute__((weak));
extern void _ZN9S18574C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C16__9S18574C13__8S18574C2[] = {
  ABISELECT(608,504),
  ABISELECT(608,504),
  0,
  ABISELECT(-168288,-138284),
  0,
  ABISELECT(-16688,-13744),
  ABISELECT(-16224,-13344),
  ABISELECT(-16056,-13208),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  ABISELECT(-168288,-138284),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C16__A3__9S18574C13__8S18574C2[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16200,-13332),
  ABISELECT(-16368,-13468),
  ABISELECT(-16832,-13868),
  ABISELECT(-168432,-138408),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18574C13D1Ev,_ZTvn504_n44_N9S18574C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18574C13D0Ev,_ZTvn504_n44_N9S18574C13D0Ev)();
extern void _ZN9S18574C123v12Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C129S18574C16__9S18574C13__8S18574C2[] = {
  ABISELECT(-168896,-138788),
  (VTBL_ENTRY)&(_ZTI9S18574C13[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18574C13D1Ev,_ZTvn504_n44_N9S18574C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18574C13D0Ev,_ZTvn504_n44_N9S18574C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18574C123v12Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__8S18574C2[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C3__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C3__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C3__8S18574C2[] = {
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C3__8S18574C2[] = {
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C2[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__8S18574C6__8S18574C2[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S18574C6[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void _ZN9S18574C15D1Ev();
extern void _ZN9S18574C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C15__8S18574C2[] = {
  ABISELECT(-5208,-4300),
  ABISELECT(-4744,-3900),
  ABISELECT(-4576,-3764),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C15D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C15__8S18574C2[] = {
  0,
  ABISELECT(4424,3640),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C15__8S18574C2[] = {
  ABISELECT(-472,-408),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C15__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4120,3396),
  0,
  ABISELECT(4120,3396),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D1Ev,_ZTv0_n16_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C15D0Ev,_ZTv0_n16_N9S18574C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C15__8S18574C2[] = {
  ABISELECT(3824,3152),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C15__8S18574C2[] = {
  ABISELECT(3360,2752),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C15__8S18574C2[] = {
  0,
  ABISELECT(4576,3764),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C15__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(4744,3900),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A2__9S18574C15__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(5208,4300),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C15__8S18574C2[] = {
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-936,-788),
  (VTBL_ENTRY)&(_ZTI9S18574C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D1Ev,_ZTvn380_n40_N9S18574C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C15D0Ev,_ZTvn380_n40_N9S18574C15D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void _ZN9S18574C10D1Ev();
extern void _ZN9S18574C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C10__A2__8S18574C2[] = {
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C10D0Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C10__A3__8S18574C2[] = {
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C10__A3__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,4708),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C10__A3__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(5216,4308),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A3__8S18574C2[] = {
  0,
  ABISELECT(5048,4172),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C10__A3__8S18574C2[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__A2__8S18574C2[] = {
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C10__A2__8S18574C2[] = {
  0,
  ABISELECT(5360,4428),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C10__A2__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(5056,4184),
  0,
  ABISELECT(5056,4184),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__A2__8S18574C2[] = {
  ABISELECT(4760,3940),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__A2__8S18574C2[] = {
  ABISELECT(4296,3540),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C10__A2__8S18574C2[] = {
  0,
  ABISELECT(5512,4552),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C10__A2__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(5680,4688),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C10__A2__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4592,3804),
  0,
  ABISELECT(4592,3804),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C10__A2__8S18574C2[] = {
  ABISELECT(4296,3560),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C10__A2__8S18574C2[] = {
  ABISELECT(3832,3160),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C10__A2__8S18574C2[] = {
  0,
  ABISELECT(5048,4172),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C10__A2__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(5216,4308),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A1__9S18574C10__A2__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,4708),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__A1__9S18574C10__A2__8S18574C2[] = {
  0,
  ABISELECT(4896,4048),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C10__A2__8S18574C2[] = {
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D1Ev,_ZThn380_N9S18574C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C10D0Ev,_ZThn380_N9S18574C10D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C16D1Ev();
extern void _ZN9S18574C16D0Ev();
extern void _ZN9S18574C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C16__8S18574C2[] = {
  ABISELECT(-16688,-13744),
  ABISELECT(-16224,-13344),
  ABISELECT(-16056,-13208),
  ABISELECT(-15600,-12840),
  ABISELECT(-11008,-9036),
  ABISELECT(-11480,-9444),
  ABISELECT(-15904,-13084),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C163v13Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C16__A4__8S18574C2[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16200,-13332),
  ABISELECT(-16368,-13468),
  ABISELECT(-16832,-13868),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C16__A4__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(16832,13868),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C16__A4__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(16368,13468),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C16__A4__8S18574C2[] = {
  0,
  ABISELECT(16200,13332),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C16__A4__8S18574C2[] = {
  0,
  ABISELECT(16048,13208),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C16__8S18574C2[] = {
  0,
  ABISELECT(15904,13084),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C15__9S18574C16__8S18574C2[] = {
  ABISELECT(11480,9444),
  0,
  0,
  0,
  ABISELECT(-5208,-4300),
  ABISELECT(-4744,-3900),
  ABISELECT(-4576,-3764),
  ABISELECT(-4120,-3396),
  ABISELECT(472,408),
  ABISELECT(-4424,-3640),
  ABISELECT(11480,9444),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D1Ev,_ZTv0_n48_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18574C16D0Ev,_ZTv0_n48_N9S18574C16D0Ev),
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C10__9S18574C16__8S18574C2[] = {
  ABISELECT(11008,9036),
  0,
  0,
  ABISELECT(-4592,-3804),
  ABISELECT(-4896,-4048),
  ABISELECT(-5048,-4172),
  ABISELECT(-5216,-4308),
  ABISELECT(-5680,-4708),
  ABISELECT(11008,9036),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D1Ev,_ZTv0_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18574C16D0Ev,_ZTv0_n40_N9S18574C16D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C16__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(15600,12840),
  0,
  ABISELECT(15600,12840),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D1Ev,_ZTv0_n16_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C16D0Ev,_ZTv0_n16_N9S18574C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C16__8S18574C2[] = {
  ABISELECT(15304,12596),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A1__9S18574C16__8S18574C2[] = {
  ABISELECT(14840,12196),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A2__9S18574C16__8S18574C2[] = {
  0,
  ABISELECT(16056,13208),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C16__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(16224,13344),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__A2__9S18574C16__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(16688,13744),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C10__9S18574C16__8S18574C2[] = {
  ABISELECT(-5680,-4688),
  ABISELECT(-5512,-4552),
  ABISELECT(-5056,-4184),
  ABISELECT(-5360,-4428),
  ABISELECT(10544,8656),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D1Ev,_ZTvn380_n40_N9S18574C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18574C16D0Ev,_ZTvn380_n40_N9S18574C16D0Ev),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C3__A1__9S18574C16__8S18574C2[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16200,-13332),
  ABISELECT(-16368,-13468),
  ABISELECT(-16832,-13868),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI9S18574C16[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
extern void _ZN9S18574C17D1Ev();
extern void _ZN9S18574C17D0Ev();
extern void _ZN9S18574C173v15Ev();
extern void _ZN9S18574C173v16Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C17__8S18574C2[] = {
  ABISELECT(-18416,-15160),
  ABISELECT(-18720,-15404),
  ABISELECT(-18872,-15528),
  ABISELECT(-19040,-15664),
  ABISELECT(-19504,-16064),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18574C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18574C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18574C173v16Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C39S18574C17__A5__8S18574C2[] = {
  ABISELECT(-18720,-15404),
  ABISELECT(-18872,-15528),
  ABISELECT(-19040,-15664),
  ABISELECT(-19504,-16064),
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__8S18574C39S18574C17__A5__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,16064),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__8S18574C39S18574C17__A5__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(19040,15664),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__8S18574C39S18574C17__A5__8S18574C2[] = {
  0,
  ABISELECT(18872,15528),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__8S18574C39S18574C17__A5__8S18574C2[] = {
  0,
  ABISELECT(18720,15404),
  (VTBL_ENTRY)&(_ZTI8S18574C3[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN9S18574C11D1Ev();
extern void _ZN9S18574C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18574C119S18574C17__A3__8S18574C2[] = {
  ABISELECT(-19504,-16044),
  ABISELECT(-19336,-15908),
  ABISELECT(-18880,-15540),
  ABISELECT(-19184,-15784),
  0,
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN9S18574C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18574C11D0Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C119S18574C17__A3__8S18574C2[] = {
  0,
  ABISELECT(19184,15784),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C119S18574C17__A3__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(18880,15540),
  0,
  ABISELECT(18880,15540),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__9S18574C119S18574C17__A3__8S18574C2[] = {
  ABISELECT(18584,15296),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__9S18574C119S18574C17__A3__8S18574C2[] = {
  ABISELECT(18120,14896),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C119S18574C17__A3__8S18574C2[] = {
  0,
  ABISELECT(19336,15908),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C119S18574C17__A3__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(19504,16044),
  (VTBL_ENTRY)&(_ZTI9S18574C11[0]),
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C5__9S18574C17__8S18574C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,16064),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18574C6__9S18574C17__8S18574C2[] = {
  ABISELECT(168,136),
  ABISELECT(19040,15664),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C4__A1__9S18574C17__8S18574C2[] = {
  0,
  ABISELECT(18872,15528),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
extern void _ZN8S18574C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C7__9S18574C17__8S18574C2[] = {
  0,
  ABISELECT(18720,15404),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18574C17D1Ev,_ZThn380_N9S18574C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18574C17D0Ev,_ZThn380_N9S18574C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18574C11__9S18574C17__8S18574C2[] = {
  ABISELECT(-19504,-16044),
  ABISELECT(-19336,-15908),
  ABISELECT(-18880,-15540),
  ABISELECT(-19184,-15784),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C17D1Ev,_ZThn380_N9S18574C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18574C17D0Ev,_ZThn380_N9S18574C17D0Ev),
};
extern void _ZN8S18574C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18574C17D1Ev,_ZTv0_n16_N9S18574C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18574C17D0Ev,_ZTv0_n16_N9S18574C17D0Ev)();
extern void _ZN8S18574C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C9__9S18574C17__8S18574C2[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(18416,15160),
  0,
  ABISELECT(18416,15160),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C17D1Ev,_ZTv0_n16_N9S18574C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18574C17D0Ev,_ZTv0_n16_N9S18574C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18574C92v8Ev,
};
extern void _ZN8S18574C52v4Ev();
extern void _ZN8S18574C52v5Ev();
extern void _ZN8S18574C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C58S18574C9__A1__9S18574C17__8S18574C2[] = {
  ABISELECT(18120,14916),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18574C52v6Ev,
};
extern void _ZN8S18574C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18574C48S18574C9__A2__9S18574C17__8S18574C2[] = {
  ABISELECT(17656,14516),
  (VTBL_ENTRY)&(_ZTI9S18574C17[0]),
  (VTBL_ENTRY)&_ZN8S18574C42v3Ev,
};
static  VTT_ENTRY vtt_S18574C2[] = {
  {&(_ZTV8S18574C2[12]),  12,236},
  {&(_tg__ZTV8S18574C8__8S18574C2[8]),  8,14},
  {&(_tg__ZTV9S18574C108S18574C8__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C108S18574C8__A1__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C108S18574C8__A1__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C108S18574C8__A1__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C8__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C108S18574C8__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C108S18574C8__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C108S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C8__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C108S18574C8__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C108S18574C8__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C108S18574C8__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C108S18574C8__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C108S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C108S18574C8__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C108S18574C8__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C108S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C108S18574C8__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C4__8S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C3__8S18574C8__8S18574C2[7]),  7,8},
  {&(_tg__ZTV8S18574C5__8S18574C8__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C8__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C7__8S18574C8__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C10__8S18574C8__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C9__A1__8S18574C8__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A2__8S18574C8__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A3__8S18574C8__8S18574C2[2]),  2,3},
  {&(_tg__ZTV9S18574C119S18574C10__8S18574C8__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C13__8S18574C2[11]),  11,18},
  {&(_tg__ZTV8S18574C89S18574C13__A1__8S18574C2[8]),  8,14},
  {&(_tg__ZTV9S18574C108S18574C89S18574C13__A1__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C108S18574C89S18574C13__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C108S18574C89S18574C13__A1__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C108S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C108S18574C89S18574C13__A1__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C4__8S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C3__8S18574C89S18574C13__A1__8S18574C2[7]),  7,8},
  {&(_tg__ZTV8S18574C5__8S18574C89S18574C13__A1__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C89S18574C13__A1__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C7__8S18574C89S18574C13__A1__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C10__8S18574C89S18574C13__A1__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C9__A1__8S18574C89S18574C13__A1__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A2__8S18574C89S18574C13__A1__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A3__8S18574C89S18574C13__A1__8S18574C2[2]),  2,3},
  {&(_tg__ZTV9S18574C119S18574C10__8S18574C89S18574C13__A1__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C149S18574C13__8S18574C2[4]),  4,4},
  {&(_tg__ZTV8S18574C6__9S18574C149S18574C13__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__9S18574C149S18574C13__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C5__9S18574C13__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C4__9S18574C13__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C3__9S18574C13__8S18574C2[7]),  7,8},
  {&(_tg__ZTV8S18574C6__9S18574C13__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C7__9S18574C13__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C108S18574C8__9S18574C13__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C9__A1__9S18574C13__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A2__9S18574C13__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A3__9S18574C13__8S18574C2[2]),  2,3},
  {&(_tg__ZTV9S18574C119S18574C108S18574C8__9S18574C13__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C14__9S18574C13__8S18574C2[4]),  4,4},
  {&(_tg__ZTV9S18574C15__9S18574C13__8S18574C2[12]),  12,17},
  {&(_tg__ZTV9S18574C10__A1__9S18574C13__8S18574C2[10]),  10,14},
  {&(_tg__ZTV9S18574C119S18574C10__A1__9S18574C13__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C16__9S18574C13__8S18574C2[14]),  14,18},
  {&(_tg__ZTV8S18574C39S18574C16__A3__9S18574C13__8S18574C2[6]),  6,7},
  {&(_tg__ZTV9S18574C129S18574C16__9S18574C13__8S18574C2[2]),  2,6},
  {&(_ZTV8S18574C2[101]),  101,236},
  {&(_ZTV8S18574C2[107]),  107,236},
  {&(_ZTV8S18574C2[113]),  113,236},
  {&(_ZTV8S18574C2[116]),  116,236},
  {&(_ZTV8S18574C2[120]),  120,236},
  {&(_ZTV8S18574C2[33]),  33,236},
  {&(_ZTV8S18574C2[130]),  130,236},
  {&(_ZTV8S18574C2[136]),  136,236},
  {&(_ZTV8S18574C2[141]),  141,236},
  {&(_ZTV8S18574C2[43]),  43,236},
  {&(_ZTV8S18574C2[56]),  56,236},
  {&(_ZTV8S18574C2[78]),  78,236},
  {&(_ZTV8S18574C2[88]),  88,236},
  {&(_ZTV8S18574C2[94]),  94,236},
  {&(_ZTV8S18574C2[154]),  154,236},
  {&(_ZTV8S18574C2[169]),  169,236},
  {&(_ZTV8S18574C2[179]),  179,236},
  {&(_ZTV8S18574C2[195]),  195,236},
  {&(_ZTV8S18574C2[205]),  205,236},
  {&(_ZTV8S18574C2[208]),  208,236},
  {&(_ZTV8S18574C2[223]),  223,236},
  {&(_ZTV8S18574C2[234]),  234,236},
  {&(_tg__ZTV8S18574C3__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C3__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C3__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__8S18574C6__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C15__8S18574C2[8]),  8,13},
  {&(_tg__ZTV8S18574C7__9S18574C15__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C10__9S18574C15__8S18574C2[10]),  10,14},
  {&(_tg__ZTV8S18574C9__9S18574C15__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C15__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C15__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C15__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C15__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A2__9S18574C15__8S18574C2[5]),  5,8},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C15__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C10__A2__8S18574C2[7]),  7,11},
  {&(_tg__ZTV8S18574C39S18574C10__A3__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C10__A3__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C10__A3__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C10__A3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C10__A3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C10__A2__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C10__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C10__A2__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C10__A2__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C10__A2__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C10__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C10__A2__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C9__9S18574C10__A2__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C10__A2__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C10__A2__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C10__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C10__A2__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A1__9S18574C10__A2__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C7__A1__9S18574C10__A2__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C10__A2__8S18574C2[6]),  6,8},
  {&(_tg__ZTV9S18574C16__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C39S18574C16__A4__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C16__A4__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C16__A4__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C16__A4__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C16__A4__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__9S18574C16__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C15__9S18574C16__8S18574C2[12]),  12,17},
  {&(_tg__ZTV9S18574C10__9S18574C16__8S18574C2[10]),  10,14},
  {&(_tg__ZTV8S18574C9__9S18574C16__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C16__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A1__9S18574C16__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A2__9S18574C16__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C16__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__A2__9S18574C16__8S18574C2[5]),  5,8},
  {&(_tg__ZTV9S18574C119S18574C10__9S18574C16__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C3__A1__9S18574C16__8S18574C2[6]),  6,7},
  {&(_tg__ZTV9S18574C17__8S18574C2[7]),  7,12},
  {&(_tg__ZTV8S18574C39S18574C17__A5__8S18574C2[6]),  6,7},
  {&(_tg__ZTV8S18574C5__8S18574C39S18574C17__A5__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__8S18574C39S18574C17__A5__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__8S18574C39S18574C17__A5__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__8S18574C39S18574C17__A5__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C119S18574C17__A3__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C7__9S18574C119S18574C17__A3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C9__9S18574C119S18574C17__A3__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__9S18574C119S18574C17__A3__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__9S18574C119S18574C17__A3__8S18574C2[2]),  2,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C119S18574C17__A3__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C6__9S18574C119S18574C17__A3__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C5__9S18574C17__8S18574C2[5]),  5,8},
  {&(_tg__ZTV8S18574C6__9S18574C17__8S18574C2[3]),  3,3},
  {&(_tg__ZTV8S18574C4__A1__9S18574C17__8S18574C2[3]),  3,4},
  {&(_tg__ZTV8S18574C7__9S18574C17__8S18574C2[3]),  3,4},
  {&(_tg__ZTV9S18574C11__9S18574C17__8S18574C2[6]),  6,8},
  {&(_tg__ZTV8S18574C9__9S18574C17__8S18574C2[9]),  9,13},
  {&(_tg__ZTV8S18574C58S18574C9__A1__9S18574C17__8S18574C2[2]),  2,5},
  {&(_tg__ZTV8S18574C48S18574C9__A2__9S18574C17__8S18574C2[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S18574C2[];
extern  VTBL_ENTRY _ZTV8S18574C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18574C2[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D0Ev,_ZTv0_n40_N9S18574C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D0Ev,_ZThn408_N9S18574C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C15D1Ev,_ZTv0_n40_N9S18574C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18574C15D1Ev,_ZThn408_N9S18574C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18574C13D0Ev,_ZTv0_n44_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18574C13D0Ev,_ZThn138284_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18574C13D1Ev,_ZTv0_n44_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18574C13D1Ev,_ZThn138284_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C13D0Ev,_ZTv0_n40_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18574C13D0Ev,_ZThn129248_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18574C13D1Ev,_ZTv0_n40_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18574C13D1Ev,_ZThn129248_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C13D0Ev,_ZTv0_n48_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18574C13D0Ev,_ZThn128840_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18574C13D1Ev,_ZTv0_n48_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18574C13D1Ev,_ZThn128840_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C13D0Ev,_ZTv0_n16_N9S18574C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18574C13D0Ev,_ZThn125444_N9S18574C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C13D1Ev,_ZTv0_n16_N9S18574C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18574C13D1Ev,_ZThn125444_N9S18574C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D0Ev,_ZTv0_n16_N8S18574C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18574C8D0Ev,_ZThn125444_N8S18574C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18574C8D0Ev,_ZThn147028_N8S18574C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C8D1Ev,_ZTv0_n16_N8S18574C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18574C8D1Ev,_ZThn125444_N8S18574C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18574C8D1Ev,_ZThn147028_N8S18574C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D0Ev,_ZTv0_n16_N9S18574C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18574C10D0Ev,_ZThn122048_N9S18574C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18574C10D0Ev,_ZThn143632_N9S18574C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C10D1Ev,_ZTv0_n16_N9S18574C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18574C10D1Ev,_ZThn122048_N9S18574C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18574C10D1Ev,_ZThn143632_N9S18574C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D0Ev,_ZTv0_n16_N9S18574C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18574C11D0Ev,_ZThn121668_N9S18574C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18574C11D0Ev,_ZThn143252_N9S18574C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18574C11D1Ev,_ZTv0_n16_N9S18574C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18574C11D1Ev,_ZThn121668_N9S18574C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18574C11D1Ev,_ZThn143252_N9S18574C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18574C2D0Ev,_ZTv0_n36_N8S18574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18574C2D0Ev,_ZThn162188_N8S18574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18574C2D1Ev,_ZTv0_n36_N8S18574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18574C2D1Ev,_ZThn162188_N8S18574C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18574C2D0Ev,_ZTv0_n44_N8S18574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18574C2D0Ev,_ZThn159868_N8S18574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18574C2D1Ev,_ZTv0_n44_N8S18574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18574C2D1Ev,_ZThn159868_N8S18574C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18574C2D0Ev,_ZTv0_n40_N8S18574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18574C2D0Ev,_ZThn150832_N8S18574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18574C2D1Ev,_ZTv0_n40_N8S18574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18574C2D1Ev,_ZThn150832_N8S18574C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18574C2D0Ev,_ZTv0_n48_N8S18574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18574C2D0Ev,_ZThn150424_N8S18574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18574C2D1Ev,_ZTv0_n48_N8S18574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18574C2D1Ev,_ZThn150424_N8S18574C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C2D0Ev,_ZTv0_n16_N8S18574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18574C2D0Ev,_ZThn147028_N8S18574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18574C2D1Ev,_ZTv0_n16_N8S18574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18574C2D1Ev,_ZThn147028_N8S18574C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18574C2 = {  "S18574C2", // class name
  bases_S18574C2, 46,
  &(vtc_S18574C2[0]), // expected_vtbl_contents
  &(vtt_S18574C2[0]), // expected_vtt_contents
  ABISELECT(204768,168248), // object size
  NSPAIRA(_ZTI8S18574C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18574C2),236, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18574C2),184, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18574C1  {
  int s18574c1f0;
  ::S18574C2 s18574c1f1;
  short s18574c1f2;
  ::S19762C23_nt s18574c1f3;
  ::S18574C7 s18574c1f4;
  int s18574c1f5;
  virtual void  v1(); // _ZN8S18574C12v1Ev
  virtual void  v2(); // _ZN8S18574C12v2Ev
  ~S18574C1(); // tgen
  S18574C1(); // tgen
};
//SIG(1 S18574C1) C1{ v1 v2 Fi FC2{ VBC3{ BC4{ v3 Fs:6 Fl Fs:4 FL[13] Fp} VBC5{ v4 v5 v6 Fi[2] FL[2] FC4[3]} VBC6{ VBC4 Fp FC4 Fi:3} VBC7{ v7 FL FD Fp Fc FC4 Fp[2] FL[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ VBC4 VBC3 BC9{ BC7 BC5 BC4 vd v8 FL[2] Fp[8] FC3 Fp Fi FC3 Fi} BC10{ VBC9 VBC4 VBC6 BC3 BC11{ VBC7 VBC9 VBC4 VBC6 FL:44 Fp Fi FC3 FL[2] Fi[3] FC9 Fc:7 FC12{ BC7 vd v12 FC6 Fi Fp Fi}} v9 FC9 FL Fc:7} v10 v11 FC11 Fs Fi:8} BC13{ VBC5 BC8 BC14{ VBC6 FC11 Fi:6 Fi FL} VBC15{ VBC7 BC5 VBC10 Fc:8 Fi} VBC16{ BC4 VBC7 VBC15 BC3 BC12 vd v13 Fi FC3 Fi Fs FL:8 Fi} v14 FC15 FC8} VBC17{ BC3 BC11 vd v15 v16 Fi:13 FL Fi Fp[2] FL FC5} FC18{ BC5 VBC8 BC4 vd Fi FU19{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC8 Fc[6] FL Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC6} Fs FU20{ m Fi:8 Fi Fp FL Fp Fp Fi} FC7 Fi}


void  S18574C1 ::v1(){vfunc_called(this, "_ZN8S18574C12v1Ev");}
void  S18574C1 ::v2(){vfunc_called(this, "_ZN8S18574C12v2Ev");}
S18574C1 ::~S18574C1(){ note_dtor("S18574C1", this);} // tgen
S18574C1 ::S18574C1(){ note_ctor("S18574C1", this);} // tgen

static void Test_S18574C1()
{
  extern Class_Descriptor cd_S18574C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12821,42130)];
    init_test(&cd_S18574C1, buf);
    S18574C1 *dp, &lv = *(dp=new (buf) S18574C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(205120,168516), "sizeof(S18574C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18574C1)");
    check_field_offset(lv, s18574c1f0, ABISELECT(8,4), "S18574C1.s18574c1f0");
    check_field_offset(lv, s18574c1f1, ABISELECT(16,8), "S18574C1.s18574c1f1");
    check_field_offset(lv, s18574c1f2, ABISELECT(204784,168256), "S18574C1.s18574c1f2");
    check_field_offset(lv, s18574c1f3, ABISELECT(204792,168260), "S18574C1.s18574c1f3");
    check_field_offset(lv, s18574c1f4, ABISELECT(204800,168268), "S18574C1.s18574c1f4");
    check_field_offset(lv, s18574c1f5, ABISELECT(205104,168512), "S18574C1.s18574c1f5");
    test_class_info(&lv, &cd_S18574C1);
    dp->~S18574C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18574C1(Test_S18574C1, "S18574C1", ABISELECT(205120,168516));

#else // __cplusplus

extern void _ZN8S18574C1C1Ev();
extern void _ZN8S18574C1D1Ev();
Name_Map name_map_S18574C1[] = {
  NSPAIR(_ZN8S18574C1C1Ev),
  NSPAIR(_ZN8S18574C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18574C1[];
extern void _ZN8S18574C12v1Ev();
extern void _ZN8S18574C12v2Ev();
static  VTBL_ENTRY vtc_S18574C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18574C1[0]),
  (VTBL_ENTRY)&_ZN8S18574C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18574C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18574C1[];
extern  VTBL_ENTRY _ZTV8S18574C1[];
Class_Descriptor cd_S18574C1 = {  "S18574C1", // class name
  0,0,//no base classes
  &(vtc_S18574C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(205120,168516), // object size
  NSPAIRA(_ZTI8S18574C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18574C1),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  S778C4  : S785C5_nt {
  virtual void  v12(); // _ZN6S778C43v12Ev
  virtual void  v13(); // _ZN6S778C43v13Ev
  virtual void  v14(); // _ZN6S778C43v14Ev
  virtual void  v15(); // _ZN6S778C43v15Ev
  virtual void  v16(); // _ZN6S778C43v16Ev
  virtual void  v17(); // _ZN6S778C43v17Ev
  virtual void  v18(); // _ZN6S778C43v18Ev
  virtual void  v19(); // _ZN6S778C43v19Ev
  virtual void  v20(); // _ZN6S778C43v20Ev
  virtual void  v21(); // _ZN6S778C43v21Ev
  virtual void  v22(); // _ZN6S778C43v22Ev
  virtual void  v23(); // _ZN6S778C43v23Ev
  virtual void  v24(); // _ZN6S778C43v24Ev
  virtual void  v25(); // _ZN6S778C43v25Ev
  virtual void  v26(); // _ZN6S778C43v26Ev
  virtual void  v27(); // _ZN6S778C43v27Ev
  virtual void  v28(); // _ZN6S778C43v28Ev
  virtual void  v29(); // _ZN6S778C43v29Ev
  virtual void  v30(); // _ZN6S778C43v30Ev
  virtual void  v31(); // _ZN6S778C43v31Ev
  virtual void  v32(); // _ZN6S778C43v32Ev
  virtual void  v33(); // _ZN6S778C43v33Ev
  virtual void  v34(); // _ZN6S778C43v34Ev
  virtual void  v35(); // _ZN6S778C43v35Ev
  virtual void  v36(); // _ZN6S778C43v36Ev
  virtual void  v37(); // _ZN6S778C43v37Ev
  virtual void  v38(); // _ZN6S778C43v38Ev
  virtual void  v39(); // _ZN6S778C43v39Ev
  virtual void  v40(); // _ZN6S778C43v40Ev
  virtual void  v41(); // _ZN6S778C43v41Ev
  virtual void  v42(); // _ZN6S778C43v42Ev
  virtual void  v43(); // _ZN6S778C43v43Ev
  virtual void  v44(); // _ZN6S778C43v44Ev
  virtual void  v45(); // _ZN6S778C43v45Ev
  virtual void  v46(); // _ZN6S778C43v46Ev
  virtual void  v47(); // _ZN6S778C43v47Ev
  virtual void  v48(); // _ZN6S778C43v48Ev
  virtual void  v49(); // _ZN6S778C43v49Ev
  virtual void  v50(); // _ZN6S778C43v50Ev
  virtual void  v51(); // _ZN6S778C43v51Ev
  virtual void  v52(); // _ZN6S778C43v52Ev
  virtual void  v53(); // _ZN6S778C43v53Ev
  virtual void  v54(); // _ZN6S778C43v54Ev
  virtual void  v55(); // _ZN6S778C43v55Ev
  virtual void  v56(); // _ZN6S778C43v56Ev
  virtual void  v57(); // _ZN6S778C43v57Ev
  virtual void  v58(); // _ZN6S778C43v58Ev
  virtual void  v59(); // _ZN6S778C43v59Ev
  virtual void  v60(); // _ZN6S778C43v60Ev
  virtual void  v61(); // _ZN6S778C43v61Ev
  virtual void  v62(); // _ZN6S778C43v62Ev
  virtual void  v63(); // _ZN6S778C43v63Ev
  virtual void  v64(); // _ZN6S778C43v64Ev
  virtual void  v65(); // _ZN6S778C43v65Ev
  virtual void  v66(); // _ZN6S778C43v66Ev
  virtual void  v67(); // _ZN6S778C43v67Ev
  virtual void  v68(); // _ZN6S778C43v68Ev
  virtual void  v69(); // _ZN6S778C43v69Ev
  virtual void  v70(); // _ZN6S778C43v70Ev
  virtual void  v71(); // _ZN6S778C43v71Ev
  virtual void  v72(); // _ZN6S778C43v72Ev
  virtual void  v73(); // _ZN6S778C43v73Ev
  virtual void  v74(); // _ZN6S778C43v74Ev
  virtual void  v75(); // _ZN6S778C43v75Ev
  virtual void  v76(); // _ZN6S778C43v76Ev
  virtual void  v77(); // _ZN6S778C43v77Ev
  virtual void  v78(); // _ZN6S778C43v78Ev
  virtual void  v79(); // _ZN6S778C43v79Ev
  virtual void  v80(); // _ZN6S778C43v80Ev
  virtual void  v81(); // _ZN6S778C43v81Ev
  virtual void  v82(); // _ZN6S778C43v82Ev
  virtual void  v83(); // _ZN6S778C43v83Ev
  virtual void  v84(); // _ZN6S778C43v84Ev
  virtual void  v85(); // _ZN6S778C43v85Ev
  virtual void  v86(); // _ZN6S778C43v86Ev
  virtual void  v87(); // _ZN6S778C43v87Ev
  virtual void  v88(); // _ZN6S778C43v88Ev
  virtual void  v89(); // _ZN6S778C43v89Ev
  virtual void  v90(); // _ZN6S778C43v90Ev
  virtual void  v91(); // _ZN6S778C43v91Ev
  virtual void  v92(); // _ZN6S778C43v92Ev
  virtual void  v93(); // _ZN6S778C43v93Ev
  virtual void  v94(); // _ZN6S778C43v94Ev
  virtual void  v95(); // _ZN6S778C43v95Ev
  virtual void  v96(); // _ZN6S778C43v96Ev
  virtual void  v97(); // _ZN6S778C43v97Ev
  virtual void  v98(); // _ZN6S778C43v98Ev
  virtual void  v99(); // _ZN6S778C43v99Ev
  virtual void  v100(); // _ZN6S778C44v100Ev
  virtual void  v101(); // _ZN6S778C44v101Ev
  virtual void  v102(); // _ZN6S778C44v102Ev
  virtual void  v103(); // _ZN6S778C44v103Ev
  virtual void  v104(); // _ZN6S778C44v104Ev
  virtual void  v105(); // _ZN6S778C44v105Ev
  virtual void  v106(); // _ZN6S778C44v106Ev
  virtual void  v107(); // _ZN6S778C44v107Ev
  virtual void  v108(); // _ZN6S778C44v108Ev
  virtual void  v109(); // _ZN6S778C44v109Ev
  virtual void  v110(); // _ZN6S778C44v110Ev
  virtual void  v111(); // _ZN6S778C44v111Ev
  virtual void  v112(); // _ZN6S778C44v112Ev
  virtual void  v113(); // _ZN6S778C44v113Ev
  virtual void  v114(); // _ZN6S778C44v114Ev
  virtual void  v115(); // _ZN6S778C44v115Ev
  virtual void  v116(); // _ZN6S778C44v116Ev
  virtual void  v117(); // _ZN6S778C44v117Ev
  virtual void  v118(); // _ZN6S778C44v118Ev
  virtual void  v119(); // _ZN6S778C44v119Ev
  virtual void  v120(); // _ZN6S778C44v120Ev
  virtual void  v121(); // _ZN6S778C44v121Ev
  virtual void  v122(); // _ZN6S778C44v122Ev
  virtual void  v123(); // _ZN6S778C44v123Ev
  virtual void  v124(); // _ZN6S778C44v124Ev
  virtual void  v125(); // _ZN6S778C44v125Ev
  virtual void  v126(); // _ZN6S778C44v126Ev
  virtual void  v127(); // _ZN6S778C44v127Ev
  virtual void  v128(); // _ZN6S778C44v128Ev
  virtual void  v129(); // _ZN6S778C44v129Ev
  virtual void  v130(); // _ZN6S778C44v130Ev
  virtual void  v131(); // _ZN6S778C44v131Ev
  virtual void  v132(); // _ZN6S778C44v132Ev
  virtual void  v133(); // _ZN6S778C44v133Ev
  ~S778C4(); // tgen
  S778C4(); // tgen
};
//SIG(-1 S778C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S778C4 ::v12(){vfunc_called(this, "_ZN6S778C43v12Ev");}
void  S778C4 ::v13(){vfunc_called(this, "_ZN6S778C43v13Ev");}
void  S778C4 ::v14(){vfunc_called(this, "_ZN6S778C43v14Ev");}
void  S778C4 ::v15(){vfunc_called(this, "_ZN6S778C43v15Ev");}
void  S778C4 ::v16(){vfunc_called(this, "_ZN6S778C43v16Ev");}
void  S778C4 ::v17(){vfunc_called(this, "_ZN6S778C43v17Ev");}
void  S778C4 ::v18(){vfunc_called(this, "_ZN6S778C43v18Ev");}
void  S778C4 ::v19(){vfunc_called(this, "_ZN6S778C43v19Ev");}
void  S778C4 ::v20(){vfunc_called(this, "_ZN6S778C43v20Ev");}
void  S778C4 ::v21(){vfunc_called(this, "_ZN6S778C43v21Ev");}
void  S778C4 ::v22(){vfunc_called(this, "_ZN6S778C43v22Ev");}
void  S778C4 ::v23(){vfunc_called(this, "_ZN6S778C43v23Ev");}
void  S778C4 ::v24(){vfunc_called(this, "_ZN6S778C43v24Ev");}
void  S778C4 ::v25(){vfunc_called(this, "_ZN6S778C43v25Ev");}
void  S778C4 ::v26(){vfunc_called(this, "_ZN6S778C43v26Ev");}
void  S778C4 ::v27(){vfunc_called(this, "_ZN6S778C43v27Ev");}
void  S778C4 ::v28(){vfunc_called(this, "_ZN6S778C43v28Ev");}
void  S778C4 ::v29(){vfunc_called(this, "_ZN6S778C43v29Ev");}
void  S778C4 ::v30(){vfunc_called(this, "_ZN6S778C43v30Ev");}
void  S778C4 ::v31(){vfunc_called(this, "_ZN6S778C43v31Ev");}
void  S778C4 ::v32(){vfunc_called(this, "_ZN6S778C43v32Ev");}
void  S778C4 ::v33(){vfunc_called(this, "_ZN6S778C43v33Ev");}
void  S778C4 ::v34(){vfunc_called(this, "_ZN6S778C43v34Ev");}
void  S778C4 ::v35(){vfunc_called(this, "_ZN6S778C43v35Ev");}
void  S778C4 ::v36(){vfunc_called(this, "_ZN6S778C43v36Ev");}
void  S778C4 ::v37(){vfunc_called(this, "_ZN6S778C43v37Ev");}
void  S778C4 ::v38(){vfunc_called(this, "_ZN6S778C43v38Ev");}
void  S778C4 ::v39(){vfunc_called(this, "_ZN6S778C43v39Ev");}
void  S778C4 ::v40(){vfunc_called(this, "_ZN6S778C43v40Ev");}
void  S778C4 ::v41(){vfunc_called(this, "_ZN6S778C43v41Ev");}
void  S778C4 ::v42(){vfunc_called(this, "_ZN6S778C43v42Ev");}
void  S778C4 ::v43(){vfunc_called(this, "_ZN6S778C43v43Ev");}
void  S778C4 ::v44(){vfunc_called(this, "_ZN6S778C43v44Ev");}
void  S778C4 ::v45(){vfunc_called(this, "_ZN6S778C43v45Ev");}
void  S778C4 ::v46(){vfunc_called(this, "_ZN6S778C43v46Ev");}
void  S778C4 ::v47(){vfunc_called(this, "_ZN6S778C43v47Ev");}
void  S778C4 ::v48(){vfunc_called(this, "_ZN6S778C43v48Ev");}
void  S778C4 ::v49(){vfunc_called(this, "_ZN6S778C43v49Ev");}
void  S778C4 ::v50(){vfunc_called(this, "_ZN6S778C43v50Ev");}
void  S778C4 ::v51(){vfunc_called(this, "_ZN6S778C43v51Ev");}
void  S778C4 ::v52(){vfunc_called(this, "_ZN6S778C43v52Ev");}
void  S778C4 ::v53(){vfunc_called(this, "_ZN6S778C43v53Ev");}
void  S778C4 ::v54(){vfunc_called(this, "_ZN6S778C43v54Ev");}
void  S778C4 ::v55(){vfunc_called(this, "_ZN6S778C43v55Ev");}
void  S778C4 ::v56(){vfunc_called(this, "_ZN6S778C43v56Ev");}
void  S778C4 ::v57(){vfunc_called(this, "_ZN6S778C43v57Ev");}
void  S778C4 ::v58(){vfunc_called(this, "_ZN6S778C43v58Ev");}
void  S778C4 ::v59(){vfunc_called(this, "_ZN6S778C43v59Ev");}
void  S778C4 ::v60(){vfunc_called(this, "_ZN6S778C43v60Ev");}
void  S778C4 ::v61(){vfunc_called(this, "_ZN6S778C43v61Ev");}
void  S778C4 ::v62(){vfunc_called(this, "_ZN6S778C43v62Ev");}
void  S778C4 ::v63(){vfunc_called(this, "_ZN6S778C43v63Ev");}
void  S778C4 ::v64(){vfunc_called(this, "_ZN6S778C43v64Ev");}
void  S778C4 ::v65(){vfunc_called(this, "_ZN6S778C43v65Ev");}
void  S778C4 ::v66(){vfunc_called(this, "_ZN6S778C43v66Ev");}
void  S778C4 ::v67(){vfunc_called(this, "_ZN6S778C43v67Ev");}
void  S778C4 ::v68(){vfunc_called(this, "_ZN6S778C43v68Ev");}
void  S778C4 ::v69(){vfunc_called(this, "_ZN6S778C43v69Ev");}
void  S778C4 ::v70(){vfunc_called(this, "_ZN6S778C43v70Ev");}
void  S778C4 ::v71(){vfunc_called(this, "_ZN6S778C43v71Ev");}
void  S778C4 ::v72(){vfunc_called(this, "_ZN6S778C43v72Ev");}
void  S778C4 ::v73(){vfunc_called(this, "_ZN6S778C43v73Ev");}
void  S778C4 ::v74(){vfunc_called(this, "_ZN6S778C43v74Ev");}
void  S778C4 ::v75(){vfunc_called(this, "_ZN6S778C43v75Ev");}
void  S778C4 ::v76(){vfunc_called(this, "_ZN6S778C43v76Ev");}
void  S778C4 ::v77(){vfunc_called(this, "_ZN6S778C43v77Ev");}
void  S778C4 ::v78(){vfunc_called(this, "_ZN6S778C43v78Ev");}
void  S778C4 ::v79(){vfunc_called(this, "_ZN6S778C43v79Ev");}
void  S778C4 ::v80(){vfunc_called(this, "_ZN6S778C43v80Ev");}
void  S778C4 ::v81(){vfunc_called(this, "_ZN6S778C43v81Ev");}
void  S778C4 ::v82(){vfunc_called(this, "_ZN6S778C43v82Ev");}
void  S778C4 ::v83(){vfunc_called(this, "_ZN6S778C43v83Ev");}
void  S778C4 ::v84(){vfunc_called(this, "_ZN6S778C43v84Ev");}
void  S778C4 ::v85(){vfunc_called(this, "_ZN6S778C43v85Ev");}
void  S778C4 ::v86(){vfunc_called(this, "_ZN6S778C43v86Ev");}
void  S778C4 ::v87(){vfunc_called(this, "_ZN6S778C43v87Ev");}
void  S778C4 ::v88(){vfunc_called(this, "_ZN6S778C43v88Ev");}
void  S778C4 ::v89(){vfunc_called(this, "_ZN6S778C43v89Ev");}
void  S778C4 ::v90(){vfunc_called(this, "_ZN6S778C43v90Ev");}
void  S778C4 ::v91(){vfunc_called(this, "_ZN6S778C43v91Ev");}
void  S778C4 ::v92(){vfunc_called(this, "_ZN6S778C43v92Ev");}
void  S778C4 ::v93(){vfunc_called(this, "_ZN6S778C43v93Ev");}
void  S778C4 ::v94(){vfunc_called(this, "_ZN6S778C43v94Ev");}
void  S778C4 ::v95(){vfunc_called(this, "_ZN6S778C43v95Ev");}
void  S778C4 ::v96(){vfunc_called(this, "_ZN6S778C43v96Ev");}
void  S778C4 ::v97(){vfunc_called(this, "_ZN6S778C43v97Ev");}
void  S778C4 ::v98(){vfunc_called(this, "_ZN6S778C43v98Ev");}
void  S778C4 ::v99(){vfunc_called(this, "_ZN6S778C43v99Ev");}
void  S778C4 ::v100(){vfunc_called(this, "_ZN6S778C44v100Ev");}
void  S778C4 ::v101(){vfunc_called(this, "_ZN6S778C44v101Ev");}
void  S778C4 ::v102(){vfunc_called(this, "_ZN6S778C44v102Ev");}
void  S778C4 ::v103(){vfunc_called(this, "_ZN6S778C44v103Ev");}
void  S778C4 ::v104(){vfunc_called(this, "_ZN6S778C44v104Ev");}
void  S778C4 ::v105(){vfunc_called(this, "_ZN6S778C44v105Ev");}
void  S778C4 ::v106(){vfunc_called(this, "_ZN6S778C44v106Ev");}
void  S778C4 ::v107(){vfunc_called(this, "_ZN6S778C44v107Ev");}
void  S778C4 ::v108(){vfunc_called(this, "_ZN6S778C44v108Ev");}
void  S778C4 ::v109(){vfunc_called(this, "_ZN6S778C44v109Ev");}
void  S778C4 ::v110(){vfunc_called(this, "_ZN6S778C44v110Ev");}
void  S778C4 ::v111(){vfunc_called(this, "_ZN6S778C44v111Ev");}
void  S778C4 ::v112(){vfunc_called(this, "_ZN6S778C44v112Ev");}
void  S778C4 ::v113(){vfunc_called(this, "_ZN6S778C44v113Ev");}
void  S778C4 ::v114(){vfunc_called(this, "_ZN6S778C44v114Ev");}
void  S778C4 ::v115(){vfunc_called(this, "_ZN6S778C44v115Ev");}
void  S778C4 ::v116(){vfunc_called(this, "_ZN6S778C44v116Ev");}
void  S778C4 ::v117(){vfunc_called(this, "_ZN6S778C44v117Ev");}
void  S778C4 ::v118(){vfunc_called(this, "_ZN6S778C44v118Ev");}
void  S778C4 ::v119(){vfunc_called(this, "_ZN6S778C44v119Ev");}
void  S778C4 ::v120(){vfunc_called(this, "_ZN6S778C44v120Ev");}
void  S778C4 ::v121(){vfunc_called(this, "_ZN6S778C44v121Ev");}
void  S778C4 ::v122(){vfunc_called(this, "_ZN6S778C44v122Ev");}
void  S778C4 ::v123(){vfunc_called(this, "_ZN6S778C44v123Ev");}
void  S778C4 ::v124(){vfunc_called(this, "_ZN6S778C44v124Ev");}
void  S778C4 ::v125(){vfunc_called(this, "_ZN6S778C44v125Ev");}
void  S778C4 ::v126(){vfunc_called(this, "_ZN6S778C44v126Ev");}
void  S778C4 ::v127(){vfunc_called(this, "_ZN6S778C44v127Ev");}
void  S778C4 ::v128(){vfunc_called(this, "_ZN6S778C44v128Ev");}
void  S778C4 ::v129(){vfunc_called(this, "_ZN6S778C44v129Ev");}
void  S778C4 ::v130(){vfunc_called(this, "_ZN6S778C44v130Ev");}
void  S778C4 ::v131(){vfunc_called(this, "_ZN6S778C44v131Ev");}
void  S778C4 ::v132(){vfunc_called(this, "_ZN6S778C44v132Ev");}
void  S778C4 ::v133(){vfunc_called(this, "_ZN6S778C44v133Ev");}
S778C4 ::~S778C4(){ note_dtor("S778C4", this);} // tgen
S778C4 ::S778C4(){ note_ctor("S778C4", this);} // tgen

static void Test_S778C4()
{
  extern Class_Descriptor cd_S778C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S778C4, buf);
    S778C4 *dp, &lv = *(dp=new (buf) S778C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S778C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S778C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S778C4");
    test_class_info(&lv, &cd_S778C4);
    dp->~S778C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS778C4(Test_S778C4, "S778C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S778C4C1Ev();
extern void _ZN6S778C4D1Ev();
Name_Map name_map_S778C4[] = {
  NSPAIR(_ZN6S778C4C1Ev),
  NSPAIR(_ZN6S778C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S778C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S778C4[];
extern void _ZN6S778C4D1Ev();
extern void _ZN6S778C4D0Ev();
extern void _ZN6S778C43v12Ev();
extern void _ZN6S778C43v13Ev();
extern void _ZN6S778C43v14Ev();
extern void _ZN6S778C43v15Ev();
extern void _ZN6S778C43v16Ev();
extern void _ZN6S778C43v17Ev();
extern void _ZN6S778C43v18Ev();
extern void _ZN6S778C43v19Ev();
extern void _ZN6S778C43v20Ev();
extern void _ZN6S778C43v21Ev();
extern void _ZN6S778C43v22Ev();
extern void _ZN6S778C43v23Ev();
extern void _ZN6S778C43v24Ev();
extern void _ZN6S778C43v25Ev();
extern void _ZN6S778C43v26Ev();
extern void _ZN6S778C43v27Ev();
extern void _ZN6S778C43v28Ev();
extern void _ZN6S778C43v29Ev();
extern void _ZN6S778C43v30Ev();
extern void _ZN6S778C43v31Ev();
extern void _ZN6S778C43v32Ev();
extern void _ZN6S778C43v33Ev();
extern void _ZN6S778C43v34Ev();
extern void _ZN6S778C43v35Ev();
extern void _ZN6S778C43v36Ev();
extern void _ZN6S778C43v37Ev();
extern void _ZN6S778C43v38Ev();
extern void _ZN6S778C43v39Ev();
extern void _ZN6S778C43v40Ev();
extern void _ZN6S778C43v41Ev();
extern void _ZN6S778C43v42Ev();
extern void _ZN6S778C43v43Ev();
extern void _ZN6S778C43v44Ev();
extern void _ZN6S778C43v45Ev();
extern void _ZN6S778C43v46Ev();
extern void _ZN6S778C43v47Ev();
extern void _ZN6S778C43v48Ev();
extern void _ZN6S778C43v49Ev();
extern void _ZN6S778C43v50Ev();
extern void _ZN6S778C43v51Ev();
extern void _ZN6S778C43v52Ev();
extern void _ZN6S778C43v53Ev();
extern void _ZN6S778C43v54Ev();
extern void _ZN6S778C43v55Ev();
extern void _ZN6S778C43v56Ev();
extern void _ZN6S778C43v57Ev();
extern void _ZN6S778C43v58Ev();
extern void _ZN6S778C43v59Ev();
extern void _ZN6S778C43v60Ev();
extern void _ZN6S778C43v61Ev();
extern void _ZN6S778C43v62Ev();
extern void _ZN6S778C43v63Ev();
extern void _ZN6S778C43v64Ev();
extern void _ZN6S778C43v65Ev();
extern void _ZN6S778C43v66Ev();
extern void _ZN6S778C43v67Ev();
extern void _ZN6S778C43v68Ev();
extern void _ZN6S778C43v69Ev();
extern void _ZN6S778C43v70Ev();
extern void _ZN6S778C43v71Ev();
extern void _ZN6S778C43v72Ev();
extern void _ZN6S778C43v73Ev();
extern void _ZN6S778C43v74Ev();
extern void _ZN6S778C43v75Ev();
extern void _ZN6S778C43v76Ev();
extern void _ZN6S778C43v77Ev();
extern void _ZN6S778C43v78Ev();
extern void _ZN6S778C43v79Ev();
extern void _ZN6S778C43v80Ev();
extern void _ZN6S778C43v81Ev();
extern void _ZN6S778C43v82Ev();
extern void _ZN6S778C43v83Ev();
extern void _ZN6S778C43v84Ev();
extern void _ZN6S778C43v85Ev();
extern void _ZN6S778C43v86Ev();
extern void _ZN6S778C43v87Ev();
extern void _ZN6S778C43v88Ev();
extern void _ZN6S778C43v89Ev();
extern void _ZN6S778C43v90Ev();
extern void _ZN6S778C43v91Ev();
extern void _ZN6S778C43v92Ev();
extern void _ZN6S778C43v93Ev();
extern void _ZN6S778C43v94Ev();
extern void _ZN6S778C43v95Ev();
extern void _ZN6S778C43v96Ev();
extern void _ZN6S778C43v97Ev();
extern void _ZN6S778C43v98Ev();
extern void _ZN6S778C43v99Ev();
extern void _ZN6S778C44v100Ev();
extern void _ZN6S778C44v101Ev();
extern void _ZN6S778C44v102Ev();
extern void _ZN6S778C44v103Ev();
extern void _ZN6S778C44v104Ev();
extern void _ZN6S778C44v105Ev();
extern void _ZN6S778C44v106Ev();
extern void _ZN6S778C44v107Ev();
extern void _ZN6S778C44v108Ev();
extern void _ZN6S778C44v109Ev();
extern void _ZN6S778C44v110Ev();
extern void _ZN6S778C44v111Ev();
extern void _ZN6S778C44v112Ev();
extern void _ZN6S778C44v113Ev();
extern void _ZN6S778C44v114Ev();
extern void _ZN6S778C44v115Ev();
extern void _ZN6S778C44v116Ev();
extern void _ZN6S778C44v117Ev();
extern void _ZN6S778C44v118Ev();
extern void _ZN6S778C44v119Ev();
extern void _ZN6S778C44v120Ev();
extern void _ZN6S778C44v121Ev();
extern void _ZN6S778C44v122Ev();
extern void _ZN6S778C44v123Ev();
extern void _ZN6S778C44v124Ev();
extern void _ZN6S778C44v125Ev();
extern void _ZN6S778C44v126Ev();
extern void _ZN6S778C44v127Ev();
extern void _ZN6S778C44v128Ev();
extern void _ZN6S778C44v129Ev();
extern void _ZN6S778C44v130Ev();
extern void _ZN6S778C44v131Ev();
extern void _ZN6S778C44v132Ev();
extern void _ZN6S778C44v133Ev();
static  VTBL_ENTRY vtc_S778C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S778C4[0]),
  (VTBL_ENTRY)&_ZN6S778C4D1Ev,
  (VTBL_ENTRY)&_ZN6S778C4D0Ev,
  (VTBL_ENTRY)&_ZN6S778C43v12Ev,
  (VTBL_ENTRY)&_ZN6S778C43v13Ev,
  (VTBL_ENTRY)&_ZN6S778C43v14Ev,
  (VTBL_ENTRY)&_ZN6S778C43v15Ev,
  (VTBL_ENTRY)&_ZN6S778C43v16Ev,
  (VTBL_ENTRY)&_ZN6S778C43v17Ev,
  (VTBL_ENTRY)&_ZN6S778C43v18Ev,
  (VTBL_ENTRY)&_ZN6S778C43v19Ev,
  (VTBL_ENTRY)&_ZN6S778C43v20Ev,
  (VTBL_ENTRY)&_ZN6S778C43v21Ev,
  (VTBL_ENTRY)&_ZN6S778C43v22Ev,
  (VTBL_ENTRY)&_ZN6S778C43v23Ev,
  (VTBL_ENTRY)&_ZN6S778C43v24Ev,
  (VTBL_ENTRY)&_ZN6S778C43v25Ev,
  (VTBL_ENTRY)&_ZN6S778C43v26Ev,
  (VTBL_ENTRY)&_ZN6S778C43v27Ev,
  (VTBL_ENTRY)&_ZN6S778C43v28Ev,
  (VTBL_ENTRY)&_ZN6S778C43v29Ev,
  (VTBL_ENTRY)&_ZN6S778C43v30Ev,
  (VTBL_ENTRY)&_ZN6S778C43v31Ev,
  (VTBL_ENTRY)&_ZN6S778C43v32Ev,
  (VTBL_ENTRY)&_ZN6S778C43v33Ev,
  (VTBL_ENTRY)&_ZN6S778C43v34Ev,
  (VTBL_ENTRY)&_ZN6S778C43v35Ev,
  (VTBL_ENTRY)&_ZN6S778C43v36Ev,
  (VTBL_ENTRY)&_ZN6S778C43v37Ev,
  (VTBL_ENTRY)&_ZN6S778C43v38Ev,
  (VTBL_ENTRY)&_ZN6S778C43v39Ev,
  (VTBL_ENTRY)&_ZN6S778C43v40Ev,
  (VTBL_ENTRY)&_ZN6S778C43v41Ev,
  (VTBL_ENTRY)&_ZN6S778C43v42Ev,
  (VTBL_ENTRY)&_ZN6S778C43v43Ev,
  (VTBL_ENTRY)&_ZN6S778C43v44Ev,
  (VTBL_ENTRY)&_ZN6S778C43v45Ev,
  (VTBL_ENTRY)&_ZN6S778C43v46Ev,
  (VTBL_ENTRY)&_ZN6S778C43v47Ev,
  (VTBL_ENTRY)&_ZN6S778C43v48Ev,
  (VTBL_ENTRY)&_ZN6S778C43v49Ev,
  (VTBL_ENTRY)&_ZN6S778C43v50Ev,
  (VTBL_ENTRY)&_ZN6S778C43v51Ev,
  (VTBL_ENTRY)&_ZN6S778C43v52Ev,
  (VTBL_ENTRY)&_ZN6S778C43v53Ev,
  (VTBL_ENTRY)&_ZN6S778C43v54Ev,
  (VTBL_ENTRY)&_ZN6S778C43v55Ev,
  (VTBL_ENTRY)&_ZN6S778C43v56Ev,
  (VTBL_ENTRY)&_ZN6S778C43v57Ev,
  (VTBL_ENTRY)&_ZN6S778C43v58Ev,
  (VTBL_ENTRY)&_ZN6S778C43v59Ev,
  (VTBL_ENTRY)&_ZN6S778C43v60Ev,
  (VTBL_ENTRY)&_ZN6S778C43v61Ev,
  (VTBL_ENTRY)&_ZN6S778C43v62Ev,
  (VTBL_ENTRY)&_ZN6S778C43v63Ev,
  (VTBL_ENTRY)&_ZN6S778C43v64Ev,
  (VTBL_ENTRY)&_ZN6S778C43v65Ev,
  (VTBL_ENTRY)&_ZN6S778C43v66Ev,
  (VTBL_ENTRY)&_ZN6S778C43v67Ev,
  (VTBL_ENTRY)&_ZN6S778C43v68Ev,
  (VTBL_ENTRY)&_ZN6S778C43v69Ev,
  (VTBL_ENTRY)&_ZN6S778C43v70Ev,
  (VTBL_ENTRY)&_ZN6S778C43v71Ev,
  (VTBL_ENTRY)&_ZN6S778C43v72Ev,
  (VTBL_ENTRY)&_ZN6S778C43v73Ev,
  (VTBL_ENTRY)&_ZN6S778C43v74Ev,
  (VTBL_ENTRY)&_ZN6S778C43v75Ev,
  (VTBL_ENTRY)&_ZN6S778C43v76Ev,
  (VTBL_ENTRY)&_ZN6S778C43v77Ev,
  (VTBL_ENTRY)&_ZN6S778C43v78Ev,
  (VTBL_ENTRY)&_ZN6S778C43v79Ev,
  (VTBL_ENTRY)&_ZN6S778C43v80Ev,
  (VTBL_ENTRY)&_ZN6S778C43v81Ev,
  (VTBL_ENTRY)&_ZN6S778C43v82Ev,
  (VTBL_ENTRY)&_ZN6S778C43v83Ev,
  (VTBL_ENTRY)&_ZN6S778C43v84Ev,
  (VTBL_ENTRY)&_ZN6S778C43v85Ev,
  (VTBL_ENTRY)&_ZN6S778C43v86Ev,
  (VTBL_ENTRY)&_ZN6S778C43v87Ev,
  (VTBL_ENTRY)&_ZN6S778C43v88Ev,
  (VTBL_ENTRY)&_ZN6S778C43v89Ev,
  (VTBL_ENTRY)&_ZN6S778C43v90Ev,
  (VTBL_ENTRY)&_ZN6S778C43v91Ev,
  (VTBL_ENTRY)&_ZN6S778C43v92Ev,
  (VTBL_ENTRY)&_ZN6S778C43v93Ev,
  (VTBL_ENTRY)&_ZN6S778C43v94Ev,
  (VTBL_ENTRY)&_ZN6S778C43v95Ev,
  (VTBL_ENTRY)&_ZN6S778C43v96Ev,
  (VTBL_ENTRY)&_ZN6S778C43v97Ev,
  (VTBL_ENTRY)&_ZN6S778C43v98Ev,
  (VTBL_ENTRY)&_ZN6S778C43v99Ev,
  (VTBL_ENTRY)&_ZN6S778C44v100Ev,
  (VTBL_ENTRY)&_ZN6S778C44v101Ev,
  (VTBL_ENTRY)&_ZN6S778C44v102Ev,
  (VTBL_ENTRY)&_ZN6S778C44v103Ev,
  (VTBL_ENTRY)&_ZN6S778C44v104Ev,
  (VTBL_ENTRY)&_ZN6S778C44v105Ev,
  (VTBL_ENTRY)&_ZN6S778C44v106Ev,
  (VTBL_ENTRY)&_ZN6S778C44v107Ev,
  (VTBL_ENTRY)&_ZN6S778C44v108Ev,
  (VTBL_ENTRY)&_ZN6S778C44v109Ev,
  (VTBL_ENTRY)&_ZN6S778C44v110Ev,
  (VTBL_ENTRY)&_ZN6S778C44v111Ev,
  (VTBL_ENTRY)&_ZN6S778C44v112Ev,
  (VTBL_ENTRY)&_ZN6S778C44v113Ev,
  (VTBL_ENTRY)&_ZN6S778C44v114Ev,
  (VTBL_ENTRY)&_ZN6S778C44v115Ev,
  (VTBL_ENTRY)&_ZN6S778C44v116Ev,
  (VTBL_ENTRY)&_ZN6S778C44v117Ev,
  (VTBL_ENTRY)&_ZN6S778C44v118Ev,
  (VTBL_ENTRY)&_ZN6S778C44v119Ev,
  (VTBL_ENTRY)&_ZN6S778C44v120Ev,
  (VTBL_ENTRY)&_ZN6S778C44v121Ev,
  (VTBL_ENTRY)&_ZN6S778C44v122Ev,
  (VTBL_ENTRY)&_ZN6S778C44v123Ev,
  (VTBL_ENTRY)&_ZN6S778C44v124Ev,
  (VTBL_ENTRY)&_ZN6S778C44v125Ev,
  (VTBL_ENTRY)&_ZN6S778C44v126Ev,
  (VTBL_ENTRY)&_ZN6S778C44v127Ev,
  (VTBL_ENTRY)&_ZN6S778C44v128Ev,
  (VTBL_ENTRY)&_ZN6S778C44v129Ev,
  (VTBL_ENTRY)&_ZN6S778C44v130Ev,
  (VTBL_ENTRY)&_ZN6S778C44v131Ev,
  (VTBL_ENTRY)&_ZN6S778C44v132Ev,
  (VTBL_ENTRY)&_ZN6S778C44v133Ev,
};
extern VTBL_ENTRY _ZTI6S778C4[];
extern  VTBL_ENTRY _ZTV6S778C4[];
Class_Descriptor cd_S778C4 = {  "S778C4", // class name
  bases_S778C4, 1,
  &(vtc_S778C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S778C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S778C4),126, //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  S778C3  : S778C4 {
  virtual void  v134(); // _ZN6S778C34v134Ev
  virtual void  v135(); // _ZN6S778C34v135Ev
  virtual void  v136(); // _ZN6S778C34v136Ev
  virtual void  v137(); // _ZN6S778C34v137Ev
  virtual void  v138(); // _ZN6S778C34v138Ev
  virtual void  v139(); // _ZN6S778C34v139Ev
  virtual void  v140(); // _ZN6S778C34v140Ev
  virtual void  v141(); // _ZN6S778C34v141Ev
  virtual void  v142(); // _ZN6S778C34v142Ev
  virtual void  v143(); // _ZN6S778C34v143Ev
  virtual void  v144(); // _ZN6S778C34v144Ev
  virtual void  v145(); // _ZN6S778C34v145Ev
  virtual void  v146(); // _ZN6S778C34v146Ev
  virtual void  v147(); // _ZN6S778C34v147Ev
  virtual void  v148(); // _ZN6S778C34v148Ev
  virtual void  v149(); // _ZN6S778C34v149Ev
  virtual void  v150(); // _ZN6S778C34v150Ev
  virtual void  v151(); // _ZN6S778C34v151Ev
  ~S778C3(); // tgen
  S778C3(); // tgen
};
//SIG(-1 S778C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S778C3 ::v134(){vfunc_called(this, "_ZN6S778C34v134Ev");}
void  S778C3 ::v135(){vfunc_called(this, "_ZN6S778C34v135Ev");}
void  S778C3 ::v136(){vfunc_called(this, "_ZN6S778C34v136Ev");}
void  S778C3 ::v137(){vfunc_called(this, "_ZN6S778C34v137Ev");}
void  S778C3 ::v138(){vfunc_called(this, "_ZN6S778C34v138Ev");}
void  S778C3 ::v139(){vfunc_called(this, "_ZN6S778C34v139Ev");}
void  S778C3 ::v140(){vfunc_called(this, "_ZN6S778C34v140Ev");}
void  S778C3 ::v141(){vfunc_called(this, "_ZN6S778C34v141Ev");}
void  S778C3 ::v142(){vfunc_called(this, "_ZN6S778C34v142Ev");}
void  S778C3 ::v143(){vfunc_called(this, "_ZN6S778C34v143Ev");}
void  S778C3 ::v144(){vfunc_called(this, "_ZN6S778C34v144Ev");}
void  S778C3 ::v145(){vfunc_called(this, "_ZN6S778C34v145Ev");}
void  S778C3 ::v146(){vfunc_called(this, "_ZN6S778C34v146Ev");}
void  S778C3 ::v147(){vfunc_called(this, "_ZN6S778C34v147Ev");}
void  S778C3 ::v148(){vfunc_called(this, "_ZN6S778C34v148Ev");}
void  S778C3 ::v149(){vfunc_called(this, "_ZN6S778C34v149Ev");}
void  S778C3 ::v150(){vfunc_called(this, "_ZN6S778C34v150Ev");}
void  S778C3 ::v151(){vfunc_called(this, "_ZN6S778C34v151Ev");}
S778C3 ::~S778C3(){ note_dtor("S778C3", this);} // tgen
S778C3 ::S778C3(){ note_ctor("S778C3", this);} // tgen

static void Test_S778C3()
{
  extern Class_Descriptor cd_S778C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S778C3, buf);
    S778C3 *dp, &lv = *(dp=new (buf) S778C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S778C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S778C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S778C4*), 0, "S778C3");
    check_base_class_offset(lv, (S778C4*), 0, "S778C3");
    test_class_info(&lv, &cd_S778C3);
    dp->~S778C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS778C3(Test_S778C3, "S778C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S778C3C1Ev();
extern void _ZN6S778C3D1Ev();
Name_Map name_map_S778C3[] = {
  NSPAIR(_ZN6S778C3C1Ev),
  NSPAIR(_ZN6S778C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S778C4;
extern VTBL_ENTRY _ZTI6S778C4[];
extern  VTBL_ENTRY _ZTV6S778C4[];
static Base_Class bases_S778C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S778C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S778C3[];
extern void _ZN6S778C3D1Ev();
extern void _ZN6S778C3D0Ev();
extern void _ZN6S778C43v12Ev();
extern void _ZN6S778C43v13Ev();
extern void _ZN6S778C43v14Ev();
extern void _ZN6S778C43v15Ev();
extern void _ZN6S778C43v16Ev();
extern void _ZN6S778C43v17Ev();
extern void _ZN6S778C43v18Ev();
extern void _ZN6S778C43v19Ev();
extern void _ZN6S778C43v20Ev();
extern void _ZN6S778C43v21Ev();
extern void _ZN6S778C43v22Ev();
extern void _ZN6S778C43v23Ev();
extern void _ZN6S778C43v24Ev();
extern void _ZN6S778C43v25Ev();
extern void _ZN6S778C43v26Ev();
extern void _ZN6S778C43v27Ev();
extern void _ZN6S778C43v28Ev();
extern void _ZN6S778C43v29Ev();
extern void _ZN6S778C43v30Ev();
extern void _ZN6S778C43v31Ev();
extern void _ZN6S778C43v32Ev();
extern void _ZN6S778C43v33Ev();
extern void _ZN6S778C43v34Ev();
extern void _ZN6S778C43v35Ev();
extern void _ZN6S778C43v36Ev();
extern void _ZN6S778C43v37Ev();
extern void _ZN6S778C43v38Ev();
extern void _ZN6S778C43v39Ev();
extern void _ZN6S778C43v40Ev();
extern void _ZN6S778C43v41Ev();
extern void _ZN6S778C43v42Ev();
extern void _ZN6S778C43v43Ev();
extern void _ZN6S778C43v44Ev();
extern void _ZN6S778C43v45Ev();
extern void _ZN6S778C43v46Ev();
extern void _ZN6S778C43v47Ev();
extern void _ZN6S778C43v48Ev();
extern void _ZN6S778C43v49Ev();
extern void _ZN6S778C43v50Ev();
extern void _ZN6S778C43v51Ev();
extern void _ZN6S778C43v52Ev();
extern void _ZN6S778C43v53Ev();
extern void _ZN6S778C43v54Ev();
extern void _ZN6S778C43v55Ev();
extern void _ZN6S778C43v56Ev();
extern void _ZN6S778C43v57Ev();
extern void _ZN6S778C43v58Ev();
extern void _ZN6S778C43v59Ev();
extern void _ZN6S778C43v60Ev();
extern void _ZN6S778C43v61Ev();
extern void _ZN6S778C43v62Ev();
extern void _ZN6S778C43v63Ev();
extern void _ZN6S778C43v64Ev();
extern void _ZN6S778C43v65Ev();
extern void _ZN6S778C43v66Ev();
extern void _ZN6S778C43v67Ev();
extern void _ZN6S778C43v68Ev();
extern void _ZN6S778C43v69Ev();
extern void _ZN6S778C43v70Ev();
extern void _ZN6S778C43v71Ev();
extern void _ZN6S778C43v72Ev();
extern void _ZN6S778C43v73Ev();
extern void _ZN6S778C43v74Ev();
extern void _ZN6S778C43v75Ev();
extern void _ZN6S778C43v76Ev();
extern void _ZN6S778C43v77Ev();
extern void _ZN6S778C43v78Ev();
extern void _ZN6S778C43v79Ev();
extern void _ZN6S778C43v80Ev();
extern void _ZN6S778C43v81Ev();
extern void _ZN6S778C43v82Ev();
extern void _ZN6S778C43v83Ev();
extern void _ZN6S778C43v84Ev();
extern void _ZN6S778C43v85Ev();
extern void _ZN6S778C43v86Ev();
extern void _ZN6S778C43v87Ev();
extern void _ZN6S778C43v88Ev();
extern void _ZN6S778C43v89Ev();
extern void _ZN6S778C43v90Ev();
extern void _ZN6S778C43v91Ev();
extern void _ZN6S778C43v92Ev();
extern void _ZN6S778C43v93Ev();
extern void _ZN6S778C43v94Ev();
extern void _ZN6S778C43v95Ev();
extern void _ZN6S778C43v96Ev();
extern void _ZN6S778C43v97Ev();
extern void _ZN6S778C43v98Ev();
extern void _ZN6S778C43v99Ev();
extern void _ZN6S778C44v100Ev();
extern void _ZN6S778C44v101Ev();
extern void _ZN6S778C44v102Ev();
extern void _ZN6S778C44v103Ev();
extern void _ZN6S778C44v104Ev();
extern void _ZN6S778C44v105Ev();
extern void _ZN6S778C44v106Ev();
extern void _ZN6S778C44v107Ev();
extern void _ZN6S778C44v108Ev();
extern void _ZN6S778C44v109Ev();
extern void _ZN6S778C44v110Ev();
extern void _ZN6S778C44v111Ev();
extern void _ZN6S778C44v112Ev();
extern void _ZN6S778C44v113Ev();
extern void _ZN6S778C44v114Ev();
extern void _ZN6S778C44v115Ev();
extern void _ZN6S778C44v116Ev();
extern void _ZN6S778C44v117Ev();
extern void _ZN6S778C44v118Ev();
extern void _ZN6S778C44v119Ev();
extern void _ZN6S778C44v120Ev();
extern void _ZN6S778C44v121Ev();
extern void _ZN6S778C44v122Ev();
extern void _ZN6S778C44v123Ev();
extern void _ZN6S778C44v124Ev();
extern void _ZN6S778C44v125Ev();
extern void _ZN6S778C44v126Ev();
extern void _ZN6S778C44v127Ev();
extern void _ZN6S778C44v128Ev();
extern void _ZN6S778C44v129Ev();
extern void _ZN6S778C44v130Ev();
extern void _ZN6S778C44v131Ev();
extern void _ZN6S778C44v132Ev();
extern void _ZN6S778C44v133Ev();
extern void _ZN6S778C34v134Ev();
extern void _ZN6S778C34v135Ev();
extern void _ZN6S778C34v136Ev();
extern void _ZN6S778C34v137Ev();
extern void _ZN6S778C34v138Ev();
extern void _ZN6S778C34v139Ev();
extern void _ZN6S778C34v140Ev();
extern void _ZN6S778C34v141Ev();
extern void _ZN6S778C34v142Ev();
extern void _ZN6S778C34v143Ev();
extern void _ZN6S778C34v144Ev();
extern void _ZN6S778C34v145Ev();
extern void _ZN6S778C34v146Ev();
extern void _ZN6S778C34v147Ev();
extern void _ZN6S778C34v148Ev();
extern void _ZN6S778C34v149Ev();
extern void _ZN6S778C34v150Ev();
extern void _ZN6S778C34v151Ev();
static  VTBL_ENTRY vtc_S778C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S778C3[0]),
  (VTBL_ENTRY)&_ZN6S778C3D1Ev,
  (VTBL_ENTRY)&_ZN6S778C3D0Ev,
  (VTBL_ENTRY)&_ZN6S778C43v12Ev,
  (VTBL_ENTRY)&_ZN6S778C43v13Ev,
  (VTBL_ENTRY)&_ZN6S778C43v14Ev,
  (VTBL_ENTRY)&_ZN6S778C43v15Ev,
  (VTBL_ENTRY)&_ZN6S778C43v16Ev,
  (VTBL_ENTRY)&_ZN6S778C43v17Ev,
  (VTBL_ENTRY)&_ZN6S778C43v18Ev,
  (VTBL_ENTRY)&_ZN6S778C43v19Ev,
  (VTBL_ENTRY)&_ZN6S778C43v20Ev,
  (VTBL_ENTRY)&_ZN6S778C43v21Ev,
  (VTBL_ENTRY)&_ZN6S778C43v22Ev,
  (VTBL_ENTRY)&_ZN6S778C43v23Ev,
  (VTBL_ENTRY)&_ZN6S778C43v24Ev,
  (VTBL_ENTRY)&_ZN6S778C43v25Ev,
  (VTBL_ENTRY)&_ZN6S778C43v26Ev,
  (VTBL_ENTRY)&_ZN6S778C43v27Ev,
  (VTBL_ENTRY)&_ZN6S778C43v28Ev,
  (VTBL_ENTRY)&_ZN6S778C43v29Ev,
  (VTBL_ENTRY)&_ZN6S778C43v30Ev,
  (VTBL_ENTRY)&_ZN6S778C43v31Ev,
  (VTBL_ENTRY)&_ZN6S778C43v32Ev,
  (VTBL_ENTRY)&_ZN6S778C43v33Ev,
  (VTBL_ENTRY)&_ZN6S778C43v34Ev,
  (VTBL_ENTRY)&_ZN6S778C43v35Ev,
  (VTBL_ENTRY)&_ZN6S778C43v36Ev,
  (VTBL_ENTRY)&_ZN6S778C43v37Ev,
  (VTBL_ENTRY)&_ZN6S778C43v38Ev,
  (VTBL_ENTRY)&_ZN6S778C43v39Ev,
  (VTBL_ENTRY)&_ZN6S778C43v40Ev,
  (VTBL_ENTRY)&_ZN6S778C43v41Ev,
  (VTBL_ENTRY)&_ZN6S778C43v42Ev,
  (VTBL_ENTRY)&_ZN6S778C43v43Ev,
  (VTBL_ENTRY)&_ZN6S778C43v44Ev,
  (VTBL_ENTRY)&_ZN6S778C43v45Ev,
  (VTBL_ENTRY)&_ZN6S778C43v46Ev,
  (VTBL_ENTRY)&_ZN6S778C43v47Ev,
  (VTBL_ENTRY)&_ZN6S778C43v48Ev,
  (VTBL_ENTRY)&_ZN6S778C43v49Ev,
  (VTBL_ENTRY)&_ZN6S778C43v50Ev,
  (VTBL_ENTRY)&_ZN6S778C43v51Ev,
  (VTBL_ENTRY)&_ZN6S778C43v52Ev,
  (VTBL_ENTRY)&_ZN6S778C43v53Ev,
  (VTBL_ENTRY)&_ZN6S778C43v54Ev,
  (VTBL_ENTRY)&_ZN6S778C43v55Ev,
  (VTBL_ENTRY)&_ZN6S778C43v56Ev,
  (VTBL_ENTRY)&_ZN6S778C43v57Ev,
  (VTBL_ENTRY)&_ZN6S778C43v58Ev,
  (VTBL_ENTRY)&_ZN6S778C43v59Ev,
  (VTBL_ENTRY)&_ZN6S778C43v60Ev,
  (VTBL_ENTRY)&_ZN6S778C43v61Ev,
  (VTBL_ENTRY)&_ZN6S778C43v62Ev,
  (VTBL_ENTRY)&_ZN6S778C43v63Ev,
  (VTBL_ENTRY)&_ZN6S778C43v64Ev,
  (VTBL_ENTRY)&_ZN6S778C43v65Ev,
  (VTBL_ENTRY)&_ZN6S778C43v66Ev,
  (VTBL_ENTRY)&_ZN6S778C43v67Ev,
  (VTBL_ENTRY)&_ZN6S778C43v68Ev,
  (VTBL_ENTRY)&_ZN6S778C43v69Ev,
  (VTBL_ENTRY)&_ZN6S778C43v70Ev,
  (VTBL_ENTRY)&_ZN6S778C43v71Ev,
  (VTBL_ENTRY)&_ZN6S778C43v72Ev,
  (VTBL_ENTRY)&_ZN6S778C43v73Ev,
  (VTBL_ENTRY)&_ZN6S778C43v74Ev,
  (VTBL_ENTRY)&_ZN6S778C43v75Ev,
  (VTBL_ENTRY)&_ZN6S778C43v76Ev,
  (VTBL_ENTRY)&_ZN6S778C43v77Ev,
  (VTBL_ENTRY)&_ZN6S778C43v78Ev,
  (VTBL_ENTRY)&_ZN6S778C43v79Ev,
  (VTBL_ENTRY)&_ZN6S778C43v80Ev,
  (VTBL_ENTRY)&_ZN6S778C43v81Ev,
  (VTBL_ENTRY)&_ZN6S778C43v82Ev,
  (VTBL_ENTRY)&_ZN6S778C43v83Ev,
  (VTBL_ENTRY)&_ZN6S778C43v84Ev,
  (VTBL_ENTRY)&_ZN6S778C43v85Ev,
  (VTBL_ENTRY)&_ZN6S778C43v86Ev,
  (VTBL_ENTRY)&_ZN6S778C43v87Ev,
  (VTBL_ENTRY)&_ZN6S778C43v88Ev,
  (VTBL_ENTRY)&_ZN6S778C43v89Ev,
  (VTBL_ENTRY)&_ZN6S778C43v90Ev,
  (VTBL_ENTRY)&_ZN6S778C43v91Ev,
  (VTBL_ENTRY)&_ZN6S778C43v92Ev,
  (VTBL_ENTRY)&_ZN6S778C43v93Ev,
  (VTBL_ENTRY)&_ZN6S778C43v94Ev,
  (VTBL_ENTRY)&_ZN6S778C43v95Ev,
  (VTBL_ENTRY)&_ZN6S778C43v96Ev,
  (VTBL_ENTRY)&_ZN6S778C43v97Ev,
  (VTBL_ENTRY)&_ZN6S778C43v98Ev,
  (VTBL_ENTRY)&_ZN6S778C43v99Ev,
  (VTBL_ENTRY)&_ZN6S778C44v100Ev,
  (VTBL_ENTRY)&_ZN6S778C44v101Ev,
  (VTBL_ENTRY)&_ZN6S778C44v102Ev,
  (VTBL_ENTRY)&_ZN6S778C44v103Ev,
  (VTBL_ENTRY)&_ZN6S778C44v104Ev,
  (VTBL_ENTRY)&_ZN6S778C44v105Ev,
  (VTBL_ENTRY)&_ZN6S778C44v106Ev,
  (VTBL_ENTRY)&_ZN6S778C44v107Ev,
  (VTBL_ENTRY)&_ZN6S778C44v108Ev,
  (VTBL_ENTRY)&_ZN6S778C44v109Ev,
  (VTBL_ENTRY)&_ZN6S778C44v110Ev,
  (VTBL_ENTRY)&_ZN6S778C44v111Ev,
  (VTBL_ENTRY)&_ZN6S778C44v112Ev,
  (VTBL_ENTRY)&_ZN6S778C44v113Ev,
  (VTBL_ENTRY)&_ZN6S778C44v114Ev,
  (VTBL_ENTRY)&_ZN6S778C44v115Ev,
  (VTBL_ENTRY)&_ZN6S778C44v116Ev,
  (VTBL_ENTRY)&_ZN6S778C44v117Ev,
  (VTBL_ENTRY)&_ZN6S778C44v118Ev,
  (VTBL_ENTRY)&_ZN6S778C44v119Ev,
  (VTBL_ENTRY)&_ZN6S778C44v120Ev,
  (VTBL_ENTRY)&_ZN6S778C44v121Ev,
  (VTBL_ENTRY)&_ZN6S778C44v122Ev,
  (VTBL_ENTRY)&_ZN6S778C44v123Ev,
  (VTBL_ENTRY)&_ZN6S778C44v124Ev,
  (VTBL_ENTRY)&_ZN6S778C44v125Ev,
  (VTBL_ENTRY)&_ZN6S778C44v126Ev,
  (VTBL_ENTRY)&_ZN6S778C44v127Ev,
  (VTBL_ENTRY)&_ZN6S778C44v128Ev,
  (VTBL_ENTRY)&_ZN6S778C44v129Ev,
  (VTBL_ENTRY)&_ZN6S778C44v130Ev,
  (VTBL_ENTRY)&_ZN6S778C44v131Ev,
  (VTBL_ENTRY)&_ZN6S778C44v132Ev,
  (VTBL_ENTRY)&_ZN6S778C44v133Ev,
  (VTBL_ENTRY)&_ZN6S778C34v134Ev,
  (VTBL_ENTRY)&_ZN6S778C34v135Ev,
  (VTBL_ENTRY)&_ZN6S778C34v136Ev,
  (VTBL_ENTRY)&_ZN6S778C34v137Ev,
  (VTBL_ENTRY)&_ZN6S778C34v138Ev,
  (VTBL_ENTRY)&_ZN6S778C34v139Ev,
  (VTBL_ENTRY)&_ZN6S778C34v140Ev,
  (VTBL_ENTRY)&_ZN6S778C34v141Ev,
  (VTBL_ENTRY)&_ZN6S778C34v142Ev,
  (VTBL_ENTRY)&_ZN6S778C34v143Ev,
  (VTBL_ENTRY)&_ZN6S778C34v144Ev,
  (VTBL_ENTRY)&_ZN6S778C34v145Ev,
  (VTBL_ENTRY)&_ZN6S778C34v146Ev,
  (VTBL_ENTRY)&_ZN6S778C34v147Ev,
  (VTBL_ENTRY)&_ZN6S778C34v148Ev,
  (VTBL_ENTRY)&_ZN6S778C34v149Ev,
  (VTBL_ENTRY)&_ZN6S778C34v150Ev,
  (VTBL_ENTRY)&_ZN6S778C34v151Ev,
};
extern VTBL_ENTRY _ZTI6S778C3[];
extern  VTBL_ENTRY _ZTV6S778C3[];
Class_Descriptor cd_S778C3 = {  "S778C3", // class name
  bases_S778C3, 2,
  &(vtc_S778C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S778C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S778C3),144, //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  S778C2  : S778C3 {
  virtual void  v152(); // _ZN6S778C24v152Ev
  ~S778C2(); // tgen
  S778C2(); // tgen
};
//SIG(-1 S778C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S778C2 ::v152(){vfunc_called(this, "_ZN6S778C24v152Ev");}
S778C2 ::~S778C2(){ note_dtor("S778C2", this);} // tgen
S778C2 ::S778C2(){ note_ctor("S778C2", this);} // tgen

static void Test_S778C2()
{
  extern Class_Descriptor cd_S778C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S778C2, buf);
    S778C2 *dp, &lv = *(dp=new (buf) S778C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S778C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S778C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S778C4*)(S778C3*), 0, "S778C2");
    check_base_class_offset(lv, (S778C4*)(S778C3*), 0, "S778C2");
    check_base_class_offset(lv, (S778C3*), 0, "S778C2");
    test_class_info(&lv, &cd_S778C2);
    dp->~S778C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS778C2(Test_S778C2, "S778C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S778C2C1Ev();
extern void _ZN6S778C2D1Ev();
Name_Map name_map_S778C2[] = {
  NSPAIR(_ZN6S778C2C1Ev),
  NSPAIR(_ZN6S778C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S778C4;
extern VTBL_ENTRY _ZTI6S778C4[];
extern  VTBL_ENTRY _ZTV6S778C4[];
extern Class_Descriptor cd_S778C3;
extern VTBL_ENTRY _ZTI6S778C3[];
extern  VTBL_ENTRY _ZTV6S778C3[];
static Base_Class bases_S778C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S778C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S778C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S778C2[];
extern void _ZN6S778C2D1Ev();
extern void _ZN6S778C2D0Ev();
extern void _ZN6S778C43v12Ev();
extern void _ZN6S778C43v13Ev();
extern void _ZN6S778C43v14Ev();
extern void _ZN6S778C43v15Ev();
extern void _ZN6S778C43v16Ev();
extern void _ZN6S778C43v17Ev();
extern void _ZN6S778C43v18Ev();
extern void _ZN6S778C43v19Ev();
extern void _ZN6S778C43v20Ev();
extern void _ZN6S778C43v21Ev();
extern void _ZN6S778C43v22Ev();
extern void _ZN6S778C43v23Ev();
extern void _ZN6S778C43v24Ev();
extern void _ZN6S778C43v25Ev();
extern void _ZN6S778C43v26Ev();
extern void _ZN6S778C43v27Ev();
extern void _ZN6S778C43v28Ev();
extern void _ZN6S778C43v29Ev();
extern void _ZN6S778C43v30Ev();
extern void _ZN6S778C43v31Ev();
extern void _ZN6S778C43v32Ev();
extern void _ZN6S778C43v33Ev();
extern void _ZN6S778C43v34Ev();
extern void _ZN6S778C43v35Ev();
extern void _ZN6S778C43v36Ev();
extern void _ZN6S778C43v37Ev();
extern void _ZN6S778C43v38Ev();
extern void _ZN6S778C43v39Ev();
extern void _ZN6S778C43v40Ev();
extern void _ZN6S778C43v41Ev();
extern void _ZN6S778C43v42Ev();
extern void _ZN6S778C43v43Ev();
extern void _ZN6S778C43v44Ev();
extern void _ZN6S778C43v45Ev();
extern void _ZN6S778C43v46Ev();
extern void _ZN6S778C43v47Ev();
extern void _ZN6S778C43v48Ev();
extern void _ZN6S778C43v49Ev();
extern void _ZN6S778C43v50Ev();
extern void _ZN6S778C43v51Ev();
extern void _ZN6S778C43v52Ev();
extern void _ZN6S778C43v53Ev();
extern void _ZN6S778C43v54Ev();
extern void _ZN6S778C43v55Ev();
extern void _ZN6S778C43v56Ev();
extern void _ZN6S778C43v57Ev();
extern void _ZN6S778C43v58Ev();
extern void _ZN6S778C43v59Ev();
extern void _ZN6S778C43v60Ev();
extern void _ZN6S778C43v61Ev();
extern void _ZN6S778C43v62Ev();
extern void _ZN6S778C43v63Ev();
extern void _ZN6S778C43v64Ev();
extern void _ZN6S778C43v65Ev();
extern void _ZN6S778C43v66Ev();
extern void _ZN6S778C43v67Ev();
extern void _ZN6S778C43v68Ev();
extern void _ZN6S778C43v69Ev();
extern void _ZN6S778C43v70Ev();
extern void _ZN6S778C43v71Ev();
extern void _ZN6S778C43v72Ev();
extern void _ZN6S778C43v73Ev();
extern void _ZN6S778C43v74Ev();
extern void _ZN6S778C43v75Ev();
extern void _ZN6S778C43v76Ev();
extern void _ZN6S778C43v77Ev();
extern void _ZN6S778C43v78Ev();
extern void _ZN6S778C43v79Ev();
extern void _ZN6S778C43v80Ev();
extern void _ZN6S778C43v81Ev();
extern void _ZN6S778C43v82Ev();
extern void _ZN6S778C43v83Ev();
extern void _ZN6S778C43v84Ev();
extern void _ZN6S778C43v85Ev();
extern void _ZN6S778C43v86Ev();
extern void _ZN6S778C43v87Ev();
extern void _ZN6S778C43v88Ev();
extern void _ZN6S778C43v89Ev();
extern void _ZN6S778C43v90Ev();
extern void _ZN6S778C43v91Ev();
extern void _ZN6S778C43v92Ev();
extern void _ZN6S778C43v93Ev();
extern void _ZN6S778C43v94Ev();
extern void _ZN6S778C43v95Ev();
extern void _ZN6S778C43v96Ev();
extern void _ZN6S778C43v97Ev();
extern void _ZN6S778C43v98Ev();
extern void _ZN6S778C43v99Ev();
extern void _ZN6S778C44v100Ev();
extern void _ZN6S778C44v101Ev();
extern void _ZN6S778C44v102Ev();
extern void _ZN6S778C44v103Ev();
extern void _ZN6S778C44v104Ev();
extern void _ZN6S778C44v105Ev();
extern void _ZN6S778C44v106Ev();
extern void _ZN6S778C44v107Ev();
extern void _ZN6S778C44v108Ev();
extern void _ZN6S778C44v109Ev();
extern void _ZN6S778C44v110Ev();
extern void _ZN6S778C44v111Ev();
extern void _ZN6S778C44v112Ev();
extern void _ZN6S778C44v113Ev();
extern void _ZN6S778C44v114Ev();
extern void _ZN6S778C44v115Ev();
extern void _ZN6S778C44v116Ev();
extern void _ZN6S778C44v117Ev();
extern void _ZN6S778C44v118Ev();
extern void _ZN6S778C44v119Ev();
extern void _ZN6S778C44v120Ev();
extern void _ZN6S778C44v121Ev();
extern void _ZN6S778C44v122Ev();
extern void _ZN6S778C44v123Ev();
extern void _ZN6S778C44v124Ev();
extern void _ZN6S778C44v125Ev();
extern void _ZN6S778C44v126Ev();
extern void _ZN6S778C44v127Ev();
extern void _ZN6S778C44v128Ev();
extern void _ZN6S778C44v129Ev();
extern void _ZN6S778C44v130Ev();
extern void _ZN6S778C44v131Ev();
extern void _ZN6S778C44v132Ev();
extern void _ZN6S778C44v133Ev();
extern void _ZN6S778C34v134Ev();
extern void _ZN6S778C34v135Ev();
extern void _ZN6S778C34v136Ev();
extern void _ZN6S778C34v137Ev();
extern void _ZN6S778C34v138Ev();
extern void _ZN6S778C34v139Ev();
extern void _ZN6S778C34v140Ev();
extern void _ZN6S778C34v141Ev();
extern void _ZN6S778C34v142Ev();
extern void _ZN6S778C34v143Ev();
extern void _ZN6S778C34v144Ev();
extern void _ZN6S778C34v145Ev();
extern void _ZN6S778C34v146Ev();
extern void _ZN6S778C34v147Ev();
extern void _ZN6S778C34v148Ev();
extern void _ZN6S778C34v149Ev();
extern void _ZN6S778C34v150Ev();
extern void _ZN6S778C34v151Ev();
extern void _ZN6S778C24v152Ev();
static  VTBL_ENTRY vtc_S778C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S778C2[0]),
  (VTBL_ENTRY)&_ZN6S778C2D1Ev,
  (VTBL_ENTRY)&_ZN6S778C2D0Ev,
  (VTBL_ENTRY)&_ZN6S778C43v12Ev,
  (VTBL_ENTRY)&_ZN6S778C43v13Ev,
  (VTBL_ENTRY)&_ZN6S778C43v14Ev,
  (VTBL_ENTRY)&_ZN6S778C43v15Ev,
  (VTBL_ENTRY)&_ZN6S778C43v16Ev,
  (VTBL_ENTRY)&_ZN6S778C43v17Ev,
  (VTBL_ENTRY)&_ZN6S778C43v18Ev,
  (VTBL_ENTRY)&_ZN6S778C43v19Ev,
  (VTBL_ENTRY)&_ZN6S778C43v20Ev,
  (VTBL_ENTRY)&_ZN6S778C43v21Ev,
  (VTBL_ENTRY)&_ZN6S778C43v22Ev,
  (VTBL_ENTRY)&_ZN6S778C43v23Ev,
  (VTBL_ENTRY)&_ZN6S778C43v24Ev,
  (VTBL_ENTRY)&_ZN6S778C43v25Ev,
  (VTBL_ENTRY)&_ZN6S778C43v26Ev,
  (VTBL_ENTRY)&_ZN6S778C43v27Ev,
  (VTBL_ENTRY)&_ZN6S778C43v28Ev,
  (VTBL_ENTRY)&_ZN6S778C43v29Ev,
  (VTBL_ENTRY)&_ZN6S778C43v30Ev,
  (VTBL_ENTRY)&_ZN6S778C43v31Ev,
  (VTBL_ENTRY)&_ZN6S778C43v32Ev,
  (VTBL_ENTRY)&_ZN6S778C43v33Ev,
  (VTBL_ENTRY)&_ZN6S778C43v34Ev,
  (VTBL_ENTRY)&_ZN6S778C43v35Ev,
  (VTBL_ENTRY)&_ZN6S778C43v36Ev,
  (VTBL_ENTRY)&_ZN6S778C43v37Ev,
  (VTBL_ENTRY)&_ZN6S778C43v38Ev,
  (VTBL_ENTRY)&_ZN6S778C43v39Ev,
  (VTBL_ENTRY)&_ZN6S778C43v40Ev,
  (VTBL_ENTRY)&_ZN6S778C43v41Ev,
  (VTBL_ENTRY)&_ZN6S778C43v42Ev,
  (VTBL_ENTRY)&_ZN6S778C43v43Ev,
  (VTBL_ENTRY)&_ZN6S778C43v44Ev,
  (VTBL_ENTRY)&_ZN6S778C43v45Ev,
  (VTBL_ENTRY)&_ZN6S778C43v46Ev,
  (VTBL_ENTRY)&_ZN6S778C43v47Ev,
  (VTBL_ENTRY)&_ZN6S778C43v48Ev,
  (VTBL_ENTRY)&_ZN6S778C43v49Ev,
  (VTBL_ENTRY)&_ZN6S778C43v50Ev,
  (VTBL_ENTRY)&_ZN6S778C43v51Ev,
  (VTBL_ENTRY)&_ZN6S778C43v52Ev,
  (VTBL_ENTRY)&_ZN6S778C43v53Ev,
  (VTBL_ENTRY)&_ZN6S778C43v54Ev,
  (VTBL_ENTRY)&_ZN6S778C43v55Ev,
  (VTBL_ENTRY)&_ZN6S778C43v56Ev,
  (VTBL_ENTRY)&_ZN6S778C43v57Ev,
  (VTBL_ENTRY)&_ZN6S778C43v58Ev,
  (VTBL_ENTRY)&_ZN6S778C43v59Ev,
  (VTBL_ENTRY)&_ZN6S778C43v60Ev,
  (VTBL_ENTRY)&_ZN6S778C43v61Ev,
  (VTBL_ENTRY)&_ZN6S778C43v62Ev,
  (VTBL_ENTRY)&_ZN6S778C43v63Ev,
  (VTBL_ENTRY)&_ZN6S778C43v64Ev,
  (VTBL_ENTRY)&_ZN6S778C43v65Ev,
  (VTBL_ENTRY)&_ZN6S778C43v66Ev,
  (VTBL_ENTRY)&_ZN6S778C43v67Ev,
  (VTBL_ENTRY)&_ZN6S778C43v68Ev,
  (VTBL_ENTRY)&_ZN6S778C43v69Ev,
  (VTBL_ENTRY)&_ZN6S778C43v70Ev,
  (VTBL_ENTRY)&_ZN6S778C43v71Ev,
  (VTBL_ENTRY)&_ZN6S778C43v72Ev,
  (VTBL_ENTRY)&_ZN6S778C43v73Ev,
  (VTBL_ENTRY)&_ZN6S778C43v74Ev,
  (VTBL_ENTRY)&_ZN6S778C43v75Ev,
  (VTBL_ENTRY)&_ZN6S778C43v76Ev,
  (VTBL_ENTRY)&_ZN6S778C43v77Ev,
  (VTBL_ENTRY)&_ZN6S778C43v78Ev,
  (VTBL_ENTRY)&_ZN6S778C43v79Ev,
  (VTBL_ENTRY)&_ZN6S778C43v80Ev,
  (VTBL_ENTRY)&_ZN6S778C43v81Ev,
  (VTBL_ENTRY)&_ZN6S778C43v82Ev,
  (VTBL_ENTRY)&_ZN6S778C43v83Ev,
  (VTBL_ENTRY)&_ZN6S778C43v84Ev,
  (VTBL_ENTRY)&_ZN6S778C43v85Ev,
  (VTBL_ENTRY)&_ZN6S778C43v86Ev,
  (VTBL_ENTRY)&_ZN6S778C43v87Ev,
  (VTBL_ENTRY)&_ZN6S778C43v88Ev,
  (VTBL_ENTRY)&_ZN6S778C43v89Ev,
  (VTBL_ENTRY)&_ZN6S778C43v90Ev,
  (VTBL_ENTRY)&_ZN6S778C43v91Ev,
  (VTBL_ENTRY)&_ZN6S778C43v92Ev,
  (VTBL_ENTRY)&_ZN6S778C43v93Ev,
  (VTBL_ENTRY)&_ZN6S778C43v94Ev,
  (VTBL_ENTRY)&_ZN6S778C43v95Ev,
  (VTBL_ENTRY)&_ZN6S778C43v96Ev,
  (VTBL_ENTRY)&_ZN6S778C43v97Ev,
  (VTBL_ENTRY)&_ZN6S778C43v98Ev,
  (VTBL_ENTRY)&_ZN6S778C43v99Ev,
  (VTBL_ENTRY)&_ZN6S778C44v100Ev,
  (VTBL_ENTRY)&_ZN6S778C44v101Ev,
  (VTBL_ENTRY)&_ZN6S778C44v102Ev,
  (VTBL_ENTRY)&_ZN6S778C44v103Ev,
  (VTBL_ENTRY)&_ZN6S778C44v104Ev,
  (VTBL_ENTRY)&_ZN6S778C44v105Ev,
  (VTBL_ENTRY)&_ZN6S778C44v106Ev,
  (VTBL_ENTRY)&_ZN6S778C44v107Ev,
  (VTBL_ENTRY)&_ZN6S778C44v108Ev,
  (VTBL_ENTRY)&_ZN6S778C44v109Ev,
  (VTBL_ENTRY)&_ZN6S778C44v110Ev,
  (VTBL_ENTRY)&_ZN6S778C44v111Ev,
  (VTBL_ENTRY)&_ZN6S778C44v112Ev,
  (VTBL_ENTRY)&_ZN6S778C44v113Ev,
  (VTBL_ENTRY)&_ZN6S778C44v114Ev,
  (VTBL_ENTRY)&_ZN6S778C44v115Ev,
  (VTBL_ENTRY)&_ZN6S778C44v116Ev,
  (VTBL_ENTRY)&_ZN6S778C44v117Ev,
  (VTBL_ENTRY)&_ZN6S778C44v118Ev,
  (VTBL_ENTRY)&_ZN6S778C44v119Ev,
  (VTBL_ENTRY)&_ZN6S778C44v120Ev,
  (VTBL_ENTRY)&_ZN6S778C44v121Ev,
  (VTBL_ENTRY)&_ZN6S778C44v122Ev,
  (VTBL_ENTRY)&_ZN6S778C44v123Ev,
  (VTBL_ENTRY)&_ZN6S778C44v124Ev,
  (VTBL_ENTRY)&_ZN6S778C44v125Ev,
  (VTBL_ENTRY)&_ZN6S778C44v126Ev,
  (VTBL_ENTRY)&_ZN6S778C44v127Ev,
  (VTBL_ENTRY)&_ZN6S778C44v128Ev,
  (VTBL_ENTRY)&_ZN6S778C44v129Ev,
  (VTBL_ENTRY)&_ZN6S778C44v130Ev,
  (VTBL_ENTRY)&_ZN6S778C44v131Ev,
  (VTBL_ENTRY)&_ZN6S778C44v132Ev,
  (VTBL_ENTRY)&_ZN6S778C44v133Ev,
  (VTBL_ENTRY)&_ZN6S778C34v134Ev,
  (VTBL_ENTRY)&_ZN6S778C34v135Ev,
  (VTBL_ENTRY)&_ZN6S778C34v136Ev,
  (VTBL_ENTRY)&_ZN6S778C34v137Ev,
  (VTBL_ENTRY)&_ZN6S778C34v138Ev,
  (VTBL_ENTRY)&_ZN6S778C34v139Ev,
  (VTBL_ENTRY)&_ZN6S778C34v140Ev,
  (VTBL_ENTRY)&_ZN6S778C34v141Ev,
  (VTBL_ENTRY)&_ZN6S778C34v142Ev,
  (VTBL_ENTRY)&_ZN6S778C34v143Ev,
  (VTBL_ENTRY)&_ZN6S778C34v144Ev,
  (VTBL_ENTRY)&_ZN6S778C34v145Ev,
  (VTBL_ENTRY)&_ZN6S778C34v146Ev,
  (VTBL_ENTRY)&_ZN6S778C34v147Ev,
  (VTBL_ENTRY)&_ZN6S778C34v148Ev,
  (VTBL_ENTRY)&_ZN6S778C34v149Ev,
  (VTBL_ENTRY)&_ZN6S778C34v150Ev,
  (VTBL_ENTRY)&_ZN6S778C34v151Ev,
  (VTBL_ENTRY)&_ZN6S778C24v152Ev,
};
extern VTBL_ENTRY _ZTI6S778C2[];
extern  VTBL_ENTRY _ZTV6S778C2[];
Class_Descriptor cd_S778C2 = {  "S778C2", // class name
  bases_S778C2, 3,
  &(vtc_S778C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S778C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S778C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S778C1  : S778C2 {
  virtual void  v1(); // _ZN6S778C12v1Ev
  virtual void  v2(); // _ZN6S778C12v2Ev
  virtual void  v3(); // _ZN6S778C12v3Ev
  virtual void  v4(); // _ZN6S778C12v4Ev
  virtual void  v5(); // _ZN6S778C12v5Ev
  virtual void  v6(); // _ZN6S778C12v6Ev
  virtual void  v7(); // _ZN6S778C12v7Ev
  virtual void  v8(); // _ZN6S778C12v8Ev
  virtual void  v9(); // _ZN6S778C12v9Ev
  virtual void  v10(); // _ZN6S778C13v10Ev
  virtual void  v11(); // _ZN6S778C13v11Ev
  ~S778C1(); // tgen
  S778C1(); // tgen
};
//SIG(1 S778C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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 v149 v150 v151} v152} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11}


void  S778C1 ::v1(){vfunc_called(this, "_ZN6S778C12v1Ev");}
void  S778C1 ::v2(){vfunc_called(this, "_ZN6S778C12v2Ev");}
void  S778C1 ::v3(){vfunc_called(this, "_ZN6S778C12v3Ev");}
void  S778C1 ::v4(){vfunc_called(this, "_ZN6S778C12v4Ev");}
void  S778C1 ::v5(){vfunc_called(this, "_ZN6S778C12v5Ev");}
void  S778C1 ::v6(){vfunc_called(this, "_ZN6S778C12v6Ev");}
void  S778C1 ::v7(){vfunc_called(this, "_ZN6S778C12v7Ev");}
void  S778C1 ::v8(){vfunc_called(this, "_ZN6S778C12v8Ev");}
void  S778C1 ::v9(){vfunc_called(this, "_ZN6S778C12v9Ev");}
void  S778C1 ::v10(){vfunc_called(this, "_ZN6S778C13v10Ev");}
void  S778C1 ::v11(){vfunc_called(this, "_ZN6S778C13v11Ev");}
S778C1 ::~S778C1(){ note_dtor("S778C1", this);} // tgen
S778C1 ::S778C1(){ note_ctor("S778C1", this);} // tgen

static void Test_S778C1()
{
  extern Class_Descriptor cd_S778C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S778C1, buf);
    S778C1 *dp, &lv = *(dp=new (buf) S778C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S778C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S778C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S778C4*)(S778C3*)(S778C2*), 0, "S778C1");
    check_base_class_offset(lv, (S778C4*)(S778C3*)(S778C2*), 0, "S778C1");
    check_base_class_offset(lv, (S778C3*)(S778C2*), 0, "S778C1");
    check_base_class_offset(lv, (S778C2*), 0, "S778C1");
    test_class_info(&lv, &cd_S778C1);
    dp->~S778C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS778C1(Test_S778C1, "S778C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S778C1C1Ev();
extern void _ZN6S778C1D1Ev();
Name_Map name_map_S778C1[] = {
  NSPAIR(_ZN6S778C1C1Ev),
  NSPAIR(_ZN6S778C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S778C4;
extern VTBL_ENTRY _ZTI6S778C4[];
extern  VTBL_ENTRY _ZTV6S778C4[];
extern Class_Descriptor cd_S778C3;
extern VTBL_ENTRY _ZTI6S778C3[];
extern  VTBL_ENTRY _ZTV6S778C3[];
extern Class_Descriptor cd_S778C2;
extern VTBL_ENTRY _ZTI6S778C2[];
extern  VTBL_ENTRY _ZTV6S778C2[];
static Base_Class bases_S778C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S778C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S778C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S778C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S778C1[];
extern void _ZN6S778C1D1Ev();
extern void _ZN6S778C1D0Ev();
extern void _ZN6S778C43v12Ev();
extern void _ZN6S778C43v13Ev();
extern void _ZN6S778C43v14Ev();
extern void _ZN6S778C43v15Ev();
extern void _ZN6S778C43v16Ev();
extern void _ZN6S778C43v17Ev();
extern void _ZN6S778C43v18Ev();
extern void _ZN6S778C43v19Ev();
extern void _ZN6S778C43v20Ev();
extern void _ZN6S778C43v21Ev();
extern void _ZN6S778C43v22Ev();
extern void _ZN6S778C43v23Ev();
extern void _ZN6S778C43v24Ev();
extern void _ZN6S778C43v25Ev();
extern void _ZN6S778C43v26Ev();
extern void _ZN6S778C43v27Ev();
extern void _ZN6S778C43v28Ev();
extern void _ZN6S778C43v29Ev();
extern void _ZN6S778C43v30Ev();
extern void _ZN6S778C43v31Ev();
extern void _ZN6S778C43v32Ev();
extern void _ZN6S778C43v33Ev();
extern void _ZN6S778C43v34Ev();
extern void _ZN6S778C43v35Ev();
extern void _ZN6S778C43v36Ev();
extern void _ZN6S778C43v37Ev();
extern void _ZN6S778C43v38Ev();
extern void _ZN6S778C43v39Ev();
extern void _ZN6S778C43v40Ev();
extern void _ZN6S778C43v41Ev();
extern void _ZN6S778C43v42Ev();
extern void _ZN6S778C43v43Ev();
extern void _ZN6S778C43v44Ev();
extern void _ZN6S778C43v45Ev();
extern void _ZN6S778C43v46Ev();
extern void _ZN6S778C43v47Ev();
extern void _ZN6S778C43v48Ev();
extern void _ZN6S778C43v49Ev();
extern void _ZN6S778C43v50Ev();
extern void _ZN6S778C43v51Ev();
extern void _ZN6S778C43v52Ev();
extern void _ZN6S778C43v53Ev();
extern void _ZN6S778C43v54Ev();
extern void _ZN6S778C43v55Ev();
extern void _ZN6S778C43v56Ev();
extern void _ZN6S778C43v57Ev();
extern void _ZN6S778C43v58Ev();
extern void _ZN6S778C43v59Ev();
extern void _ZN6S778C43v60Ev();
extern void _ZN6S778C43v61Ev();
extern void _ZN6S778C43v62Ev();
extern void _ZN6S778C43v63Ev();
extern void _ZN6S778C43v64Ev();
extern void _ZN6S778C43v65Ev();
extern void _ZN6S778C43v66Ev();
extern void _ZN6S778C43v67Ev();
extern void _ZN6S778C43v68Ev();
extern void _ZN6S778C43v69Ev();
extern void _ZN6S778C43v70Ev();
extern void _ZN6S778C43v71Ev();
extern void _ZN6S778C43v72Ev();
extern void _ZN6S778C43v73Ev();
extern void _ZN6S778C43v74Ev();
extern void _ZN6S778C43v75Ev();
extern void _ZN6S778C43v76Ev();
extern void _ZN6S778C43v77Ev();
extern void _ZN6S778C43v78Ev();
extern void _ZN6S778C43v79Ev();
extern void _ZN6S778C43v80Ev();
extern void _ZN6S778C43v81Ev();
extern void _ZN6S778C43v82Ev();
extern void _ZN6S778C43v83Ev();
extern void _ZN6S778C43v84Ev();
extern void _ZN6S778C43v85Ev();
extern void _ZN6S778C43v86Ev();
extern void _ZN6S778C43v87Ev();
extern void _ZN6S778C43v88Ev();
extern void _ZN6S778C43v89Ev();
extern void _ZN6S778C43v90Ev();
extern void _ZN6S778C43v91Ev();
extern void _ZN6S778C43v92Ev();
extern void _ZN6S778C43v93Ev();
extern void _ZN6S778C43v94Ev();
extern void _ZN6S778C43v95Ev();
extern void _ZN6S778C43v96Ev();
extern void _ZN6S778C43v97Ev();
extern void _ZN6S778C43v98Ev();
extern void _ZN6S778C43v99Ev();
extern void _ZN6S778C44v100Ev();
extern void _ZN6S778C44v101Ev();
extern void _ZN6S778C44v102Ev();
extern void _ZN6S778C44v103Ev();
extern void _ZN6S778C44v104Ev();
extern void _ZN6S778C44v105Ev();
extern void _ZN6S778C44v106Ev();
extern void _ZN6S778C44v107Ev();
extern void _ZN6S778C44v108Ev();
extern void _ZN6S778C44v109Ev();
extern void _ZN6S778C44v110Ev();
extern void _ZN6S778C44v111Ev();
extern void _ZN6S778C44v112Ev();
extern void _ZN6S778C44v113Ev();
extern void _ZN6S778C44v114Ev();
extern void _ZN6S778C44v115Ev();
extern void _ZN6S778C44v116Ev();
extern void _ZN6S778C44v117Ev();
extern void _ZN6S778C44v118Ev();
extern void _ZN6S778C44v119Ev();
extern void _ZN6S778C44v120Ev();
extern void _ZN6S778C44v121Ev();
extern void _ZN6S778C44v122Ev();
extern void _ZN6S778C44v123Ev();
extern void _ZN6S778C44v124Ev();
extern void _ZN6S778C44v125Ev();
extern void _ZN6S778C44v126Ev();
extern void _ZN6S778C44v127Ev();
extern void _ZN6S778C44v128Ev();
extern void _ZN6S778C44v129Ev();
extern void _ZN6S778C44v130Ev();
extern void _ZN6S778C44v131Ev();
extern void _ZN6S778C44v132Ev();
extern void _ZN6S778C44v133Ev();
extern void _ZN6S778C34v134Ev();
extern void _ZN6S778C34v135Ev();
extern void _ZN6S778C34v136Ev();
extern void _ZN6S778C34v137Ev();
extern void _ZN6S778C34v138Ev();
extern void _ZN6S778C34v139Ev();
extern void _ZN6S778C34v140Ev();
extern void _ZN6S778C34v141Ev();
extern void _ZN6S778C34v142Ev();
extern void _ZN6S778C34v143Ev();
extern void _ZN6S778C34v144Ev();
extern void _ZN6S778C34v145Ev();
extern void _ZN6S778C34v146Ev();
extern void _ZN6S778C34v147Ev();
extern void _ZN6S778C34v148Ev();
extern void _ZN6S778C34v149Ev();
extern void _ZN6S778C34v150Ev();
extern void _ZN6S778C34v151Ev();
extern void _ZN6S778C24v152Ev();
extern void _ZN6S778C12v1Ev();
extern void _ZN6S778C12v2Ev();
extern void _ZN6S778C12v3Ev();
extern void _ZN6S778C12v4Ev();
extern void _ZN6S778C12v5Ev();
extern void _ZN6S778C12v6Ev();
extern void _ZN6S778C12v7Ev();
extern void _ZN6S778C12v8Ev();
extern void _ZN6S778C12v9Ev();
extern void _ZN6S778C13v10Ev();
extern void _ZN6S778C13v11Ev();
static  VTBL_ENTRY vtc_S778C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S778C1[0]),
  (VTBL_ENTRY)&_ZN6S778C1D1Ev,
  (VTBL_ENTRY)&_ZN6S778C1D0Ev,
  (VTBL_ENTRY)&_ZN6S778C43v12Ev,
  (VTBL_ENTRY)&_ZN6S778C43v13Ev,
  (VTBL_ENTRY)&_ZN6S778C43v14Ev,
  (VTBL_ENTRY)&_ZN6S778C43v15Ev,
  (VTBL_ENTRY)&_ZN6S778C43v16Ev,
  (VTBL_ENTRY)&_ZN6S778C43v17Ev,
  (VTBL_ENTRY)&_ZN6S778C43v18Ev,
  (VTBL_ENTRY)&_ZN6S778C43v19Ev,
  (VTBL_ENTRY)&_ZN6S778C43v20Ev,
  (VTBL_ENTRY)&_ZN6S778C43v21Ev,
  (VTBL_ENTRY)&_ZN6S778C43v22Ev,
  (VTBL_ENTRY)&_ZN6S778C43v23Ev,
  (VTBL_ENTRY)&_ZN6S778C43v24Ev,
  (VTBL_ENTRY)&_ZN6S778C43v25Ev,
  (VTBL_ENTRY)&_ZN6S778C43v26Ev,
  (VTBL_ENTRY)&_ZN6S778C43v27Ev,
  (VTBL_ENTRY)&_ZN6S778C43v28Ev,
  (VTBL_ENTRY)&_ZN6S778C43v29Ev,
  (VTBL_ENTRY)&_ZN6S778C43v30Ev,
  (VTBL_ENTRY)&_ZN6S778C43v31Ev,
  (VTBL_ENTRY)&_ZN6S778C43v32Ev,
  (VTBL_ENTRY)&_ZN6S778C43v33Ev,
  (VTBL_ENTRY)&_ZN6S778C43v34Ev,
  (VTBL_ENTRY)&_ZN6S778C43v35Ev,
  (VTBL_ENTRY)&_ZN6S778C43v36Ev,
  (VTBL_ENTRY)&_ZN6S778C43v37Ev,
  (VTBL_ENTRY)&_ZN6S778C43v38Ev,
  (VTBL_ENTRY)&_ZN6S778C43v39Ev,
  (VTBL_ENTRY)&_ZN6S778C43v40Ev,
  (VTBL_ENTRY)&_ZN6S778C43v41Ev,
  (VTBL_ENTRY)&_ZN6S778C43v42Ev,
  (VTBL_ENTRY)&_ZN6S778C43v43Ev,
  (VTBL_ENTRY)&_ZN6S778C43v44Ev,
  (VTBL_ENTRY)&_ZN6S778C43v45Ev,
  (VTBL_ENTRY)&_ZN6S778C43v46Ev,
  (VTBL_ENTRY)&_ZN6S778C43v47Ev,
  (VTBL_ENTRY)&_ZN6S778C43v48Ev,
  (VTBL_ENTRY)&_ZN6S778C43v49Ev,
  (VTBL_ENTRY)&_ZN6S778C43v50Ev,
  (VTBL_ENTRY)&_ZN6S778C43v51Ev,
  (VTBL_ENTRY)&_ZN6S778C43v52Ev,
  (VTBL_ENTRY)&_ZN6S778C43v53Ev,
  (VTBL_ENTRY)&_ZN6S778C43v54Ev,
  (VTBL_ENTRY)&_ZN6S778C43v55Ev,
  (VTBL_ENTRY)&_ZN6S778C43v56Ev,
  (VTBL_ENTRY)&_ZN6S778C43v57Ev,
  (VTBL_ENTRY)&_ZN6S778C43v58Ev,
  (VTBL_ENTRY)&_ZN6S778C43v59Ev,
  (VTBL_ENTRY)&_ZN6S778C43v60Ev,
  (VTBL_ENTRY)&_ZN6S778C43v61Ev,
  (VTBL_ENTRY)&_ZN6S778C43v62Ev,
  (VTBL_ENTRY)&_ZN6S778C43v63Ev,
  (VTBL_ENTRY)&_ZN6S778C43v64Ev,
  (VTBL_ENTRY)&_ZN6S778C43v65Ev,
  (VTBL_ENTRY)&_ZN6S778C43v66Ev,
  (VTBL_ENTRY)&_ZN6S778C43v67Ev,
  (VTBL_ENTRY)&_ZN6S778C43v68Ev,
  (VTBL_ENTRY)&_ZN6S778C43v69Ev,
  (VTBL_ENTRY)&_ZN6S778C43v70Ev,
  (VTBL_ENTRY)&_ZN6S778C43v71Ev,
  (VTBL_ENTRY)&_ZN6S778C43v72Ev,
  (VTBL_ENTRY)&_ZN6S778C43v73Ev,
  (VTBL_ENTRY)&_ZN6S778C43v74Ev,
  (VTBL_ENTRY)&_ZN6S778C43v75Ev,
  (VTBL_ENTRY)&_ZN6S778C43v76Ev,
  (VTBL_ENTRY)&_ZN6S778C43v77Ev,
  (VTBL_ENTRY)&_ZN6S778C43v78Ev,
  (VTBL_ENTRY)&_ZN6S778C43v79Ev,
  (VTBL_ENTRY)&_ZN6S778C43v80Ev,
  (VTBL_ENTRY)&_ZN6S778C43v81Ev,
  (VTBL_ENTRY)&_ZN6S778C43v82Ev,
  (VTBL_ENTRY)&_ZN6S778C43v83Ev,
  (VTBL_ENTRY)&_ZN6S778C43v84Ev,
  (VTBL_ENTRY)&_ZN6S778C43v85Ev,
  (VTBL_ENTRY)&_ZN6S778C43v86Ev,
  (VTBL_ENTRY)&_ZN6S778C43v87Ev,
  (VTBL_ENTRY)&_ZN6S778C43v88Ev,
  (VTBL_ENTRY)&_ZN6S778C43v89Ev,
  (VTBL_ENTRY)&_ZN6S778C43v90Ev,
  (VTBL_ENTRY)&_ZN6S778C43v91Ev,
  (VTBL_ENTRY)&_ZN6S778C43v92Ev,
  (VTBL_ENTRY)&_ZN6S778C43v93Ev,
  (VTBL_ENTRY)&_ZN6S778C43v94Ev,
  (VTBL_ENTRY)&_ZN6S778C43v95Ev,
  (VTBL_ENTRY)&_ZN6S778C43v96Ev,
  (VTBL_ENTRY)&_ZN6S778C43v97Ev,
  (VTBL_ENTRY)&_ZN6S778C43v98Ev,
  (VTBL_ENTRY)&_ZN6S778C43v99Ev,
  (VTBL_ENTRY)&_ZN6S778C44v100Ev,
  (VTBL_ENTRY)&_ZN6S778C44v101Ev,
  (VTBL_ENTRY)&_ZN6S778C44v102Ev,
  (VTBL_ENTRY)&_ZN6S778C44v103Ev,
  (VTBL_ENTRY)&_ZN6S778C44v104Ev,
  (VTBL_ENTRY)&_ZN6S778C44v105Ev,
  (VTBL_ENTRY)&_ZN6S778C44v106Ev,
  (VTBL_ENTRY)&_ZN6S778C44v107Ev,
  (VTBL_ENTRY)&_ZN6S778C44v108Ev,
  (VTBL_ENTRY)&_ZN6S778C44v109Ev,
  (VTBL_ENTRY)&_ZN6S778C44v110Ev,
  (VTBL_ENTRY)&_ZN6S778C44v111Ev,
  (VTBL_ENTRY)&_ZN6S778C44v112Ev,
  (VTBL_ENTRY)&_ZN6S778C44v113Ev,
  (VTBL_ENTRY)&_ZN6S778C44v114Ev,
  (VTBL_ENTRY)&_ZN6S778C44v115Ev,
  (VTBL_ENTRY)&_ZN6S778C44v116Ev,
  (VTBL_ENTRY)&_ZN6S778C44v117Ev,
  (VTBL_ENTRY)&_ZN6S778C44v118Ev,
  (VTBL_ENTRY)&_ZN6S778C44v119Ev,
  (VTBL_ENTRY)&_ZN6S778C44v120Ev,
  (VTBL_ENTRY)&_ZN6S778C44v121Ev,
  (VTBL_ENTRY)&_ZN6S778C44v122Ev,
  (VTBL_ENTRY)&_ZN6S778C44v123Ev,
  (VTBL_ENTRY)&_ZN6S778C44v124Ev,
  (VTBL_ENTRY)&_ZN6S778C44v125Ev,
  (VTBL_ENTRY)&_ZN6S778C44v126Ev,
  (VTBL_ENTRY)&_ZN6S778C44v127Ev,
  (VTBL_ENTRY)&_ZN6S778C44v128Ev,
  (VTBL_ENTRY)&_ZN6S778C44v129Ev,
  (VTBL_ENTRY)&_ZN6S778C44v130Ev,
  (VTBL_ENTRY)&_ZN6S778C44v131Ev,
  (VTBL_ENTRY)&_ZN6S778C44v132Ev,
  (VTBL_ENTRY)&_ZN6S778C44v133Ev,
  (VTBL_ENTRY)&_ZN6S778C34v134Ev,
  (VTBL_ENTRY)&_ZN6S778C34v135Ev,
  (VTBL_ENTRY)&_ZN6S778C34v136Ev,
  (VTBL_ENTRY)&_ZN6S778C34v137Ev,
  (VTBL_ENTRY)&_ZN6S778C34v138Ev,
  (VTBL_ENTRY)&_ZN6S778C34v139Ev,
  (VTBL_ENTRY)&_ZN6S778C34v140Ev,
  (VTBL_ENTRY)&_ZN6S778C34v141Ev,
  (VTBL_ENTRY)&_ZN6S778C34v142Ev,
  (VTBL_ENTRY)&_ZN6S778C34v143Ev,
  (VTBL_ENTRY)&_ZN6S778C34v144Ev,
  (VTBL_ENTRY)&_ZN6S778C34v145Ev,
  (VTBL_ENTRY)&_ZN6S778C34v146Ev,
  (VTBL_ENTRY)&_ZN6S778C34v147Ev,
  (VTBL_ENTRY)&_ZN6S778C34v148Ev,
  (VTBL_ENTRY)&_ZN6S778C34v149Ev,
  (VTBL_ENTRY)&_ZN6S778C34v150Ev,
  (VTBL_ENTRY)&_ZN6S778C34v151Ev,
  (VTBL_ENTRY)&_ZN6S778C24v152Ev,
  (VTBL_ENTRY)&_ZN6S778C12v1Ev,
  (VTBL_ENTRY)&_ZN6S778C12v2Ev,
  (VTBL_ENTRY)&_ZN6S778C12v3Ev,
  (VTBL_ENTRY)&_ZN6S778C12v4Ev,
  (VTBL_ENTRY)&_ZN6S778C12v5Ev,
  (VTBL_ENTRY)&_ZN6S778C12v6Ev,
  (VTBL_ENTRY)&_ZN6S778C12v7Ev,
  (VTBL_ENTRY)&_ZN6S778C12v8Ev,
  (VTBL_ENTRY)&_ZN6S778C12v9Ev,
  (VTBL_ENTRY)&_ZN6S778C13v10Ev,
  (VTBL_ENTRY)&_ZN6S778C13v11Ev,
};
extern VTBL_ENTRY _ZTI6S778C1[];
extern  VTBL_ENTRY _ZTV6S778C1[];
Class_Descriptor cd_S778C1 = {  "S778C1", // class name
  bases_S778C1, 4,
  &(vtc_S778C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S778C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S778C1),156, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S777C4  : S785C5_nt {
  virtual void  v10(); // _ZN6S777C43v10Ev
  virtual void  v11(); // _ZN6S777C43v11Ev
  virtual void  v12(); // _ZN6S777C43v12Ev
  virtual void  v13(); // _ZN6S777C43v13Ev
  virtual void  v14(); // _ZN6S777C43v14Ev
  virtual void  v15(); // _ZN6S777C43v15Ev
  virtual void  v16(); // _ZN6S777C43v16Ev
  virtual void  v17(); // _ZN6S777C43v17Ev
  virtual void  v18(); // _ZN6S777C43v18Ev
  virtual void  v19(); // _ZN6S777C43v19Ev
  virtual void  v20(); // _ZN6S777C43v20Ev
  virtual void  v21(); // _ZN6S777C43v21Ev
  virtual void  v22(); // _ZN6S777C43v22Ev
  virtual void  v23(); // _ZN6S777C43v23Ev
  virtual void  v24(); // _ZN6S777C43v24Ev
  virtual void  v25(); // _ZN6S777C43v25Ev
  virtual void  v26(); // _ZN6S777C43v26Ev
  virtual void  v27(); // _ZN6S777C43v27Ev
  virtual void  v28(); // _ZN6S777C43v28Ev
  virtual void  v29(); // _ZN6S777C43v29Ev
  virtual void  v30(); // _ZN6S777C43v30Ev
  virtual void  v31(); // _ZN6S777C43v31Ev
  virtual void  v32(); // _ZN6S777C43v32Ev
  virtual void  v33(); // _ZN6S777C43v33Ev
  virtual void  v34(); // _ZN6S777C43v34Ev
  virtual void  v35(); // _ZN6S777C43v35Ev
  virtual void  v36(); // _ZN6S777C43v36Ev
  virtual void  v37(); // _ZN6S777C43v37Ev
  virtual void  v38(); // _ZN6S777C43v38Ev
  virtual void  v39(); // _ZN6S777C43v39Ev
  virtual void  v40(); // _ZN6S777C43v40Ev
  virtual void  v41(); // _ZN6S777C43v41Ev
  virtual void  v42(); // _ZN6S777C43v42Ev
  virtual void  v43(); // _ZN6S777C43v43Ev
  virtual void  v44(); // _ZN6S777C43v44Ev
  virtual void  v45(); // _ZN6S777C43v45Ev
  virtual void  v46(); // _ZN6S777C43v46Ev
  virtual void  v47(); // _ZN6S777C43v47Ev
  virtual void  v48(); // _ZN6S777C43v48Ev
  virtual void  v49(); // _ZN6S777C43v49Ev
  virtual void  v50(); // _ZN6S777C43v50Ev
  virtual void  v51(); // _ZN6S777C43v51Ev
  virtual void  v52(); // _ZN6S777C43v52Ev
  virtual void  v53(); // _ZN6S777C43v53Ev
  virtual void  v54(); // _ZN6S777C43v54Ev
  virtual void  v55(); // _ZN6S777C43v55Ev
  virtual void  v56(); // _ZN6S777C43v56Ev
  virtual void  v57(); // _ZN6S777C43v57Ev
  virtual void  v58(); // _ZN6S777C43v58Ev
  virtual void  v59(); // _ZN6S777C43v59Ev
  virtual void  v60(); // _ZN6S777C43v60Ev
  virtual void  v61(); // _ZN6S777C43v61Ev
  virtual void  v62(); // _ZN6S777C43v62Ev
  virtual void  v63(); // _ZN6S777C43v63Ev
  virtual void  v64(); // _ZN6S777C43v64Ev
  virtual void  v65(); // _ZN6S777C43v65Ev
  virtual void  v66(); // _ZN6S777C43v66Ev
  virtual void  v67(); // _ZN6S777C43v67Ev
  virtual void  v68(); // _ZN6S777C43v68Ev
  virtual void  v69(); // _ZN6S777C43v69Ev
  virtual void  v70(); // _ZN6S777C43v70Ev
  virtual void  v71(); // _ZN6S777C43v71Ev
  virtual void  v72(); // _ZN6S777C43v72Ev
  virtual void  v73(); // _ZN6S777C43v73Ev
  virtual void  v74(); // _ZN6S777C43v74Ev
  virtual void  v75(); // _ZN6S777C43v75Ev
  virtual void  v76(); // _ZN6S777C43v76Ev
  virtual void  v77(); // _ZN6S777C43v77Ev
  virtual void  v78(); // _ZN6S777C43v78Ev
  virtual void  v79(); // _ZN6S777C43v79Ev
  virtual void  v80(); // _ZN6S777C43v80Ev
  virtual void  v81(); // _ZN6S777C43v81Ev
  virtual void  v82(); // _ZN6S777C43v82Ev
  virtual void  v83(); // _ZN6S777C43v83Ev
  virtual void  v84(); // _ZN6S777C43v84Ev
  virtual void  v85(); // _ZN6S777C43v85Ev
  virtual void  v86(); // _ZN6S777C43v86Ev
  virtual void  v87(); // _ZN6S777C43v87Ev
  virtual void  v88(); // _ZN6S777C43v88Ev
  virtual void  v89(); // _ZN6S777C43v89Ev
  virtual void  v90(); // _ZN6S777C43v90Ev
  virtual void  v91(); // _ZN6S777C43v91Ev
  virtual void  v92(); // _ZN6S777C43v92Ev
  virtual void  v93(); // _ZN6S777C43v93Ev
  virtual void  v94(); // _ZN6S777C43v94Ev
  virtual void  v95(); // _ZN6S777C43v95Ev
  virtual void  v96(); // _ZN6S777C43v96Ev
  virtual void  v97(); // _ZN6S777C43v97Ev
  virtual void  v98(); // _ZN6S777C43v98Ev
  virtual void  v99(); // _ZN6S777C43v99Ev
  virtual void  v100(); // _ZN6S777C44v100Ev
  virtual void  v101(); // _ZN6S777C44v101Ev
  virtual void  v102(); // _ZN6S777C44v102Ev
  virtual void  v103(); // _ZN6S777C44v103Ev
  virtual void  v104(); // _ZN6S777C44v104Ev
  virtual void  v105(); // _ZN6S777C44v105Ev
  virtual void  v106(); // _ZN6S777C44v106Ev
  virtual void  v107(); // _ZN6S777C44v107Ev
  virtual void  v108(); // _ZN6S777C44v108Ev
  virtual void  v109(); // _ZN6S777C44v109Ev
  virtual void  v110(); // _ZN6S777C44v110Ev
  virtual void  v111(); // _ZN6S777C44v111Ev
  virtual void  v112(); // _ZN6S777C44v112Ev
  virtual void  v113(); // _ZN6S777C44v113Ev
  virtual void  v114(); // _ZN6S777C44v114Ev
  virtual void  v115(); // _ZN6S777C44v115Ev
  virtual void  v116(); // _ZN6S777C44v116Ev
  virtual void  v117(); // _ZN6S777C44v117Ev
  virtual void  v118(); // _ZN6S777C44v118Ev
  virtual void  v119(); // _ZN6S777C44v119Ev
  virtual void  v120(); // _ZN6S777C44v120Ev
  virtual void  v121(); // _ZN6S777C44v121Ev
  virtual void  v122(); // _ZN6S777C44v122Ev
  virtual void  v123(); // _ZN6S777C44v123Ev
  virtual void  v124(); // _ZN6S777C44v124Ev
  virtual void  v125(); // _ZN6S777C44v125Ev
  virtual void  v126(); // _ZN6S777C44v126Ev
  virtual void  v127(); // _ZN6S777C44v127Ev
  virtual void  v128(); // _ZN6S777C44v128Ev
  virtual void  v129(); // _ZN6S777C44v129Ev
  virtual void  v130(); // _ZN6S777C44v130Ev
  virtual void  v131(); // _ZN6S777C44v131Ev
  ~S777C4(); // tgen
  S777C4(); // tgen
};
//SIG(-1 S777C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S777C4 ::v10(){vfunc_called(this, "_ZN6S777C43v10Ev");}
void  S777C4 ::v11(){vfunc_called(this, "_ZN6S777C43v11Ev");}
void  S777C4 ::v12(){vfunc_called(this, "_ZN6S777C43v12Ev");}
void  S777C4 ::v13(){vfunc_called(this, "_ZN6S777C43v13Ev");}
void  S777C4 ::v14(){vfunc_called(this, "_ZN6S777C43v14Ev");}
void  S777C4 ::v15(){vfunc_called(this, "_ZN6S777C43v15Ev");}
void  S777C4 ::v16(){vfunc_called(this, "_ZN6S777C43v16Ev");}
void  S777C4 ::v17(){vfunc_called(this, "_ZN6S777C43v17Ev");}
void  S777C4 ::v18(){vfunc_called(this, "_ZN6S777C43v18Ev");}
void  S777C4 ::v19(){vfunc_called(this, "_ZN6S777C43v19Ev");}
void  S777C4 ::v20(){vfunc_called(this, "_ZN6S777C43v20Ev");}
void  S777C4 ::v21(){vfunc_called(this, "_ZN6S777C43v21Ev");}
void  S777C4 ::v22(){vfunc_called(this, "_ZN6S777C43v22Ev");}
void  S777C4 ::v23(){vfunc_called(this, "_ZN6S777C43v23Ev");}
void  S777C4 ::v24(){vfunc_called(this, "_ZN6S777C43v24Ev");}
void  S777C4 ::v25(){vfunc_called(this, "_ZN6S777C43v25Ev");}
void  S777C4 ::v26(){vfunc_called(this, "_ZN6S777C43v26Ev");}
void  S777C4 ::v27(){vfunc_called(this, "_ZN6S777C43v27Ev");}
void  S777C4 ::v28(){vfunc_called(this, "_ZN6S777C43v28Ev");}
void  S777C4 ::v29(){vfunc_called(this, "_ZN6S777C43v29Ev");}
void  S777C4 ::v30(){vfunc_called(this, "_ZN6S777C43v30Ev");}
void  S777C4 ::v31(){vfunc_called(this, "_ZN6S777C43v31Ev");}
void  S777C4 ::v32(){vfunc_called(this, "_ZN6S777C43v32Ev");}
void  S777C4 ::v33(){vfunc_called(this, "_ZN6S777C43v33Ev");}
void  S777C4 ::v34(){vfunc_called(this, "_ZN6S777C43v34Ev");}
void  S777C4 ::v35(){vfunc_called(this, "_ZN6S777C43v35Ev");}
void  S777C4 ::v36(){vfunc_called(this, "_ZN6S777C43v36Ev");}
void  S777C4 ::v37(){vfunc_called(this, "_ZN6S777C43v37Ev");}
void  S777C4 ::v38(){vfunc_called(this, "_ZN6S777C43v38Ev");}
void  S777C4 ::v39(){vfunc_called(this, "_ZN6S777C43v39Ev");}
void  S777C4 ::v40(){vfunc_called(this, "_ZN6S777C43v40Ev");}
void  S777C4 ::v41(){vfunc_called(this, "_ZN6S777C43v41Ev");}
void  S777C4 ::v42(){vfunc_called(this, "_ZN6S777C43v42Ev");}
void  S777C4 ::v43(){vfunc_called(this, "_ZN6S777C43v43Ev");}
void  S777C4 ::v44(){vfunc_called(this, "_ZN6S777C43v44Ev");}
void  S777C4 ::v45(){vfunc_called(this, "_ZN6S777C43v45Ev");}
void  S777C4 ::v46(){vfunc_called(this, "_ZN6S777C43v46Ev");}
void  S777C4 ::v47(){vfunc_called(this, "_ZN6S777C43v47Ev");}
void  S777C4 ::v48(){vfunc_called(this, "_ZN6S777C43v48Ev");}
void  S777C4 ::v49(){vfunc_called(this, "_ZN6S777C43v49Ev");}
void  S777C4 ::v50(){vfunc_called(this, "_ZN6S777C43v50Ev");}
void  S777C4 ::v51(){vfunc_called(this, "_ZN6S777C43v51Ev");}
void  S777C4 ::v52(){vfunc_called(this, "_ZN6S777C43v52Ev");}
void  S777C4 ::v53(){vfunc_called(this, "_ZN6S777C43v53Ev");}
void  S777C4 ::v54(){vfunc_called(this, "_ZN6S777C43v54Ev");}
void  S777C4 ::v55(){vfunc_called(this, "_ZN6S777C43v55Ev");}
void  S777C4 ::v56(){vfunc_called(this, "_ZN6S777C43v56Ev");}
void  S777C4 ::v57(){vfunc_called(this, "_ZN6S777C43v57Ev");}
void  S777C4 ::v58(){vfunc_called(this, "_ZN6S777C43v58Ev");}
void  S777C4 ::v59(){vfunc_called(this, "_ZN6S777C43v59Ev");}
void  S777C4 ::v60(){vfunc_called(this, "_ZN6S777C43v60Ev");}
void  S777C4 ::v61(){vfunc_called(this, "_ZN6S777C43v61Ev");}
void  S777C4 ::v62(){vfunc_called(this, "_ZN6S777C43v62Ev");}
void  S777C4 ::v63(){vfunc_called(this, "_ZN6S777C43v63Ev");}
void  S777C4 ::v64(){vfunc_called(this, "_ZN6S777C43v64Ev");}
void  S777C4 ::v65(){vfunc_called(this, "_ZN6S777C43v65Ev");}
void  S777C4 ::v66(){vfunc_called(this, "_ZN6S777C43v66Ev");}
void  S777C4 ::v67(){vfunc_called(this, "_ZN6S777C43v67Ev");}
void  S777C4 ::v68(){vfunc_called(this, "_ZN6S777C43v68Ev");}
void  S777C4 ::v69(){vfunc_called(this, "_ZN6S777C43v69Ev");}
void  S777C4 ::v70(){vfunc_called(this, "_ZN6S777C43v70Ev");}
void  S777C4 ::v71(){vfunc_called(this, "_ZN6S777C43v71Ev");}
void  S777C4 ::v72(){vfunc_called(this, "_ZN6S777C43v72Ev");}
void  S777C4 ::v73(){vfunc_called(this, "_ZN6S777C43v73Ev");}
void  S777C4 ::v74(){vfunc_called(this, "_ZN6S777C43v74Ev");}
void  S777C4 ::v75(){vfunc_called(this, "_ZN6S777C43v75Ev");}
void  S777C4 ::v76(){vfunc_called(this, "_ZN6S777C43v76Ev");}
void  S777C4 ::v77(){vfunc_called(this, "_ZN6S777C43v77Ev");}
void  S777C4 ::v78(){vfunc_called(this, "_ZN6S777C43v78Ev");}
void  S777C4 ::v79(){vfunc_called(this, "_ZN6S777C43v79Ev");}
void  S777C4 ::v80(){vfunc_called(this, "_ZN6S777C43v80Ev");}
void  S777C4 ::v81(){vfunc_called(this, "_ZN6S777C43v81Ev");}
void  S777C4 ::v82(){vfunc_called(this, "_ZN6S777C43v82Ev");}
void  S777C4 ::v83(){vfunc_called(this, "_ZN6S777C43v83Ev");}
void  S777C4 ::v84(){vfunc_called(this, "_ZN6S777C43v84Ev");}
void  S777C4 ::v85(){vfunc_called(this, "_ZN6S777C43v85Ev");}
void  S777C4 ::v86(){vfunc_called(this, "_ZN6S777C43v86Ev");}
void  S777C4 ::v87(){vfunc_called(this, "_ZN6S777C43v87Ev");}
void  S777C4 ::v88(){vfunc_called(this, "_ZN6S777C43v88Ev");}
void  S777C4 ::v89(){vfunc_called(this, "_ZN6S777C43v89Ev");}
void  S777C4 ::v90(){vfunc_called(this, "_ZN6S777C43v90Ev");}
void  S777C4 ::v91(){vfunc_called(this, "_ZN6S777C43v91Ev");}
void  S777C4 ::v92(){vfunc_called(this, "_ZN6S777C43v92Ev");}
void  S777C4 ::v93(){vfunc_called(this, "_ZN6S777C43v93Ev");}
void  S777C4 ::v94(){vfunc_called(this, "_ZN6S777C43v94Ev");}
void  S777C4 ::v95(){vfunc_called(this, "_ZN6S777C43v95Ev");}
void  S777C4 ::v96(){vfunc_called(this, "_ZN6S777C43v96Ev");}
void  S777C4 ::v97(){vfunc_called(this, "_ZN6S777C43v97Ev");}
void  S777C4 ::v98(){vfunc_called(this, "_ZN6S777C43v98Ev");}
void  S777C4 ::v99(){vfunc_called(this, "_ZN6S777C43v99Ev");}
void  S777C4 ::v100(){vfunc_called(this, "_ZN6S777C44v100Ev");}
void  S777C4 ::v101(){vfunc_called(this, "_ZN6S777C44v101Ev");}
void  S777C4 ::v102(){vfunc_called(this, "_ZN6S777C44v102Ev");}
void  S777C4 ::v103(){vfunc_called(this, "_ZN6S777C44v103Ev");}
void  S777C4 ::v104(){vfunc_called(this, "_ZN6S777C44v104Ev");}
void  S777C4 ::v105(){vfunc_called(this, "_ZN6S777C44v105Ev");}
void  S777C4 ::v106(){vfunc_called(this, "_ZN6S777C44v106Ev");}
void  S777C4 ::v107(){vfunc_called(this, "_ZN6S777C44v107Ev");}
void  S777C4 ::v108(){vfunc_called(this, "_ZN6S777C44v108Ev");}
void  S777C4 ::v109(){vfunc_called(this, "_ZN6S777C44v109Ev");}
void  S777C4 ::v110(){vfunc_called(this, "_ZN6S777C44v110Ev");}
void  S777C4 ::v111(){vfunc_called(this, "_ZN6S777C44v111Ev");}
void  S777C4 ::v112(){vfunc_called(this, "_ZN6S777C44v112Ev");}
void  S777C4 ::v113(){vfunc_called(this, "_ZN6S777C44v113Ev");}
void  S777C4 ::v114(){vfunc_called(this, "_ZN6S777C44v114Ev");}
void  S777C4 ::v115(){vfunc_called(this, "_ZN6S777C44v115Ev");}
void  S777C4 ::v116(){vfunc_called(this, "_ZN6S777C44v116Ev");}
void  S777C4 ::v117(){vfunc_called(this, "_ZN6S777C44v117Ev");}
void  S777C4 ::v118(){vfunc_called(this, "_ZN6S777C44v118Ev");}
void  S777C4 ::v119(){vfunc_called(this, "_ZN6S777C44v119Ev");}
void  S777C4 ::v120(){vfunc_called(this, "_ZN6S777C44v120Ev");}
void  S777C4 ::v121(){vfunc_called(this, "_ZN6S777C44v121Ev");}
void  S777C4 ::v122(){vfunc_called(this, "_ZN6S777C44v122Ev");}
void  S777C4 ::v123(){vfunc_called(this, "_ZN6S777C44v123Ev");}
void  S777C4 ::v124(){vfunc_called(this, "_ZN6S777C44v124Ev");}
void  S777C4 ::v125(){vfunc_called(this, "_ZN6S777C44v125Ev");}
void  S777C4 ::v126(){vfunc_called(this, "_ZN6S777C44v126Ev");}
void  S777C4 ::v127(){vfunc_called(this, "_ZN6S777C44v127Ev");}
void  S777C4 ::v128(){vfunc_called(this, "_ZN6S777C44v128Ev");}
void  S777C4 ::v129(){vfunc_called(this, "_ZN6S777C44v129Ev");}
void  S777C4 ::v130(){vfunc_called(this, "_ZN6S777C44v130Ev");}
void  S777C4 ::v131(){vfunc_called(this, "_ZN6S777C44v131Ev");}
S777C4 ::~S777C4(){ note_dtor("S777C4", this);} // tgen
S777C4 ::S777C4(){ note_ctor("S777C4", this);} // tgen

static void Test_S777C4()
{
  extern Class_Descriptor cd_S777C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S777C4, buf);
    S777C4 *dp, &lv = *(dp=new (buf) S777C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S777C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S777C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S777C4");
    test_class_info(&lv, &cd_S777C4);
    dp->~S777C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS777C4(Test_S777C4, "S777C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S777C4C1Ev();
extern void _ZN6S777C4D1Ev();
Name_Map name_map_S777C4[] = {
  NSPAIR(_ZN6S777C4C1Ev),
  NSPAIR(_ZN6S777C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S777C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S777C4[];
extern void _ZN6S777C4D1Ev();
extern void _ZN6S777C4D0Ev();
extern void _ZN6S777C43v10Ev();
extern void _ZN6S777C43v11Ev();
extern void _ZN6S777C43v12Ev();
extern void _ZN6S777C43v13Ev();
extern void _ZN6S777C43v14Ev();
extern void _ZN6S777C43v15Ev();
extern void _ZN6S777C43v16Ev();
extern void _ZN6S777C43v17Ev();
extern void _ZN6S777C43v18Ev();
extern void _ZN6S777C43v19Ev();
extern void _ZN6S777C43v20Ev();
extern void _ZN6S777C43v21Ev();
extern void _ZN6S777C43v22Ev();
extern void _ZN6S777C43v23Ev();
extern void _ZN6S777C43v24Ev();
extern void _ZN6S777C43v25Ev();
extern void _ZN6S777C43v26Ev();
extern void _ZN6S777C43v27Ev();
extern void _ZN6S777C43v28Ev();
extern void _ZN6S777C43v29Ev();
extern void _ZN6S777C43v30Ev();
extern void _ZN6S777C43v31Ev();
extern void _ZN6S777C43v32Ev();
extern void _ZN6S777C43v33Ev();
extern void _ZN6S777C43v34Ev();
extern void _ZN6S777C43v35Ev();
extern void _ZN6S777C43v36Ev();
extern void _ZN6S777C43v37Ev();
extern void _ZN6S777C43v38Ev();
extern void _ZN6S777C43v39Ev();
extern void _ZN6S777C43v40Ev();
extern void _ZN6S777C43v41Ev();
extern void _ZN6S777C43v42Ev();
extern void _ZN6S777C43v43Ev();
extern void _ZN6S777C43v44Ev();
extern void _ZN6S777C43v45Ev();
extern void _ZN6S777C43v46Ev();
extern void _ZN6S777C43v47Ev();
extern void _ZN6S777C43v48Ev();
extern void _ZN6S777C43v49Ev();
extern void _ZN6S777C43v50Ev();
extern void _ZN6S777C43v51Ev();
extern void _ZN6S777C43v52Ev();
extern void _ZN6S777C43v53Ev();
extern void _ZN6S777C43v54Ev();
extern void _ZN6S777C43v55Ev();
extern void _ZN6S777C43v56Ev();
extern void _ZN6S777C43v57Ev();
extern void _ZN6S777C43v58Ev();
extern void _ZN6S777C43v59Ev();
extern void _ZN6S777C43v60Ev();
extern void _ZN6S777C43v61Ev();
extern void _ZN6S777C43v62Ev();
extern void _ZN6S777C43v63Ev();
extern void _ZN6S777C43v64Ev();
extern void _ZN6S777C43v65Ev();
extern void _ZN6S777C43v66Ev();
extern void _ZN6S777C43v67Ev();
extern void _ZN6S777C43v68Ev();
extern void _ZN6S777C43v69Ev();
extern void _ZN6S777C43v70Ev();
extern void _ZN6S777C43v71Ev();
extern void _ZN6S777C43v72Ev();
extern void _ZN6S777C43v73Ev();
extern void _ZN6S777C43v74Ev();
extern void _ZN6S777C43v75Ev();
extern void _ZN6S777C43v76Ev();
extern void _ZN6S777C43v77Ev();
extern void _ZN6S777C43v78Ev();
extern void _ZN6S777C43v79Ev();
extern void _ZN6S777C43v80Ev();
extern void _ZN6S777C43v81Ev();
extern void _ZN6S777C43v82Ev();
extern void _ZN6S777C43v83Ev();
extern void _ZN6S777C43v84Ev();
extern void _ZN6S777C43v85Ev();
extern void _ZN6S777C43v86Ev();
extern void _ZN6S777C43v87Ev();
extern void _ZN6S777C43v88Ev();
extern void _ZN6S777C43v89Ev();
extern void _ZN6S777C43v90Ev();
extern void _ZN6S777C43v91Ev();
extern void _ZN6S777C43v92Ev();
extern void _ZN6S777C43v93Ev();
extern void _ZN6S777C43v94Ev();
extern void _ZN6S777C43v95Ev();
extern void _ZN6S777C43v96Ev();
extern void _ZN6S777C43v97Ev();
extern void _ZN6S777C43v98Ev();
extern void _ZN6S777C43v99Ev();
extern void _ZN6S777C44v100Ev();
extern void _ZN6S777C44v101Ev();
extern void _ZN6S777C44v102Ev();
extern void _ZN6S777C44v103Ev();
extern void _ZN6S777C44v104Ev();
extern void _ZN6S777C44v105Ev();
extern void _ZN6S777C44v106Ev();
extern void _ZN6S777C44v107Ev();
extern void _ZN6S777C44v108Ev();
extern void _ZN6S777C44v109Ev();
extern void _ZN6S777C44v110Ev();
extern void _ZN6S777C44v111Ev();
extern void _ZN6S777C44v112Ev();
extern void _ZN6S777C44v113Ev();
extern void _ZN6S777C44v114Ev();
extern void _ZN6S777C44v115Ev();
extern void _ZN6S777C44v116Ev();
extern void _ZN6S777C44v117Ev();
extern void _ZN6S777C44v118Ev();
extern void _ZN6S777C44v119Ev();
extern void _ZN6S777C44v120Ev();
extern void _ZN6S777C44v121Ev();
extern void _ZN6S777C44v122Ev();
extern void _ZN6S777C44v123Ev();
extern void _ZN6S777C44v124Ev();
extern void _ZN6S777C44v125Ev();
extern void _ZN6S777C44v126Ev();
extern void _ZN6S777C44v127Ev();
extern void _ZN6S777C44v128Ev();
extern void _ZN6S777C44v129Ev();
extern void _ZN6S777C44v130Ev();
extern void _ZN6S777C44v131Ev();
static  VTBL_ENTRY vtc_S777C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S777C4[0]),
  (VTBL_ENTRY)&_ZN6S777C4D1Ev,
  (VTBL_ENTRY)&_ZN6S777C4D0Ev,
  (VTBL_ENTRY)&_ZN6S777C43v10Ev,
  (VTBL_ENTRY)&_ZN6S777C43v11Ev,
  (VTBL_ENTRY)&_ZN6S777C43v12Ev,
  (VTBL_ENTRY)&_ZN6S777C43v13Ev,
  (VTBL_ENTRY)&_ZN6S777C43v14Ev,
  (VTBL_ENTRY)&_ZN6S777C43v15Ev,
  (VTBL_ENTRY)&_ZN6S777C43v16Ev,
  (VTBL_ENTRY)&_ZN6S777C43v17Ev,
  (VTBL_ENTRY)&_ZN6S777C43v18Ev,
  (VTBL_ENTRY)&_ZN6S777C43v19Ev,
  (VTBL_ENTRY)&_ZN6S777C43v20Ev,
  (VTBL_ENTRY)&_ZN6S777C43v21Ev,
  (VTBL_ENTRY)&_ZN6S777C43v22Ev,
  (VTBL_ENTRY)&_ZN6S777C43v23Ev,
  (VTBL_ENTRY)&_ZN6S777C43v24Ev,
  (VTBL_ENTRY)&_ZN6S777C43v25Ev,
  (VTBL_ENTRY)&_ZN6S777C43v26Ev,
  (VTBL_ENTRY)&_ZN6S777C43v27Ev,
  (VTBL_ENTRY)&_ZN6S777C43v28Ev,
  (VTBL_ENTRY)&_ZN6S777C43v29Ev,
  (VTBL_ENTRY)&_ZN6S777C43v30Ev,
  (VTBL_ENTRY)&_ZN6S777C43v31Ev,
  (VTBL_ENTRY)&_ZN6S777C43v32Ev,
  (VTBL_ENTRY)&_ZN6S777C43v33Ev,
  (VTBL_ENTRY)&_ZN6S777C43v34Ev,
  (VTBL_ENTRY)&_ZN6S777C43v35Ev,
  (VTBL_ENTRY)&_ZN6S777C43v36Ev,
  (VTBL_ENTRY)&_ZN6S777C43v37Ev,
  (VTBL_ENTRY)&_ZN6S777C43v38Ev,
  (VTBL_ENTRY)&_ZN6S777C43v39Ev,
  (VTBL_ENTRY)&_ZN6S777C43v40Ev,
  (VTBL_ENTRY)&_ZN6S777C43v41Ev,
  (VTBL_ENTRY)&_ZN6S777C43v42Ev,
  (VTBL_ENTRY)&_ZN6S777C43v43Ev,
  (VTBL_ENTRY)&_ZN6S777C43v44Ev,
  (VTBL_ENTRY)&_ZN6S777C43v45Ev,
  (VTBL_ENTRY)&_ZN6S777C43v46Ev,
  (VTBL_ENTRY)&_ZN6S777C43v47Ev,
  (VTBL_ENTRY)&_ZN6S777C43v48Ev,
  (VTBL_ENTRY)&_ZN6S777C43v49Ev,
  (VTBL_ENTRY)&_ZN6S777C43v50Ev,
  (VTBL_ENTRY)&_ZN6S777C43v51Ev,
  (VTBL_ENTRY)&_ZN6S777C43v52Ev,
  (VTBL_ENTRY)&_ZN6S777C43v53Ev,
  (VTBL_ENTRY)&_ZN6S777C43v54Ev,
  (VTBL_ENTRY)&_ZN6S777C43v55Ev,
  (VTBL_ENTRY)&_ZN6S777C43v56Ev,
  (VTBL_ENTRY)&_ZN6S777C43v57Ev,
  (VTBL_ENTRY)&_ZN6S777C43v58Ev,
  (VTBL_ENTRY)&_ZN6S777C43v59Ev,
  (VTBL_ENTRY)&_ZN6S777C43v60Ev,
  (VTBL_ENTRY)&_ZN6S777C43v61Ev,
  (VTBL_ENTRY)&_ZN6S777C43v62Ev,
  (VTBL_ENTRY)&_ZN6S777C43v63Ev,
  (VTBL_ENTRY)&_ZN6S777C43v64Ev,
  (VTBL_ENTRY)&_ZN6S777C43v65Ev,
  (VTBL_ENTRY)&_ZN6S777C43v66Ev,
  (VTBL_ENTRY)&_ZN6S777C43v67Ev,
  (VTBL_ENTRY)&_ZN6S777C43v68Ev,
  (VTBL_ENTRY)&_ZN6S777C43v69Ev,
  (VTBL_ENTRY)&_ZN6S777C43v70Ev,
  (VTBL_ENTRY)&_ZN6S777C43v71Ev,
  (VTBL_ENTRY)&_ZN6S777C43v72Ev,
  (VTBL_ENTRY)&_ZN6S777C43v73Ev,
  (VTBL_ENTRY)&_ZN6S777C43v74Ev,
  (VTBL_ENTRY)&_ZN6S777C43v75Ev,
  (VTBL_ENTRY)&_ZN6S777C43v76Ev,
  (VTBL_ENTRY)&_ZN6S777C43v77Ev,
  (VTBL_ENTRY)&_ZN6S777C43v78Ev,
  (VTBL_ENTRY)&_ZN6S777C43v79Ev,
  (VTBL_ENTRY)&_ZN6S777C43v80Ev,
  (VTBL_ENTRY)&_ZN6S777C43v81Ev,
  (VTBL_ENTRY)&_ZN6S777C43v82Ev,
  (VTBL_ENTRY)&_ZN6S777C43v83Ev,
  (VTBL_ENTRY)&_ZN6S777C43v84Ev,
  (VTBL_ENTRY)&_ZN6S777C43v85Ev,
  (VTBL_ENTRY)&_ZN6S777C43v86Ev,
  (VTBL_ENTRY)&_ZN6S777C43v87Ev,
  (VTBL_ENTRY)&_ZN6S777C43v88Ev,
  (VTBL_ENTRY)&_ZN6S777C43v89Ev,
  (VTBL_ENTRY)&_ZN6S777C43v90Ev,
  (VTBL_ENTRY)&_ZN6S777C43v91Ev,
  (VTBL_ENTRY)&_ZN6S777C43v92Ev,
  (VTBL_ENTRY)&_ZN6S777C43v93Ev,
  (VTBL_ENTRY)&_ZN6S777C43v94Ev,
  (VTBL_ENTRY)&_ZN6S777C43v95Ev,
  (VTBL_ENTRY)&_ZN6S777C43v96Ev,
  (VTBL_ENTRY)&_ZN6S777C43v97Ev,
  (VTBL_ENTRY)&_ZN6S777C43v98Ev,
  (VTBL_ENTRY)&_ZN6S777C43v99Ev,
  (VTBL_ENTRY)&_ZN6S777C44v100Ev,
  (VTBL_ENTRY)&_ZN6S777C44v101Ev,
  (VTBL_ENTRY)&_ZN6S777C44v102Ev,
  (VTBL_ENTRY)&_ZN6S777C44v103Ev,
  (VTBL_ENTRY)&_ZN6S777C44v104Ev,
  (VTBL_ENTRY)&_ZN6S777C44v105Ev,
  (VTBL_ENTRY)&_ZN6S777C44v106Ev,
  (VTBL_ENTRY)&_ZN6S777C44v107Ev,
  (VTBL_ENTRY)&_ZN6S777C44v108Ev,
  (VTBL_ENTRY)&_ZN6S777C44v109Ev,
  (VTBL_ENTRY)&_ZN6S777C44v110Ev,
  (VTBL_ENTRY)&_ZN6S777C44v111Ev,
  (VTBL_ENTRY)&_ZN6S777C44v112Ev,
  (VTBL_ENTRY)&_ZN6S777C44v113Ev,
  (VTBL_ENTRY)&_ZN6S777C44v114Ev,
  (VTBL_ENTRY)&_ZN6S777C44v115Ev,
  (VTBL_ENTRY)&_ZN6S777C44v116Ev,
  (VTBL_ENTRY)&_ZN6S777C44v117Ev,
  (VTBL_ENTRY)&_ZN6S777C44v118Ev,
  (VTBL_ENTRY)&_ZN6S777C44v119Ev,
  (VTBL_ENTRY)&_ZN6S777C44v120Ev,
  (VTBL_ENTRY)&_ZN6S777C44v121Ev,
  (VTBL_ENTRY)&_ZN6S777C44v122Ev,
  (VTBL_ENTRY)&_ZN6S777C44v123Ev,
  (VTBL_ENTRY)&_ZN6S777C44v124Ev,
  (VTBL_ENTRY)&_ZN6S777C44v125Ev,
  (VTBL_ENTRY)&_ZN6S777C44v126Ev,
  (VTBL_ENTRY)&_ZN6S777C44v127Ev,
  (VTBL_ENTRY)&_ZN6S777C44v128Ev,
  (VTBL_ENTRY)&_ZN6S777C44v129Ev,
  (VTBL_ENTRY)&_ZN6S777C44v130Ev,
  (VTBL_ENTRY)&_ZN6S777C44v131Ev,
};
extern VTBL_ENTRY _ZTI6S777C4[];
extern  VTBL_ENTRY _ZTV6S777C4[];
Class_Descriptor cd_S777C4 = {  "S777C4", // class name
  bases_S777C4, 1,
  &(vtc_S777C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S777C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S777C4),126, //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  S777C3  : S777C4 {
  virtual void  v132(); // _ZN6S777C34v132Ev
  virtual void  v133(); // _ZN6S777C34v133Ev
  virtual void  v134(); // _ZN6S777C34v134Ev
  virtual void  v135(); // _ZN6S777C34v135Ev
  virtual void  v136(); // _ZN6S777C34v136Ev
  virtual void  v137(); // _ZN6S777C34v137Ev
  virtual void  v138(); // _ZN6S777C34v138Ev
  virtual void  v139(); // _ZN6S777C34v139Ev
  virtual void  v140(); // _ZN6S777C34v140Ev
  virtual void  v141(); // _ZN6S777C34v141Ev
  virtual void  v142(); // _ZN6S777C34v142Ev
  virtual void  v143(); // _ZN6S777C34v143Ev
  virtual void  v144(); // _ZN6S777C34v144Ev
  virtual void  v145(); // _ZN6S777C34v145Ev
  virtual void  v146(); // _ZN6S777C34v146Ev
  virtual void  v147(); // _ZN6S777C34v147Ev
  virtual void  v148(); // _ZN6S777C34v148Ev
  virtual void  v149(); // _ZN6S777C34v149Ev
  ~S777C3(); // tgen
  S777C3(); // tgen
};
//SIG(-1 S777C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S777C3 ::v132(){vfunc_called(this, "_ZN6S777C34v132Ev");}
void  S777C3 ::v133(){vfunc_called(this, "_ZN6S777C34v133Ev");}
void  S777C3 ::v134(){vfunc_called(this, "_ZN6S777C34v134Ev");}
void  S777C3 ::v135(){vfunc_called(this, "_ZN6S777C34v135Ev");}
void  S777C3 ::v136(){vfunc_called(this, "_ZN6S777C34v136Ev");}
void  S777C3 ::v137(){vfunc_called(this, "_ZN6S777C34v137Ev");}
void  S777C3 ::v138(){vfunc_called(this, "_ZN6S777C34v138Ev");}
void  S777C3 ::v139(){vfunc_called(this, "_ZN6S777C34v139Ev");}
void  S777C3 ::v140(){vfunc_called(this, "_ZN6S777C34v140Ev");}
void  S777C3 ::v141(){vfunc_called(this, "_ZN6S777C34v141Ev");}
void  S777C3 ::v142(){vfunc_called(this, "_ZN6S777C34v142Ev");}
void  S777C3 ::v143(){vfunc_called(this, "_ZN6S777C34v143Ev");}
void  S777C3 ::v144(){vfunc_called(this, "_ZN6S777C34v144Ev");}
void  S777C3 ::v145(){vfunc_called(this, "_ZN6S777C34v145Ev");}
void  S777C3 ::v146(){vfunc_called(this, "_ZN6S777C34v146Ev");}
void  S777C3 ::v147(){vfunc_called(this, "_ZN6S777C34v147Ev");}
void  S777C3 ::v148(){vfunc_called(this, "_ZN6S777C34v148Ev");}
void  S777C3 ::v149(){vfunc_called(this, "_ZN6S777C34v149Ev");}
S777C3 ::~S777C3(){ note_dtor("S777C3", this);} // tgen
S777C3 ::S777C3(){ note_ctor("S777C3", this);} // tgen

static void Test_S777C3()
{
  extern Class_Descriptor cd_S777C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S777C3, buf);
    S777C3 *dp, &lv = *(dp=new (buf) S777C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S777C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S777C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S777C4*), 0, "S777C3");
    check_base_class_offset(lv, (S777C4*), 0, "S777C3");
    test_class_info(&lv, &cd_S777C3);
    dp->~S777C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS777C3(Test_S777C3, "S777C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S777C3C1Ev();
extern void _ZN6S777C3D1Ev();
Name_Map name_map_S777C3[] = {
  NSPAIR(_ZN6S777C3C1Ev),
  NSPAIR(_ZN6S777C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S777C4;
extern VTBL_ENTRY _ZTI6S777C4[];
extern  VTBL_ENTRY _ZTV6S777C4[];
static Base_Class bases_S777C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S777C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S777C3[];
extern void _ZN6S777C3D1Ev();
extern void _ZN6S777C3D0Ev();
extern void _ZN6S777C43v10Ev();
extern void _ZN6S777C43v11Ev();
extern void _ZN6S777C43v12Ev();
extern void _ZN6S777C43v13Ev();
extern void _ZN6S777C43v14Ev();
extern void _ZN6S777C43v15Ev();
extern void _ZN6S777C43v16Ev();
extern void _ZN6S777C43v17Ev();
extern void _ZN6S777C43v18Ev();
extern void _ZN6S777C43v19Ev();
extern void _ZN6S777C43v20Ev();
extern void _ZN6S777C43v21Ev();
extern void _ZN6S777C43v22Ev();
extern void _ZN6S777C43v23Ev();
extern void _ZN6S777C43v24Ev();
extern void _ZN6S777C43v25Ev();
extern void _ZN6S777C43v26Ev();
extern void _ZN6S777C43v27Ev();
extern void _ZN6S777C43v28Ev();
extern void _ZN6S777C43v29Ev();
extern void _ZN6S777C43v30Ev();
extern void _ZN6S777C43v31Ev();
extern void _ZN6S777C43v32Ev();
extern void _ZN6S777C43v33Ev();
extern void _ZN6S777C43v34Ev();
extern void _ZN6S777C43v35Ev();
extern void _ZN6S777C43v36Ev();
extern void _ZN6S777C43v37Ev();
extern void _ZN6S777C43v38Ev();
extern void _ZN6S777C43v39Ev();
extern void _ZN6S777C43v40Ev();
extern void _ZN6S777C43v41Ev();
extern void _ZN6S777C43v42Ev();
extern void _ZN6S777C43v43Ev();
extern void _ZN6S777C43v44Ev();
extern void _ZN6S777C43v45Ev();
extern void _ZN6S777C43v46Ev();
extern void _ZN6S777C43v47Ev();
extern void _ZN6S777C43v48Ev();
extern void _ZN6S777C43v49Ev();
extern void _ZN6S777C43v50Ev();
extern void _ZN6S777C43v51Ev();
extern void _ZN6S777C43v52Ev();
extern void _ZN6S777C43v53Ev();
extern void _ZN6S777C43v54Ev();
extern void _ZN6S777C43v55Ev();
extern void _ZN6S777C43v56Ev();
extern void _ZN6S777C43v57Ev();
extern void _ZN6S777C43v58Ev();
extern void _ZN6S777C43v59Ev();
extern void _ZN6S777C43v60Ev();
extern void _ZN6S777C43v61Ev();
extern void _ZN6S777C43v62Ev();
extern void _ZN6S777C43v63Ev();
extern void _ZN6S777C43v64Ev();
extern void _ZN6S777C43v65Ev();
extern void _ZN6S777C43v66Ev();
extern void _ZN6S777C43v67Ev();
extern void _ZN6S777C43v68Ev();
extern void _ZN6S777C43v69Ev();
extern void _ZN6S777C43v70Ev();
extern void _ZN6S777C43v71Ev();
extern void _ZN6S777C43v72Ev();
extern void _ZN6S777C43v73Ev();
extern void _ZN6S777C43v74Ev();
extern void _ZN6S777C43v75Ev();
extern void _ZN6S777C43v76Ev();
extern void _ZN6S777C43v77Ev();
extern void _ZN6S777C43v78Ev();
extern void _ZN6S777C43v79Ev();
extern void _ZN6S777C43v80Ev();
extern void _ZN6S777C43v81Ev();
extern void _ZN6S777C43v82Ev();
extern void _ZN6S777C43v83Ev();
extern void _ZN6S777C43v84Ev();
extern void _ZN6S777C43v85Ev();
extern void _ZN6S777C43v86Ev();
extern void _ZN6S777C43v87Ev();
extern void _ZN6S777C43v88Ev();
extern void _ZN6S777C43v89Ev();
extern void _ZN6S777C43v90Ev();
extern void _ZN6S777C43v91Ev();
extern void _ZN6S777C43v92Ev();
extern void _ZN6S777C43v93Ev();
extern void _ZN6S777C43v94Ev();
extern void _ZN6S777C43v95Ev();
extern void _ZN6S777C43v96Ev();
extern void _ZN6S777C43v97Ev();
extern void _ZN6S777C43v98Ev();
extern void _ZN6S777C43v99Ev();
extern void _ZN6S777C44v100Ev();
extern void _ZN6S777C44v101Ev();
extern void _ZN6S777C44v102Ev();
extern void _ZN6S777C44v103Ev();
extern void _ZN6S777C44v104Ev();
extern void _ZN6S777C44v105Ev();
extern void _ZN6S777C44v106Ev();
extern void _ZN6S777C44v107Ev();
extern void _ZN6S777C44v108Ev();
extern void _ZN6S777C44v109Ev();
extern void _ZN6S777C44v110Ev();
extern void _ZN6S777C44v111Ev();
extern void _ZN6S777C44v112Ev();
extern void _ZN6S777C44v113Ev();
extern void _ZN6S777C44v114Ev();
extern void _ZN6S777C44v115Ev();
extern void _ZN6S777C44v116Ev();
extern void _ZN6S777C44v117Ev();
extern void _ZN6S777C44v118Ev();
extern void _ZN6S777C44v119Ev();
extern void _ZN6S777C44v120Ev();
extern void _ZN6S777C44v121Ev();
extern void _ZN6S777C44v122Ev();
extern void _ZN6S777C44v123Ev();
extern void _ZN6S777C44v124Ev();
extern void _ZN6S777C44v125Ev();
extern void _ZN6S777C44v126Ev();
extern void _ZN6S777C44v127Ev();
extern void _ZN6S777C44v128Ev();
extern void _ZN6S777C44v129Ev();
extern void _ZN6S777C44v130Ev();
extern void _ZN6S777C44v131Ev();
extern void _ZN6S777C34v132Ev();
extern void _ZN6S777C34v133Ev();
extern void _ZN6S777C34v134Ev();
extern void _ZN6S777C34v135Ev();
extern void _ZN6S777C34v136Ev();
extern void _ZN6S777C34v137Ev();
extern void _ZN6S777C34v138Ev();
extern void _ZN6S777C34v139Ev();
extern void _ZN6S777C34v140Ev();
extern void _ZN6S777C34v141Ev();
extern void _ZN6S777C34v142Ev();
extern void _ZN6S777C34v143Ev();
extern void _ZN6S777C34v144Ev();
extern void _ZN6S777C34v145Ev();
extern void _ZN6S777C34v146Ev();
extern void _ZN6S777C34v147Ev();
extern void _ZN6S777C34v148Ev();
extern void _ZN6S777C34v149Ev();
static  VTBL_ENTRY vtc_S777C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S777C3[0]),
  (VTBL_ENTRY)&_ZN6S777C3D1Ev,
  (VTBL_ENTRY)&_ZN6S777C3D0Ev,
  (VTBL_ENTRY)&_ZN6S777C43v10Ev,
  (VTBL_ENTRY)&_ZN6S777C43v11Ev,
  (VTBL_ENTRY)&_ZN6S777C43v12Ev,
  (VTBL_ENTRY)&_ZN6S777C43v13Ev,
  (VTBL_ENTRY)&_ZN6S777C43v14Ev,
  (VTBL_ENTRY)&_ZN6S777C43v15Ev,
  (VTBL_ENTRY)&_ZN6S777C43v16Ev,
  (VTBL_ENTRY)&_ZN6S777C43v17Ev,
  (VTBL_ENTRY)&_ZN6S777C43v18Ev,
  (VTBL_ENTRY)&_ZN6S777C43v19Ev,
  (VTBL_ENTRY)&_ZN6S777C43v20Ev,
  (VTBL_ENTRY)&_ZN6S777C43v21Ev,
  (VTBL_ENTRY)&_ZN6S777C43v22Ev,
  (VTBL_ENTRY)&_ZN6S777C43v23Ev,
  (VTBL_ENTRY)&_ZN6S777C43v24Ev,
  (VTBL_ENTRY)&_ZN6S777C43v25Ev,
  (VTBL_ENTRY)&_ZN6S777C43v26Ev,
  (VTBL_ENTRY)&_ZN6S777C43v27Ev,
  (VTBL_ENTRY)&_ZN6S777C43v28Ev,
  (VTBL_ENTRY)&_ZN6S777C43v29Ev,
  (VTBL_ENTRY)&_ZN6S777C43v30Ev,
  (VTBL_ENTRY)&_ZN6S777C43v31Ev,
  (VTBL_ENTRY)&_ZN6S777C43v32Ev,
  (VTBL_ENTRY)&_ZN6S777C43v33Ev,
  (VTBL_ENTRY)&_ZN6S777C43v34Ev,
  (VTBL_ENTRY)&_ZN6S777C43v35Ev,
  (VTBL_ENTRY)&_ZN6S777C43v36Ev,
  (VTBL_ENTRY)&_ZN6S777C43v37Ev,
  (VTBL_ENTRY)&_ZN6S777C43v38Ev,
  (VTBL_ENTRY)&_ZN6S777C43v39Ev,
  (VTBL_ENTRY)&_ZN6S777C43v40Ev,
  (VTBL_ENTRY)&_ZN6S777C43v41Ev,
  (VTBL_ENTRY)&_ZN6S777C43v42Ev,
  (VTBL_ENTRY)&_ZN6S777C43v43Ev,
  (VTBL_ENTRY)&_ZN6S777C43v44Ev,
  (VTBL_ENTRY)&_ZN6S777C43v45Ev,
  (VTBL_ENTRY)&_ZN6S777C43v46Ev,
  (VTBL_ENTRY)&_ZN6S777C43v47Ev,
  (VTBL_ENTRY)&_ZN6S777C43v48Ev,
  (VTBL_ENTRY)&_ZN6S777C43v49Ev,
  (VTBL_ENTRY)&_ZN6S777C43v50Ev,
  (VTBL_ENTRY)&_ZN6S777C43v51Ev,
  (VTBL_ENTRY)&_ZN6S777C43v52Ev,
  (VTBL_ENTRY)&_ZN6S777C43v53Ev,
  (VTBL_ENTRY)&_ZN6S777C43v54Ev,
  (VTBL_ENTRY)&_ZN6S777C43v55Ev,
  (VTBL_ENTRY)&_ZN6S777C43v56Ev,
  (VTBL_ENTRY)&_ZN6S777C43v57Ev,
  (VTBL_ENTRY)&_ZN6S777C43v58Ev,
  (VTBL_ENTRY)&_ZN6S777C43v59Ev,
  (VTBL_ENTRY)&_ZN6S777C43v60Ev,
  (VTBL_ENTRY)&_ZN6S777C43v61Ev,
  (VTBL_ENTRY)&_ZN6S777C43v62Ev,
  (VTBL_ENTRY)&_ZN6S777C43v63Ev,
  (VTBL_ENTRY)&_ZN6S777C43v64Ev,
  (VTBL_ENTRY)&_ZN6S777C43v65Ev,
  (VTBL_ENTRY)&_ZN6S777C43v66Ev,
  (VTBL_ENTRY)&_ZN6S777C43v67Ev,
  (VTBL_ENTRY)&_ZN6S777C43v68Ev,
  (VTBL_ENTRY)&_ZN6S777C43v69Ev,
  (VTBL_ENTRY)&_ZN6S777C43v70Ev,
  (VTBL_ENTRY)&_ZN6S777C43v71Ev,
  (VTBL_ENTRY)&_ZN6S777C43v72Ev,
  (VTBL_ENTRY)&_ZN6S777C43v73Ev,
  (VTBL_ENTRY)&_ZN6S777C43v74Ev,
  (VTBL_ENTRY)&_ZN6S777C43v75Ev,
  (VTBL_ENTRY)&_ZN6S777C43v76Ev,
  (VTBL_ENTRY)&_ZN6S777C43v77Ev,
  (VTBL_ENTRY)&_ZN6S777C43v78Ev,
  (VTBL_ENTRY)&_ZN6S777C43v79Ev,
  (VTBL_ENTRY)&_ZN6S777C43v80Ev,
  (VTBL_ENTRY)&_ZN6S777C43v81Ev,
  (VTBL_ENTRY)&_ZN6S777C43v82Ev,
  (VTBL_ENTRY)&_ZN6S777C43v83Ev,
  (VTBL_ENTRY)&_ZN6S777C43v84Ev,
  (VTBL_ENTRY)&_ZN6S777C43v85Ev,
  (VTBL_ENTRY)&_ZN6S777C43v86Ev,
  (VTBL_ENTRY)&_ZN6S777C43v87Ev,
  (VTBL_ENTRY)&_ZN6S777C43v88Ev,
  (VTBL_ENTRY)&_ZN6S777C43v89Ev,
  (VTBL_ENTRY)&_ZN6S777C43v90Ev,
  (VTBL_ENTRY)&_ZN6S777C43v91Ev,
  (VTBL_ENTRY)&_ZN6S777C43v92Ev,
  (VTBL_ENTRY)&_ZN6S777C43v93Ev,
  (VTBL_ENTRY)&_ZN6S777C43v94Ev,
  (VTBL_ENTRY)&_ZN6S777C43v95Ev,
  (VTBL_ENTRY)&_ZN6S777C43v96Ev,
  (VTBL_ENTRY)&_ZN6S777C43v97Ev,
  (VTBL_ENTRY)&_ZN6S777C43v98Ev,
  (VTBL_ENTRY)&_ZN6S777C43v99Ev,
  (VTBL_ENTRY)&_ZN6S777C44v100Ev,
  (VTBL_ENTRY)&_ZN6S777C44v101Ev,
  (VTBL_ENTRY)&_ZN6S777C44v102Ev,
  (VTBL_ENTRY)&_ZN6S777C44v103Ev,
  (VTBL_ENTRY)&_ZN6S777C44v104Ev,
  (VTBL_ENTRY)&_ZN6S777C44v105Ev,
  (VTBL_ENTRY)&_ZN6S777C44v106Ev,
  (VTBL_ENTRY)&_ZN6S777C44v107Ev,
  (VTBL_ENTRY)&_ZN6S777C44v108Ev,
  (VTBL_ENTRY)&_ZN6S777C44v109Ev,
  (VTBL_ENTRY)&_ZN6S777C44v110Ev,
  (VTBL_ENTRY)&_ZN6S777C44v111Ev,
  (VTBL_ENTRY)&_ZN6S777C44v112Ev,
  (VTBL_ENTRY)&_ZN6S777C44v113Ev,
  (VTBL_ENTRY)&_ZN6S777C44v114Ev,
  (VTBL_ENTRY)&_ZN6S777C44v115Ev,
  (VTBL_ENTRY)&_ZN6S777C44v116Ev,
  (VTBL_ENTRY)&_ZN6S777C44v117Ev,
  (VTBL_ENTRY)&_ZN6S777C44v118Ev,
  (VTBL_ENTRY)&_ZN6S777C44v119Ev,
  (VTBL_ENTRY)&_ZN6S777C44v120Ev,
  (VTBL_ENTRY)&_ZN6S777C44v121Ev,
  (VTBL_ENTRY)&_ZN6S777C44v122Ev,
  (VTBL_ENTRY)&_ZN6S777C44v123Ev,
  (VTBL_ENTRY)&_ZN6S777C44v124Ev,
  (VTBL_ENTRY)&_ZN6S777C44v125Ev,
  (VTBL_ENTRY)&_ZN6S777C44v126Ev,
  (VTBL_ENTRY)&_ZN6S777C44v127Ev,
  (VTBL_ENTRY)&_ZN6S777C44v128Ev,
  (VTBL_ENTRY)&_ZN6S777C44v129Ev,
  (VTBL_ENTRY)&_ZN6S777C44v130Ev,
  (VTBL_ENTRY)&_ZN6S777C44v131Ev,
  (VTBL_ENTRY)&_ZN6S777C34v132Ev,
  (VTBL_ENTRY)&_ZN6S777C34v133Ev,
  (VTBL_ENTRY)&_ZN6S777C34v134Ev,
  (VTBL_ENTRY)&_ZN6S777C34v135Ev,
  (VTBL_ENTRY)&_ZN6S777C34v136Ev,
  (VTBL_ENTRY)&_ZN6S777C34v137Ev,
  (VTBL_ENTRY)&_ZN6S777C34v138Ev,
  (VTBL_ENTRY)&_ZN6S777C34v139Ev,
  (VTBL_ENTRY)&_ZN6S777C34v140Ev,
  (VTBL_ENTRY)&_ZN6S777C34v141Ev,
  (VTBL_ENTRY)&_ZN6S777C34v142Ev,
  (VTBL_ENTRY)&_ZN6S777C34v143Ev,
  (VTBL_ENTRY)&_ZN6S777C34v144Ev,
  (VTBL_ENTRY)&_ZN6S777C34v145Ev,
  (VTBL_ENTRY)&_ZN6S777C34v146Ev,
  (VTBL_ENTRY)&_ZN6S777C34v147Ev,
  (VTBL_ENTRY)&_ZN6S777C34v148Ev,
  (VTBL_ENTRY)&_ZN6S777C34v149Ev,
};
extern VTBL_ENTRY _ZTI6S777C3[];
extern  VTBL_ENTRY _ZTV6S777C3[];
Class_Descriptor cd_S777C3 = {  "S777C3", // class name
  bases_S777C3, 2,
  &(vtc_S777C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S777C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S777C3),144, //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  S777C2  : S777C3 {
  virtual void  v150(); // _ZN6S777C24v150Ev
  ~S777C2(); // tgen
  S777C2(); // tgen
};
//SIG(-1 S777C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S777C2 ::v150(){vfunc_called(this, "_ZN6S777C24v150Ev");}
S777C2 ::~S777C2(){ note_dtor("S777C2", this);} // tgen
S777C2 ::S777C2(){ note_ctor("S777C2", this);} // tgen

static void Test_S777C2()
{
  extern Class_Descriptor cd_S777C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S777C2, buf);
    S777C2 *dp, &lv = *(dp=new (buf) S777C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S777C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S777C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S777C4*)(S777C3*), 0, "S777C2");
    check_base_class_offset(lv, (S777C4*)(S777C3*), 0, "S777C2");
    check_base_class_offset(lv, (S777C3*), 0, "S777C2");
    test_class_info(&lv, &cd_S777C2);
    dp->~S777C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS777C2(Test_S777C2, "S777C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S777C2C1Ev();
extern void _ZN6S777C2D1Ev();
Name_Map name_map_S777C2[] = {
  NSPAIR(_ZN6S777C2C1Ev),
  NSPAIR(_ZN6S777C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S777C4;
extern VTBL_ENTRY _ZTI6S777C4[];
extern  VTBL_ENTRY _ZTV6S777C4[];
extern Class_Descriptor cd_S777C3;
extern VTBL_ENTRY _ZTI6S777C3[];
extern  VTBL_ENTRY _ZTV6S777C3[];
static Base_Class bases_S777C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S777C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S777C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S777C2[];
extern void _ZN6S777C2D1Ev();
extern void _ZN6S777C2D0Ev();
extern void _ZN6S777C43v10Ev();
extern void _ZN6S777C43v11Ev();
extern void _ZN6S777C43v12Ev();
extern void _ZN6S777C43v13Ev();
extern void _ZN6S777C43v14Ev();
extern void _ZN6S777C43v15Ev();
extern void _ZN6S777C43v16Ev();
extern void _ZN6S777C43v17Ev();
extern void _ZN6S777C43v18Ev();
extern void _ZN6S777C43v19Ev();
extern void _ZN6S777C43v20Ev();
extern void _ZN6S777C43v21Ev();
extern void _ZN6S777C43v22Ev();
extern void _ZN6S777C43v23Ev();
extern void _ZN6S777C43v24Ev();
extern void _ZN6S777C43v25Ev();
extern void _ZN6S777C43v26Ev();
extern void _ZN6S777C43v27Ev();
extern void _ZN6S777C43v28Ev();
extern void _ZN6S777C43v29Ev();
extern void _ZN6S777C43v30Ev();
extern void _ZN6S777C43v31Ev();
extern void _ZN6S777C43v32Ev();
extern void _ZN6S777C43v33Ev();
extern void _ZN6S777C43v34Ev();
extern void _ZN6S777C43v35Ev();
extern void _ZN6S777C43v36Ev();
extern void _ZN6S777C43v37Ev();
extern void _ZN6S777C43v38Ev();
extern void _ZN6S777C43v39Ev();
extern void _ZN6S777C43v40Ev();
extern void _ZN6S777C43v41Ev();
extern void _ZN6S777C43v42Ev();
extern void _ZN6S777C43v43Ev();
extern void _ZN6S777C43v44Ev();
extern void _ZN6S777C43v45Ev();
extern void _ZN6S777C43v46Ev();
extern void _ZN6S777C43v47Ev();
extern void _ZN6S777C43v48Ev();
extern void _ZN6S777C43v49Ev();
extern void _ZN6S777C43v50Ev();
extern void _ZN6S777C43v51Ev();
extern void _ZN6S777C43v52Ev();
extern void _ZN6S777C43v53Ev();
extern void _ZN6S777C43v54Ev();
extern void _ZN6S777C43v55Ev();
extern void _ZN6S777C43v56Ev();
extern void _ZN6S777C43v57Ev();
extern void _ZN6S777C43v58Ev();
extern void _ZN6S777C43v59Ev();
extern void _ZN6S777C43v60Ev();
extern void _ZN6S777C43v61Ev();
extern void _ZN6S777C43v62Ev();
extern void _ZN6S777C43v63Ev();
extern void _ZN6S777C43v64Ev();
extern void _ZN6S777C43v65Ev();
extern void _ZN6S777C43v66Ev();
extern void _ZN6S777C43v67Ev();
extern void _ZN6S777C43v68Ev();
extern void _ZN6S777C43v69Ev();
extern void _ZN6S777C43v70Ev();
extern void _ZN6S777C43v71Ev();
extern void _ZN6S777C43v72Ev();
extern void _ZN6S777C43v73Ev();
extern void _ZN6S777C43v74Ev();
extern void _ZN6S777C43v75Ev();
extern void _ZN6S777C43v76Ev();
extern void _ZN6S777C43v77Ev();
extern void _ZN6S777C43v78Ev();
extern void _ZN6S777C43v79Ev();
extern void _ZN6S777C43v80Ev();
extern void _ZN6S777C43v81Ev();
extern void _ZN6S777C43v82Ev();
extern void _ZN6S777C43v83Ev();
extern void _ZN6S777C43v84Ev();
extern void _ZN6S777C43v85Ev();
extern void _ZN6S777C43v86Ev();
extern void _ZN6S777C43v87Ev();
extern void _ZN6S777C43v88Ev();
extern void _ZN6S777C43v89Ev();
extern void _ZN6S777C43v90Ev();
extern void _ZN6S777C43v91Ev();
extern void _ZN6S777C43v92Ev();
extern void _ZN6S777C43v93Ev();
extern void _ZN6S777C43v94Ev();
extern void _ZN6S777C43v95Ev();
extern void _ZN6S777C43v96Ev();
extern void _ZN6S777C43v97Ev();
extern void _ZN6S777C43v98Ev();
extern void _ZN6S777C43v99Ev();
extern void _ZN6S777C44v100Ev();
extern void _ZN6S777C44v101Ev();
extern void _ZN6S777C44v102Ev();
extern void _ZN6S777C44v103Ev();
extern void _ZN6S777C44v104Ev();
extern void _ZN6S777C44v105Ev();
extern void _ZN6S777C44v106Ev();
extern void _ZN6S777C44v107Ev();
extern void _ZN6S777C44v108Ev();
extern void _ZN6S777C44v109Ev();
extern void _ZN6S777C44v110Ev();
extern void _ZN6S777C44v111Ev();
extern void _ZN6S777C44v112Ev();
extern void _ZN6S777C44v113Ev();
extern void _ZN6S777C44v114Ev();
extern void _ZN6S777C44v115Ev();
extern void _ZN6S777C44v116Ev();
extern void _ZN6S777C44v117Ev();
extern void _ZN6S777C44v118Ev();
extern void _ZN6S777C44v119Ev();
extern void _ZN6S777C44v120Ev();
extern void _ZN6S777C44v121Ev();
extern void _ZN6S777C44v122Ev();
extern void _ZN6S777C44v123Ev();
extern void _ZN6S777C44v124Ev();
extern void _ZN6S777C44v125Ev();
extern void _ZN6S777C44v126Ev();
extern void _ZN6S777C44v127Ev();
extern void _ZN6S777C44v128Ev();
extern void _ZN6S777C44v129Ev();
extern void _ZN6S777C44v130Ev();
extern void _ZN6S777C44v131Ev();
extern void _ZN6S777C34v132Ev();
extern void _ZN6S777C34v133Ev();
extern void _ZN6S777C34v134Ev();
extern void _ZN6S777C34v135Ev();
extern void _ZN6S777C34v136Ev();
extern void _ZN6S777C34v137Ev();
extern void _ZN6S777C34v138Ev();
extern void _ZN6S777C34v139Ev();
extern void _ZN6S777C34v140Ev();
extern void _ZN6S777C34v141Ev();
extern void _ZN6S777C34v142Ev();
extern void _ZN6S777C34v143Ev();
extern void _ZN6S777C34v144Ev();
extern void _ZN6S777C34v145Ev();
extern void _ZN6S777C34v146Ev();
extern void _ZN6S777C34v147Ev();
extern void _ZN6S777C34v148Ev();
extern void _ZN6S777C34v149Ev();
extern void _ZN6S777C24v150Ev();
static  VTBL_ENTRY vtc_S777C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S777C2[0]),
  (VTBL_ENTRY)&_ZN6S777C2D1Ev,
  (VTBL_ENTRY)&_ZN6S777C2D0Ev,
  (VTBL_ENTRY)&_ZN6S777C43v10Ev,
  (VTBL_ENTRY)&_ZN6S777C43v11Ev,
  (VTBL_ENTRY)&_ZN6S777C43v12Ev,
  (VTBL_ENTRY)&_ZN6S777C43v13Ev,
  (VTBL_ENTRY)&_ZN6S777C43v14Ev,
  (VTBL_ENTRY)&_ZN6S777C43v15Ev,
  (VTBL_ENTRY)&_ZN6S777C43v16Ev,
  (VTBL_ENTRY)&_ZN6S777C43v17Ev,
  (VTBL_ENTRY)&_ZN6S777C43v18Ev,
  (VTBL_ENTRY)&_ZN6S777C43v19Ev,
  (VTBL_ENTRY)&_ZN6S777C43v20Ev,
  (VTBL_ENTRY)&_ZN6S777C43v21Ev,
  (VTBL_ENTRY)&_ZN6S777C43v22Ev,
  (VTBL_ENTRY)&_ZN6S777C43v23Ev,
  (VTBL_ENTRY)&_ZN6S777C43v24Ev,
  (VTBL_ENTRY)&_ZN6S777C43v25Ev,
  (VTBL_ENTRY)&_ZN6S777C43v26Ev,
  (VTBL_ENTRY)&_ZN6S777C43v27Ev,
  (VTBL_ENTRY)&_ZN6S777C43v28Ev,
  (VTBL_ENTRY)&_ZN6S777C43v29Ev,
  (VTBL_ENTRY)&_ZN6S777C43v30Ev,
  (VTBL_ENTRY)&_ZN6S777C43v31Ev,
  (VTBL_ENTRY)&_ZN6S777C43v32Ev,
  (VTBL_ENTRY)&_ZN6S777C43v33Ev,
  (VTBL_ENTRY)&_ZN6S777C43v34Ev,
  (VTBL_ENTRY)&_ZN6S777C43v35Ev,
  (VTBL_ENTRY)&_ZN6S777C43v36Ev,
  (VTBL_ENTRY)&_ZN6S777C43v37Ev,
  (VTBL_ENTRY)&_ZN6S777C43v38Ev,
  (VTBL_ENTRY)&_ZN6S777C43v39Ev,
  (VTBL_ENTRY)&_ZN6S777C43v40Ev,
  (VTBL_ENTRY)&_ZN6S777C43v41Ev,
  (VTBL_ENTRY)&_ZN6S777C43v42Ev,
  (VTBL_ENTRY)&_ZN6S777C43v43Ev,
  (VTBL_ENTRY)&_ZN6S777C43v44Ev,
  (VTBL_ENTRY)&_ZN6S777C43v45Ev,
  (VTBL_ENTRY)&_ZN6S777C43v46Ev,
  (VTBL_ENTRY)&_ZN6S777C43v47Ev,
  (VTBL_ENTRY)&_ZN6S777C43v48Ev,
  (VTBL_ENTRY)&_ZN6S777C43v49Ev,
  (VTBL_ENTRY)&_ZN6S777C43v50Ev,
  (VTBL_ENTRY)&_ZN6S777C43v51Ev,
  (VTBL_ENTRY)&_ZN6S777C43v52Ev,
  (VTBL_ENTRY)&_ZN6S777C43v53Ev,
  (VTBL_ENTRY)&_ZN6S777C43v54Ev,
  (VTBL_ENTRY)&_ZN6S777C43v55Ev,
  (VTBL_ENTRY)&_ZN6S777C43v56Ev,
  (VTBL_ENTRY)&_ZN6S777C43v57Ev,
  (VTBL_ENTRY)&_ZN6S777C43v58Ev,
  (VTBL_ENTRY)&_ZN6S777C43v59Ev,
  (VTBL_ENTRY)&_ZN6S777C43v60Ev,
  (VTBL_ENTRY)&_ZN6S777C43v61Ev,
  (VTBL_ENTRY)&_ZN6S777C43v62Ev,
  (VTBL_ENTRY)&_ZN6S777C43v63Ev,
  (VTBL_ENTRY)&_ZN6S777C43v64Ev,
  (VTBL_ENTRY)&_ZN6S777C43v65Ev,
  (VTBL_ENTRY)&_ZN6S777C43v66Ev,
  (VTBL_ENTRY)&_ZN6S777C43v67Ev,
  (VTBL_ENTRY)&_ZN6S777C43v68Ev,
  (VTBL_ENTRY)&_ZN6S777C43v69Ev,
  (VTBL_ENTRY)&_ZN6S777C43v70Ev,
  (VTBL_ENTRY)&_ZN6S777C43v71Ev,
  (VTBL_ENTRY)&_ZN6S777C43v72Ev,
  (VTBL_ENTRY)&_ZN6S777C43v73Ev,
  (VTBL_ENTRY)&_ZN6S777C43v74Ev,
  (VTBL_ENTRY)&_ZN6S777C43v75Ev,
  (VTBL_ENTRY)&_ZN6S777C43v76Ev,
  (VTBL_ENTRY)&_ZN6S777C43v77Ev,
  (VTBL_ENTRY)&_ZN6S777C43v78Ev,
  (VTBL_ENTRY)&_ZN6S777C43v79Ev,
  (VTBL_ENTRY)&_ZN6S777C43v80Ev,
  (VTBL_ENTRY)&_ZN6S777C43v81Ev,
  (VTBL_ENTRY)&_ZN6S777C43v82Ev,
  (VTBL_ENTRY)&_ZN6S777C43v83Ev,
  (VTBL_ENTRY)&_ZN6S777C43v84Ev,
  (VTBL_ENTRY)&_ZN6S777C43v85Ev,
  (VTBL_ENTRY)&_ZN6S777C43v86Ev,
  (VTBL_ENTRY)&_ZN6S777C43v87Ev,
  (VTBL_ENTRY)&_ZN6S777C43v88Ev,
  (VTBL_ENTRY)&_ZN6S777C43v89Ev,
  (VTBL_ENTRY)&_ZN6S777C43v90Ev,
  (VTBL_ENTRY)&_ZN6S777C43v91Ev,
  (VTBL_ENTRY)&_ZN6S777C43v92Ev,
  (VTBL_ENTRY)&_ZN6S777C43v93Ev,
  (VTBL_ENTRY)&_ZN6S777C43v94Ev,
  (VTBL_ENTRY)&_ZN6S777C43v95Ev,
  (VTBL_ENTRY)&_ZN6S777C43v96Ev,
  (VTBL_ENTRY)&_ZN6S777C43v97Ev,
  (VTBL_ENTRY)&_ZN6S777C43v98Ev,
  (VTBL_ENTRY)&_ZN6S777C43v99Ev,
  (VTBL_ENTRY)&_ZN6S777C44v100Ev,
  (VTBL_ENTRY)&_ZN6S777C44v101Ev,
  (VTBL_ENTRY)&_ZN6S777C44v102Ev,
  (VTBL_ENTRY)&_ZN6S777C44v103Ev,
  (VTBL_ENTRY)&_ZN6S777C44v104Ev,
  (VTBL_ENTRY)&_ZN6S777C44v105Ev,
  (VTBL_ENTRY)&_ZN6S777C44v106Ev,
  (VTBL_ENTRY)&_ZN6S777C44v107Ev,
  (VTBL_ENTRY)&_ZN6S777C44v108Ev,
  (VTBL_ENTRY)&_ZN6S777C44v109Ev,
  (VTBL_ENTRY)&_ZN6S777C44v110Ev,
  (VTBL_ENTRY)&_ZN6S777C44v111Ev,
  (VTBL_ENTRY)&_ZN6S777C44v112Ev,
  (VTBL_ENTRY)&_ZN6S777C44v113Ev,
  (VTBL_ENTRY)&_ZN6S777C44v114Ev,
  (VTBL_ENTRY)&_ZN6S777C44v115Ev,
  (VTBL_ENTRY)&_ZN6S777C44v116Ev,
  (VTBL_ENTRY)&_ZN6S777C44v117Ev,
  (VTBL_ENTRY)&_ZN6S777C44v118Ev,
  (VTBL_ENTRY)&_ZN6S777C44v119Ev,
  (VTBL_ENTRY)&_ZN6S777C44v120Ev,
  (VTBL_ENTRY)&_ZN6S777C44v121Ev,
  (VTBL_ENTRY)&_ZN6S777C44v122Ev,
  (VTBL_ENTRY)&_ZN6S777C44v123Ev,
  (VTBL_ENTRY)&_ZN6S777C44v124Ev,
  (VTBL_ENTRY)&_ZN6S777C44v125Ev,
  (VTBL_ENTRY)&_ZN6S777C44v126Ev,
  (VTBL_ENTRY)&_ZN6S777C44v127Ev,
  (VTBL_ENTRY)&_ZN6S777C44v128Ev,
  (VTBL_ENTRY)&_ZN6S777C44v129Ev,
  (VTBL_ENTRY)&_ZN6S777C44v130Ev,
  (VTBL_ENTRY)&_ZN6S777C44v131Ev,
  (VTBL_ENTRY)&_ZN6S777C34v132Ev,
  (VTBL_ENTRY)&_ZN6S777C34v133Ev,
  (VTBL_ENTRY)&_ZN6S777C34v134Ev,
  (VTBL_ENTRY)&_ZN6S777C34v135Ev,
  (VTBL_ENTRY)&_ZN6S777C34v136Ev,
  (VTBL_ENTRY)&_ZN6S777C34v137Ev,
  (VTBL_ENTRY)&_ZN6S777C34v138Ev,
  (VTBL_ENTRY)&_ZN6S777C34v139Ev,
  (VTBL_ENTRY)&_ZN6S777C34v140Ev,
  (VTBL_ENTRY)&_ZN6S777C34v141Ev,
  (VTBL_ENTRY)&_ZN6S777C34v142Ev,
  (VTBL_ENTRY)&_ZN6S777C34v143Ev,
  (VTBL_ENTRY)&_ZN6S777C34v144Ev,
  (VTBL_ENTRY)&_ZN6S777C34v145Ev,
  (VTBL_ENTRY)&_ZN6S777C34v146Ev,
  (VTBL_ENTRY)&_ZN6S777C34v147Ev,
  (VTBL_ENTRY)&_ZN6S777C34v148Ev,
  (VTBL_ENTRY)&_ZN6S777C34v149Ev,
  (VTBL_ENTRY)&_ZN6S777C24v150Ev,
};
extern VTBL_ENTRY _ZTI6S777C2[];
extern  VTBL_ENTRY _ZTV6S777C2[];
Class_Descriptor cd_S777C2 = {  "S777C2", // class name
  bases_S777C2, 3,
  &(vtc_S777C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S777C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S777C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S777C1  : S777C2 {
  virtual void  v1(); // _ZN6S777C12v1Ev
  virtual void  v2(); // _ZN6S777C12v2Ev
  virtual void  v3(); // _ZN6S777C12v3Ev
  virtual void  v4(); // _ZN6S777C12v4Ev
  virtual void  v5(); // _ZN6S777C12v5Ev
  virtual void  v6(); // _ZN6S777C12v6Ev
  virtual void  v7(); // _ZN6S777C12v7Ev
  virtual void  v8(); // _ZN6S777C12v8Ev
  virtual void  v9(); // _ZN6S777C12v9Ev
  ~S777C1(); // tgen
  S777C1(); // tgen
};
//SIG(1 S777C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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 v149} v150} v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S777C1 ::v1(){vfunc_called(this, "_ZN6S777C12v1Ev");}
void  S777C1 ::v2(){vfunc_called(this, "_ZN6S777C12v2Ev");}
void  S777C1 ::v3(){vfunc_called(this, "_ZN6S777C12v3Ev");}
void  S777C1 ::v4(){vfunc_called(this, "_ZN6S777C12v4Ev");}
void  S777C1 ::v5(){vfunc_called(this, "_ZN6S777C12v5Ev");}
void  S777C1 ::v6(){vfunc_called(this, "_ZN6S777C12v6Ev");}
void  S777C1 ::v7(){vfunc_called(this, "_ZN6S777C12v7Ev");}
void  S777C1 ::v8(){vfunc_called(this, "_ZN6S777C12v8Ev");}
void  S777C1 ::v9(){vfunc_called(this, "_ZN6S777C12v9Ev");}
S777C1 ::~S777C1(){ note_dtor("S777C1", this);} // tgen
S777C1 ::S777C1(){ note_ctor("S777C1", this);} // tgen

static void Test_S777C1()
{
  extern Class_Descriptor cd_S777C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S777C1, buf);
    S777C1 *dp, &lv = *(dp=new (buf) S777C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S777C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S777C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S777C4*)(S777C3*)(S777C2*), 0, "S777C1");
    check_base_class_offset(lv, (S777C4*)(S777C3*)(S777C2*), 0, "S777C1");
    check_base_class_offset(lv, (S777C3*)(S777C2*), 0, "S777C1");
    check_base_class_offset(lv, (S777C2*), 0, "S777C1");
    test_class_info(&lv, &cd_S777C1);
    dp->~S777C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS777C1(Test_S777C1, "S777C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S777C1C1Ev();
extern void _ZN6S777C1D1Ev();
Name_Map name_map_S777C1[] = {
  NSPAIR(_ZN6S777C1C1Ev),
  NSPAIR(_ZN6S777C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S777C4;
extern VTBL_ENTRY _ZTI6S777C4[];
extern  VTBL_ENTRY _ZTV6S777C4[];
extern Class_Descriptor cd_S777C3;
extern VTBL_ENTRY _ZTI6S777C3[];
extern  VTBL_ENTRY _ZTV6S777C3[];
extern Class_Descriptor cd_S777C2;
extern VTBL_ENTRY _ZTI6S777C2[];
extern  VTBL_ENTRY _ZTV6S777C2[];
static Base_Class bases_S777C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S777C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S777C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S777C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S777C1[];
extern void _ZN6S777C1D1Ev();
extern void _ZN6S777C1D0Ev();
extern void _ZN6S777C43v10Ev();
extern void _ZN6S777C43v11Ev();
extern void _ZN6S777C43v12Ev();
extern void _ZN6S777C43v13Ev();
extern void _ZN6S777C43v14Ev();
extern void _ZN6S777C43v15Ev();
extern void _ZN6S777C43v16Ev();
extern void _ZN6S777C43v17Ev();
extern void _ZN6S777C43v18Ev();
extern void _ZN6S777C43v19Ev();
extern void _ZN6S777C43v20Ev();
extern void _ZN6S777C43v21Ev();
extern void _ZN6S777C43v22Ev();
extern void _ZN6S777C43v23Ev();
extern void _ZN6S777C43v24Ev();
extern void _ZN6S777C43v25Ev();
extern void _ZN6S777C43v26Ev();
extern void _ZN6S777C43v27Ev();
extern void _ZN6S777C43v28Ev();
extern void _ZN6S777C43v29Ev();
extern void _ZN6S777C43v30Ev();
extern void _ZN6S777C43v31Ev();
extern void _ZN6S777C43v32Ev();
extern void _ZN6S777C43v33Ev();
extern void _ZN6S777C43v34Ev();
extern void _ZN6S777C43v35Ev();
extern void _ZN6S777C43v36Ev();
extern void _ZN6S777C43v37Ev();
extern void _ZN6S777C43v38Ev();
extern void _ZN6S777C43v39Ev();
extern void _ZN6S777C43v40Ev();
extern void _ZN6S777C43v41Ev();
extern void _ZN6S777C43v42Ev();
extern void _ZN6S777C43v43Ev();
extern void _ZN6S777C43v44Ev();
extern void _ZN6S777C43v45Ev();
extern void _ZN6S777C43v46Ev();
extern void _ZN6S777C43v47Ev();
extern void _ZN6S777C43v48Ev();
extern void _ZN6S777C43v49Ev();
extern void _ZN6S777C43v50Ev();
extern void _ZN6S777C43v51Ev();
extern void _ZN6S777C43v52Ev();
extern void _ZN6S777C43v53Ev();
extern void _ZN6S777C43v54Ev();
extern void _ZN6S777C43v55Ev();
extern void _ZN6S777C43v56Ev();
extern void _ZN6S777C43v57Ev();
extern void _ZN6S777C43v58Ev();
extern void _ZN6S777C43v59Ev();
extern void _ZN6S777C43v60Ev();
extern void _ZN6S777C43v61Ev();
extern void _ZN6S777C43v62Ev();
extern void _ZN6S777C43v63Ev();
extern void _ZN6S777C43v64Ev();
extern void _ZN6S777C43v65Ev();
extern void _ZN6S777C43v66Ev();
extern void _ZN6S777C43v67Ev();
extern void _ZN6S777C43v68Ev();
extern void _ZN6S777C43v69Ev();
extern void _ZN6S777C43v70Ev();
extern void _ZN6S777C43v71Ev();
extern void _ZN6S777C43v72Ev();
extern void _ZN6S777C43v73Ev();
extern void _ZN6S777C43v74Ev();
extern void _ZN6S777C43v75Ev();
extern void _ZN6S777C43v76Ev();
extern void _ZN6S777C43v77Ev();
extern void _ZN6S777C43v78Ev();
extern void _ZN6S777C43v79Ev();
extern void _ZN6S777C43v80Ev();
extern void _ZN6S777C43v81Ev();
extern void _ZN6S777C43v82Ev();
extern void _ZN6S777C43v83Ev();
extern void _ZN6S777C43v84Ev();
extern void _ZN6S777C43v85Ev();
extern void _ZN6S777C43v86Ev();
extern void _ZN6S777C43v87Ev();
extern void _ZN6S777C43v88Ev();
extern void _ZN6S777C43v89Ev();
extern void _ZN6S777C43v90Ev();
extern void _ZN6S777C43v91Ev();
extern void _ZN6S777C43v92Ev();
extern void _ZN6S777C43v93Ev();
extern void _ZN6S777C43v94Ev();
extern void _ZN6S777C43v95Ev();
extern void _ZN6S777C43v96Ev();
extern void _ZN6S777C43v97Ev();
extern void _ZN6S777C43v98Ev();
extern void _ZN6S777C43v99Ev();
extern void _ZN6S777C44v100Ev();
extern void _ZN6S777C44v101Ev();
extern void _ZN6S777C44v102Ev();
extern void _ZN6S777C44v103Ev();
extern void _ZN6S777C44v104Ev();
extern void _ZN6S777C44v105Ev();
extern void _ZN6S777C44v106Ev();
extern void _ZN6S777C44v107Ev();
extern void _ZN6S777C44v108Ev();
extern void _ZN6S777C44v109Ev();
extern void _ZN6S777C44v110Ev();
extern void _ZN6S777C44v111Ev();
extern void _ZN6S777C44v112Ev();
extern void _ZN6S777C44v113Ev();
extern void _ZN6S777C44v114Ev();
extern void _ZN6S777C44v115Ev();
extern void _ZN6S777C44v116Ev();
extern void _ZN6S777C44v117Ev();
extern void _ZN6S777C44v118Ev();
extern void _ZN6S777C44v119Ev();
extern void _ZN6S777C44v120Ev();
extern void _ZN6S777C44v121Ev();
extern void _ZN6S777C44v122Ev();
extern void _ZN6S777C44v123Ev();
extern void _ZN6S777C44v124Ev();
extern void _ZN6S777C44v125Ev();
extern void _ZN6S777C44v126Ev();
extern void _ZN6S777C44v127Ev();
extern void _ZN6S777C44v128Ev();
extern void _ZN6S777C44v129Ev();
extern void _ZN6S777C44v130Ev();
extern void _ZN6S777C44v131Ev();
extern void _ZN6S777C34v132Ev();
extern void _ZN6S777C34v133Ev();
extern void _ZN6S777C34v134Ev();
extern void _ZN6S777C34v135Ev();
extern void _ZN6S777C34v136Ev();
extern void _ZN6S777C34v137Ev();
extern void _ZN6S777C34v138Ev();
extern void _ZN6S777C34v139Ev();
extern void _ZN6S777C34v140Ev();
extern void _ZN6S777C34v141Ev();
extern void _ZN6S777C34v142Ev();
extern void _ZN6S777C34v143Ev();
extern void _ZN6S777C34v144Ev();
extern void _ZN6S777C34v145Ev();
extern void _ZN6S777C34v146Ev();
extern void _ZN6S777C34v147Ev();
extern void _ZN6S777C34v148Ev();
extern void _ZN6S777C34v149Ev();
extern void _ZN6S777C24v150Ev();
extern void _ZN6S777C12v1Ev();
extern void _ZN6S777C12v2Ev();
extern void _ZN6S777C12v3Ev();
extern void _ZN6S777C12v4Ev();
extern void _ZN6S777C12v5Ev();
extern void _ZN6S777C12v6Ev();
extern void _ZN6S777C12v7Ev();
extern void _ZN6S777C12v8Ev();
extern void _ZN6S777C12v9Ev();
static  VTBL_ENTRY vtc_S777C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S777C1[0]),
  (VTBL_ENTRY)&_ZN6S777C1D1Ev,
  (VTBL_ENTRY)&_ZN6S777C1D0Ev,
  (VTBL_ENTRY)&_ZN6S777C43v10Ev,
  (VTBL_ENTRY)&_ZN6S777C43v11Ev,
  (VTBL_ENTRY)&_ZN6S777C43v12Ev,
  (VTBL_ENTRY)&_ZN6S777C43v13Ev,
  (VTBL_ENTRY)&_ZN6S777C43v14Ev,
  (VTBL_ENTRY)&_ZN6S777C43v15Ev,
  (VTBL_ENTRY)&_ZN6S777C43v16Ev,
  (VTBL_ENTRY)&_ZN6S777C43v17Ev,
  (VTBL_ENTRY)&_ZN6S777C43v18Ev,
  (VTBL_ENTRY)&_ZN6S777C43v19Ev,
  (VTBL_ENTRY)&_ZN6S777C43v20Ev,
  (VTBL_ENTRY)&_ZN6S777C43v21Ev,
  (VTBL_ENTRY)&_ZN6S777C43v22Ev,
  (VTBL_ENTRY)&_ZN6S777C43v23Ev,
  (VTBL_ENTRY)&_ZN6S777C43v24Ev,
  (VTBL_ENTRY)&_ZN6S777C43v25Ev,
  (VTBL_ENTRY)&_ZN6S777C43v26Ev,
  (VTBL_ENTRY)&_ZN6S777C43v27Ev,
  (VTBL_ENTRY)&_ZN6S777C43v28Ev,
  (VTBL_ENTRY)&_ZN6S777C43v29Ev,
  (VTBL_ENTRY)&_ZN6S777C43v30Ev,
  (VTBL_ENTRY)&_ZN6S777C43v31Ev,
  (VTBL_ENTRY)&_ZN6S777C43v32Ev,
  (VTBL_ENTRY)&_ZN6S777C43v33Ev,
  (VTBL_ENTRY)&_ZN6S777C43v34Ev,
  (VTBL_ENTRY)&_ZN6S777C43v35Ev,
  (VTBL_ENTRY)&_ZN6S777C43v36Ev,
  (VTBL_ENTRY)&_ZN6S777C43v37Ev,
  (VTBL_ENTRY)&_ZN6S777C43v38Ev,
  (VTBL_ENTRY)&_ZN6S777C43v39Ev,
  (VTBL_ENTRY)&_ZN6S777C43v40Ev,
  (VTBL_ENTRY)&_ZN6S777C43v41Ev,
  (VTBL_ENTRY)&_ZN6S777C43v42Ev,
  (VTBL_ENTRY)&_ZN6S777C43v43Ev,
  (VTBL_ENTRY)&_ZN6S777C43v44Ev,
  (VTBL_ENTRY)&_ZN6S777C43v45Ev,
  (VTBL_ENTRY)&_ZN6S777C43v46Ev,
  (VTBL_ENTRY)&_ZN6S777C43v47Ev,
  (VTBL_ENTRY)&_ZN6S777C43v48Ev,
  (VTBL_ENTRY)&_ZN6S777C43v49Ev,
  (VTBL_ENTRY)&_ZN6S777C43v50Ev,
  (VTBL_ENTRY)&_ZN6S777C43v51Ev,
  (VTBL_ENTRY)&_ZN6S777C43v52Ev,
  (VTBL_ENTRY)&_ZN6S777C43v53Ev,
  (VTBL_ENTRY)&_ZN6S777C43v54Ev,
  (VTBL_ENTRY)&_ZN6S777C43v55Ev,
  (VTBL_ENTRY)&_ZN6S777C43v56Ev,
  (VTBL_ENTRY)&_ZN6S777C43v57Ev,
  (VTBL_ENTRY)&_ZN6S777C43v58Ev,
  (VTBL_ENTRY)&_ZN6S777C43v59Ev,
  (VTBL_ENTRY)&_ZN6S777C43v60Ev,
  (VTBL_ENTRY)&_ZN6S777C43v61Ev,
  (VTBL_ENTRY)&_ZN6S777C43v62Ev,
  (VTBL_ENTRY)&_ZN6S777C43v63Ev,
  (VTBL_ENTRY)&_ZN6S777C43v64Ev,
  (VTBL_ENTRY)&_ZN6S777C43v65Ev,
  (VTBL_ENTRY)&_ZN6S777C43v66Ev,
  (VTBL_ENTRY)&_ZN6S777C43v67Ev,
  (VTBL_ENTRY)&_ZN6S777C43v68Ev,
  (VTBL_ENTRY)&_ZN6S777C43v69Ev,
  (VTBL_ENTRY)&_ZN6S777C43v70Ev,
  (VTBL_ENTRY)&_ZN6S777C43v71Ev,
  (VTBL_ENTRY)&_ZN6S777C43v72Ev,
  (VTBL_ENTRY)&_ZN6S777C43v73Ev,
  (VTBL_ENTRY)&_ZN6S777C43v74Ev,
  (VTBL_ENTRY)&_ZN6S777C43v75Ev,
  (VTBL_ENTRY)&_ZN6S777C43v76Ev,
  (VTBL_ENTRY)&_ZN6S777C43v77Ev,
  (VTBL_ENTRY)&_ZN6S777C43v78Ev,
  (VTBL_ENTRY)&_ZN6S777C43v79Ev,
  (VTBL_ENTRY)&_ZN6S777C43v80Ev,
  (VTBL_ENTRY)&_ZN6S777C43v81Ev,
  (VTBL_ENTRY)&_ZN6S777C43v82Ev,
  (VTBL_ENTRY)&_ZN6S777C43v83Ev,
  (VTBL_ENTRY)&_ZN6S777C43v84Ev,
  (VTBL_ENTRY)&_ZN6S777C43v85Ev,
  (VTBL_ENTRY)&_ZN6S777C43v86Ev,
  (VTBL_ENTRY)&_ZN6S777C43v87Ev,
  (VTBL_ENTRY)&_ZN6S777C43v88Ev,
  (VTBL_ENTRY)&_ZN6S777C43v89Ev,
  (VTBL_ENTRY)&_ZN6S777C43v90Ev,
  (VTBL_ENTRY)&_ZN6S777C43v91Ev,
  (VTBL_ENTRY)&_ZN6S777C43v92Ev,
  (VTBL_ENTRY)&_ZN6S777C43v93Ev,
  (VTBL_ENTRY)&_ZN6S777C43v94Ev,
  (VTBL_ENTRY)&_ZN6S777C43v95Ev,
  (VTBL_ENTRY)&_ZN6S777C43v96Ev,
  (VTBL_ENTRY)&_ZN6S777C43v97Ev,
  (VTBL_ENTRY)&_ZN6S777C43v98Ev,
  (VTBL_ENTRY)&_ZN6S777C43v99Ev,
  (VTBL_ENTRY)&_ZN6S777C44v100Ev,
  (VTBL_ENTRY)&_ZN6S777C44v101Ev,
  (VTBL_ENTRY)&_ZN6S777C44v102Ev,
  (VTBL_ENTRY)&_ZN6S777C44v103Ev,
  (VTBL_ENTRY)&_ZN6S777C44v104Ev,
  (VTBL_ENTRY)&_ZN6S777C44v105Ev,
  (VTBL_ENTRY)&_ZN6S777C44v106Ev,
  (VTBL_ENTRY)&_ZN6S777C44v107Ev,
  (VTBL_ENTRY)&_ZN6S777C44v108Ev,
  (VTBL_ENTRY)&_ZN6S777C44v109Ev,
  (VTBL_ENTRY)&_ZN6S777C44v110Ev,
  (VTBL_ENTRY)&_ZN6S777C44v111Ev,
  (VTBL_ENTRY)&_ZN6S777C44v112Ev,
  (VTBL_ENTRY)&_ZN6S777C44v113Ev,
  (VTBL_ENTRY)&_ZN6S777C44v114Ev,
  (VTBL_ENTRY)&_ZN6S777C44v115Ev,
  (VTBL_ENTRY)&_ZN6S777C44v116Ev,
  (VTBL_ENTRY)&_ZN6S777C44v117Ev,
  (VTBL_ENTRY)&_ZN6S777C44v118Ev,
  (VTBL_ENTRY)&_ZN6S777C44v119Ev,
  (VTBL_ENTRY)&_ZN6S777C44v120Ev,
  (VTBL_ENTRY)&_ZN6S777C44v121Ev,
  (VTBL_ENTRY)&_ZN6S777C44v122Ev,
  (VTBL_ENTRY)&_ZN6S777C44v123Ev,
  (VTBL_ENTRY)&_ZN6S777C44v124Ev,
  (VTBL_ENTRY)&_ZN6S777C44v125Ev,
  (VTBL_ENTRY)&_ZN6S777C44v126Ev,
  (VTBL_ENTRY)&_ZN6S777C44v127Ev,
  (VTBL_ENTRY)&_ZN6S777C44v128Ev,
  (VTBL_ENTRY)&_ZN6S777C44v129Ev,
  (VTBL_ENTRY)&_ZN6S777C44v130Ev,
  (VTBL_ENTRY)&_ZN6S777C44v131Ev,
  (VTBL_ENTRY)&_ZN6S777C34v132Ev,
  (VTBL_ENTRY)&_ZN6S777C34v133Ev,
  (VTBL_ENTRY)&_ZN6S777C34v134Ev,
  (VTBL_ENTRY)&_ZN6S777C34v135Ev,
  (VTBL_ENTRY)&_ZN6S777C34v136Ev,
  (VTBL_ENTRY)&_ZN6S777C34v137Ev,
  (VTBL_ENTRY)&_ZN6S777C34v138Ev,
  (VTBL_ENTRY)&_ZN6S777C34v139Ev,
  (VTBL_ENTRY)&_ZN6S777C34v140Ev,
  (VTBL_ENTRY)&_ZN6S777C34v141Ev,
  (VTBL_ENTRY)&_ZN6S777C34v142Ev,
  (VTBL_ENTRY)&_ZN6S777C34v143Ev,
  (VTBL_ENTRY)&_ZN6S777C34v144Ev,
  (VTBL_ENTRY)&_ZN6S777C34v145Ev,
  (VTBL_ENTRY)&_ZN6S777C34v146Ev,
  (VTBL_ENTRY)&_ZN6S777C34v147Ev,
  (VTBL_ENTRY)&_ZN6S777C34v148Ev,
  (VTBL_ENTRY)&_ZN6S777C34v149Ev,
  (VTBL_ENTRY)&_ZN6S777C24v150Ev,
  (VTBL_ENTRY)&_ZN6S777C12v1Ev,
  (VTBL_ENTRY)&_ZN6S777C12v2Ev,
  (VTBL_ENTRY)&_ZN6S777C12v3Ev,
  (VTBL_ENTRY)&_ZN6S777C12v4Ev,
  (VTBL_ENTRY)&_ZN6S777C12v5Ev,
  (VTBL_ENTRY)&_ZN6S777C12v6Ev,
  (VTBL_ENTRY)&_ZN6S777C12v7Ev,
  (VTBL_ENTRY)&_ZN6S777C12v8Ev,
  (VTBL_ENTRY)&_ZN6S777C12v9Ev,
};
extern VTBL_ENTRY _ZTI6S777C1[];
extern  VTBL_ENTRY _ZTV6S777C1[];
Class_Descriptor cd_S777C1 = {  "S777C1", // class name
  bases_S777C1, 4,
  &(vtc_S777C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S777C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S777C1),154, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1772C3  : S785C5_nt {
  virtual void  v11(); // _ZN7S1772C33v11Ev
  virtual void  v12(); // _ZN7S1772C33v12Ev
  virtual void  v13(); // _ZN7S1772C33v13Ev
  virtual void  v14(); // _ZN7S1772C33v14Ev
  virtual void  v15(); // _ZN7S1772C33v15Ev
  virtual void  v16(); // _ZN7S1772C33v16Ev
  virtual void  v17(); // _ZN7S1772C33v17Ev
  virtual void  v18(); // _ZN7S1772C33v18Ev
  virtual void  v19(); // _ZN7S1772C33v19Ev
  virtual void  v20(); // _ZN7S1772C33v20Ev
  virtual void  v21(); // _ZN7S1772C33v21Ev
  virtual void  v22(); // _ZN7S1772C33v22Ev
  virtual void  v23(); // _ZN7S1772C33v23Ev
  virtual void  v24(); // _ZN7S1772C33v24Ev
  virtual void  v25(); // _ZN7S1772C33v25Ev
  virtual void  v26(); // _ZN7S1772C33v26Ev
  virtual void  v27(); // _ZN7S1772C33v27Ev
  virtual void  v28(); // _ZN7S1772C33v28Ev
  virtual void  v29(); // _ZN7S1772C33v29Ev
  virtual void  v30(); // _ZN7S1772C33v30Ev
  virtual void  v31(); // _ZN7S1772C33v31Ev
  virtual void  v32(); // _ZN7S1772C33v32Ev
  virtual void  v33(); // _ZN7S1772C33v33Ev
  virtual void  v34(); // _ZN7S1772C33v34Ev
  virtual void  v35(); // _ZN7S1772C33v35Ev
  virtual void  v36(); // _ZN7S1772C33v36Ev
  virtual void  v37(); // _ZN7S1772C33v37Ev
  virtual void  v38(); // _ZN7S1772C33v38Ev
  virtual void  v39(); // _ZN7S1772C33v39Ev
  virtual void  v40(); // _ZN7S1772C33v40Ev
  virtual void  v41(); // _ZN7S1772C33v41Ev
  virtual void  v42(); // _ZN7S1772C33v42Ev
  virtual void  v43(); // _ZN7S1772C33v43Ev
  virtual void  v44(); // _ZN7S1772C33v44Ev
  virtual void  v45(); // _ZN7S1772C33v45Ev
  virtual void  v46(); // _ZN7S1772C33v46Ev
  virtual void  v47(); // _ZN7S1772C33v47Ev
  virtual void  v48(); // _ZN7S1772C33v48Ev
  virtual void  v49(); // _ZN7S1772C33v49Ev
  virtual void  v50(); // _ZN7S1772C33v50Ev
  virtual void  v51(); // _ZN7S1772C33v51Ev
  virtual void  v52(); // _ZN7S1772C33v52Ev
  virtual void  v53(); // _ZN7S1772C33v53Ev
  virtual void  v54(); // _ZN7S1772C33v54Ev
  virtual void  v55(); // _ZN7S1772C33v55Ev
  virtual void  v56(); // _ZN7S1772C33v56Ev
  virtual void  v57(); // _ZN7S1772C33v57Ev
  virtual void  v58(); // _ZN7S1772C33v58Ev
  virtual void  v59(); // _ZN7S1772C33v59Ev
  virtual void  v60(); // _ZN7S1772C33v60Ev
  virtual void  v61(); // _ZN7S1772C33v61Ev
  virtual void  v62(); // _ZN7S1772C33v62Ev
  virtual void  v63(); // _ZN7S1772C33v63Ev
  virtual void  v64(); // _ZN7S1772C33v64Ev
  virtual void  v65(); // _ZN7S1772C33v65Ev
  virtual void  v66(); // _ZN7S1772C33v66Ev
  virtual void  v67(); // _ZN7S1772C33v67Ev
  virtual void  v68(); // _ZN7S1772C33v68Ev
  virtual void  v69(); // _ZN7S1772C33v69Ev
  virtual void  v70(); // _ZN7S1772C33v70Ev
  virtual void  v71(); // _ZN7S1772C33v71Ev
  virtual void  v72(); // _ZN7S1772C33v72Ev
  virtual void  v73(); // _ZN7S1772C33v73Ev
  virtual void  v74(); // _ZN7S1772C33v74Ev
  virtual void  v75(); // _ZN7S1772C33v75Ev
  virtual void  v76(); // _ZN7S1772C33v76Ev
  virtual void  v77(); // _ZN7S1772C33v77Ev
  virtual void  v78(); // _ZN7S1772C33v78Ev
  virtual void  v79(); // _ZN7S1772C33v79Ev
  virtual void  v80(); // _ZN7S1772C33v80Ev
  virtual void  v81(); // _ZN7S1772C33v81Ev
  virtual void  v82(); // _ZN7S1772C33v82Ev
  virtual void  v83(); // _ZN7S1772C33v83Ev
  virtual void  v84(); // _ZN7S1772C33v84Ev
  virtual void  v85(); // _ZN7S1772C33v85Ev
  virtual void  v86(); // _ZN7S1772C33v86Ev
  virtual void  v87(); // _ZN7S1772C33v87Ev
  virtual void  v88(); // _ZN7S1772C33v88Ev
  virtual void  v89(); // _ZN7S1772C33v89Ev
  virtual void  v90(); // _ZN7S1772C33v90Ev
  virtual void  v91(); // _ZN7S1772C33v91Ev
  virtual void  v92(); // _ZN7S1772C33v92Ev
  virtual void  v93(); // _ZN7S1772C33v93Ev
  virtual void  v94(); // _ZN7S1772C33v94Ev
  virtual void  v95(); // _ZN7S1772C33v95Ev
  virtual void  v96(); // _ZN7S1772C33v96Ev
  virtual void  v97(); // _ZN7S1772C33v97Ev
  virtual void  v98(); // _ZN7S1772C33v98Ev
  virtual void  v99(); // _ZN7S1772C33v99Ev
  virtual void  v100(); // _ZN7S1772C34v100Ev
  virtual void  v101(); // _ZN7S1772C34v101Ev
  virtual void  v102(); // _ZN7S1772C34v102Ev
  virtual void  v103(); // _ZN7S1772C34v103Ev
  virtual void  v104(); // _ZN7S1772C34v104Ev
  virtual void  v105(); // _ZN7S1772C34v105Ev
  virtual void  v106(); // _ZN7S1772C34v106Ev
  virtual void  v107(); // _ZN7S1772C34v107Ev
  virtual void  v108(); // _ZN7S1772C34v108Ev
  virtual void  v109(); // _ZN7S1772C34v109Ev
  virtual void  v110(); // _ZN7S1772C34v110Ev
  virtual void  v111(); // _ZN7S1772C34v111Ev
  virtual void  v112(); // _ZN7S1772C34v112Ev
  virtual void  v113(); // _ZN7S1772C34v113Ev
  virtual void  v114(); // _ZN7S1772C34v114Ev
  virtual void  v115(); // _ZN7S1772C34v115Ev
  virtual void  v116(); // _ZN7S1772C34v116Ev
  virtual void  v117(); // _ZN7S1772C34v117Ev
  virtual void  v118(); // _ZN7S1772C34v118Ev
  virtual void  v119(); // _ZN7S1772C34v119Ev
  virtual void  v120(); // _ZN7S1772C34v120Ev
  virtual void  v121(); // _ZN7S1772C34v121Ev
  virtual void  v122(); // _ZN7S1772C34v122Ev
  virtual void  v123(); // _ZN7S1772C34v123Ev
  virtual void  v124(); // _ZN7S1772C34v124Ev
  virtual void  v125(); // _ZN7S1772C34v125Ev
  virtual void  v126(); // _ZN7S1772C34v126Ev
  virtual void  v127(); // _ZN7S1772C34v127Ev
  virtual void  v128(); // _ZN7S1772C34v128Ev
  virtual void  v129(); // _ZN7S1772C34v129Ev
  virtual void  v130(); // _ZN7S1772C34v130Ev
  virtual void  v131(); // _ZN7S1772C34v131Ev
  virtual void  v132(); // _ZN7S1772C34v132Ev
  ~S1772C3(); // tgen
  S1772C3(); // tgen
};
//SIG(-1 S1772C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1772C3 ::v11(){vfunc_called(this, "_ZN7S1772C33v11Ev");}
void  S1772C3 ::v12(){vfunc_called(this, "_ZN7S1772C33v12Ev");}
void  S1772C3 ::v13(){vfunc_called(this, "_ZN7S1772C33v13Ev");}
void  S1772C3 ::v14(){vfunc_called(this, "_ZN7S1772C33v14Ev");}
void  S1772C3 ::v15(){vfunc_called(this, "_ZN7S1772C33v15Ev");}
void  S1772C3 ::v16(){vfunc_called(this, "_ZN7S1772C33v16Ev");}
void  S1772C3 ::v17(){vfunc_called(this, "_ZN7S1772C33v17Ev");}
void  S1772C3 ::v18(){vfunc_called(this, "_ZN7S1772C33v18Ev");}
void  S1772C3 ::v19(){vfunc_called(this, "_ZN7S1772C33v19Ev");}
void  S1772C3 ::v20(){vfunc_called(this, "_ZN7S1772C33v20Ev");}
void  S1772C3 ::v21(){vfunc_called(this, "_ZN7S1772C33v21Ev");}
void  S1772C3 ::v22(){vfunc_called(this, "_ZN7S1772C33v22Ev");}
void  S1772C3 ::v23(){vfunc_called(this, "_ZN7S1772C33v23Ev");}
void  S1772C3 ::v24(){vfunc_called(this, "_ZN7S1772C33v24Ev");}
void  S1772C3 ::v25(){vfunc_called(this, "_ZN7S1772C33v25Ev");}
void  S1772C3 ::v26(){vfunc_called(this, "_ZN7S1772C33v26Ev");}
void  S1772C3 ::v27(){vfunc_called(this, "_ZN7S1772C33v27Ev");}
void  S1772C3 ::v28(){vfunc_called(this, "_ZN7S1772C33v28Ev");}
void  S1772C3 ::v29(){vfunc_called(this, "_ZN7S1772C33v29Ev");}
void  S1772C3 ::v30(){vfunc_called(this, "_ZN7S1772C33v30Ev");}
void  S1772C3 ::v31(){vfunc_called(this, "_ZN7S1772C33v31Ev");}
void  S1772C3 ::v32(){vfunc_called(this, "_ZN7S1772C33v32Ev");}
void  S1772C3 ::v33(){vfunc_called(this, "_ZN7S1772C33v33Ev");}
void  S1772C3 ::v34(){vfunc_called(this, "_ZN7S1772C33v34Ev");}
void  S1772C3 ::v35(){vfunc_called(this, "_ZN7S1772C33v35Ev");}
void  S1772C3 ::v36(){vfunc_called(this, "_ZN7S1772C33v36Ev");}
void  S1772C3 ::v37(){vfunc_called(this, "_ZN7S1772C33v37Ev");}
void  S1772C3 ::v38(){vfunc_called(this, "_ZN7S1772C33v38Ev");}
void  S1772C3 ::v39(){vfunc_called(this, "_ZN7S1772C33v39Ev");}
void  S1772C3 ::v40(){vfunc_called(this, "_ZN7S1772C33v40Ev");}
void  S1772C3 ::v41(){vfunc_called(this, "_ZN7S1772C33v41Ev");}
void  S1772C3 ::v42(){vfunc_called(this, "_ZN7S1772C33v42Ev");}
void  S1772C3 ::v43(){vfunc_called(this, "_ZN7S1772C33v43Ev");}
void  S1772C3 ::v44(){vfunc_called(this, "_ZN7S1772C33v44Ev");}
void  S1772C3 ::v45(){vfunc_called(this, "_ZN7S1772C33v45Ev");}
void  S1772C3 ::v46(){vfunc_called(this, "_ZN7S1772C33v46Ev");}
void  S1772C3 ::v47(){vfunc_called(this, "_ZN7S1772C33v47Ev");}
void  S1772C3 ::v48(){vfunc_called(this, "_ZN7S1772C33v48Ev");}
void  S1772C3 ::v49(){vfunc_called(this, "_ZN7S1772C33v49Ev");}
void  S1772C3 ::v50(){vfunc_called(this, "_ZN7S1772C33v50Ev");}
void  S1772C3 ::v51(){vfunc_called(this, "_ZN7S1772C33v51Ev");}
void  S1772C3 ::v52(){vfunc_called(this, "_ZN7S1772C33v52Ev");}
void  S1772C3 ::v53(){vfunc_called(this, "_ZN7S1772C33v53Ev");}
void  S1772C3 ::v54(){vfunc_called(this, "_ZN7S1772C33v54Ev");}
void  S1772C3 ::v55(){vfunc_called(this, "_ZN7S1772C33v55Ev");}
void  S1772C3 ::v56(){vfunc_called(this, "_ZN7S1772C33v56Ev");}
void  S1772C3 ::v57(){vfunc_called(this, "_ZN7S1772C33v57Ev");}
void  S1772C3 ::v58(){vfunc_called(this, "_ZN7S1772C33v58Ev");}
void  S1772C3 ::v59(){vfunc_called(this, "_ZN7S1772C33v59Ev");}
void  S1772C3 ::v60(){vfunc_called(this, "_ZN7S1772C33v60Ev");}
void  S1772C3 ::v61(){vfunc_called(this, "_ZN7S1772C33v61Ev");}
void  S1772C3 ::v62(){vfunc_called(this, "_ZN7S1772C33v62Ev");}
void  S1772C3 ::v63(){vfunc_called(this, "_ZN7S1772C33v63Ev");}
void  S1772C3 ::v64(){vfunc_called(this, "_ZN7S1772C33v64Ev");}
void  S1772C3 ::v65(){vfunc_called(this, "_ZN7S1772C33v65Ev");}
void  S1772C3 ::v66(){vfunc_called(this, "_ZN7S1772C33v66Ev");}
void  S1772C3 ::v67(){vfunc_called(this, "_ZN7S1772C33v67Ev");}
void  S1772C3 ::v68(){vfunc_called(this, "_ZN7S1772C33v68Ev");}
void  S1772C3 ::v69(){vfunc_called(this, "_ZN7S1772C33v69Ev");}
void  S1772C3 ::v70(){vfunc_called(this, "_ZN7S1772C33v70Ev");}
void  S1772C3 ::v71(){vfunc_called(this, "_ZN7S1772C33v71Ev");}
void  S1772C3 ::v72(){vfunc_called(this, "_ZN7S1772C33v72Ev");}
void  S1772C3 ::v73(){vfunc_called(this, "_ZN7S1772C33v73Ev");}
void  S1772C3 ::v74(){vfunc_called(this, "_ZN7S1772C33v74Ev");}
void  S1772C3 ::v75(){vfunc_called(this, "_ZN7S1772C33v75Ev");}
void  S1772C3 ::v76(){vfunc_called(this, "_ZN7S1772C33v76Ev");}
void  S1772C3 ::v77(){vfunc_called(this, "_ZN7S1772C33v77Ev");}
void  S1772C3 ::v78(){vfunc_called(this, "_ZN7S1772C33v78Ev");}
void  S1772C3 ::v79(){vfunc_called(this, "_ZN7S1772C33v79Ev");}
void  S1772C3 ::v80(){vfunc_called(this, "_ZN7S1772C33v80Ev");}
void  S1772C3 ::v81(){vfunc_called(this, "_ZN7S1772C33v81Ev");}
void  S1772C3 ::v82(){vfunc_called(this, "_ZN7S1772C33v82Ev");}
void  S1772C3 ::v83(){vfunc_called(this, "_ZN7S1772C33v83Ev");}
void  S1772C3 ::v84(){vfunc_called(this, "_ZN7S1772C33v84Ev");}
void  S1772C3 ::v85(){vfunc_called(this, "_ZN7S1772C33v85Ev");}
void  S1772C3 ::v86(){vfunc_called(this, "_ZN7S1772C33v86Ev");}
void  S1772C3 ::v87(){vfunc_called(this, "_ZN7S1772C33v87Ev");}
void  S1772C3 ::v88(){vfunc_called(this, "_ZN7S1772C33v88Ev");}
void  S1772C3 ::v89(){vfunc_called(this, "_ZN7S1772C33v89Ev");}
void  S1772C3 ::v90(){vfunc_called(this, "_ZN7S1772C33v90Ev");}
void  S1772C3 ::v91(){vfunc_called(this, "_ZN7S1772C33v91Ev");}
void  S1772C3 ::v92(){vfunc_called(this, "_ZN7S1772C33v92Ev");}
void  S1772C3 ::v93(){vfunc_called(this, "_ZN7S1772C33v93Ev");}
void  S1772C3 ::v94(){vfunc_called(this, "_ZN7S1772C33v94Ev");}
void  S1772C3 ::v95(){vfunc_called(this, "_ZN7S1772C33v95Ev");}
void  S1772C3 ::v96(){vfunc_called(this, "_ZN7S1772C33v96Ev");}
void  S1772C3 ::v97(){vfunc_called(this, "_ZN7S1772C33v97Ev");}
void  S1772C3 ::v98(){vfunc_called(this, "_ZN7S1772C33v98Ev");}
void  S1772C3 ::v99(){vfunc_called(this, "_ZN7S1772C33v99Ev");}
void  S1772C3 ::v100(){vfunc_called(this, "_ZN7S1772C34v100Ev");}
void  S1772C3 ::v101(){vfunc_called(this, "_ZN7S1772C34v101Ev");}
void  S1772C3 ::v102(){vfunc_called(this, "_ZN7S1772C34v102Ev");}
void  S1772C3 ::v103(){vfunc_called(this, "_ZN7S1772C34v103Ev");}
void  S1772C3 ::v104(){vfunc_called(this, "_ZN7S1772C34v104Ev");}
void  S1772C3 ::v105(){vfunc_called(this, "_ZN7S1772C34v105Ev");}
void  S1772C3 ::v106(){vfunc_called(this, "_ZN7S1772C34v106Ev");}
void  S1772C3 ::v107(){vfunc_called(this, "_ZN7S1772C34v107Ev");}
void  S1772C3 ::v108(){vfunc_called(this, "_ZN7S1772C34v108Ev");}
void  S1772C3 ::v109(){vfunc_called(this, "_ZN7S1772C34v109Ev");}
void  S1772C3 ::v110(){vfunc_called(this, "_ZN7S1772C34v110Ev");}
void  S1772C3 ::v111(){vfunc_called(this, "_ZN7S1772C34v111Ev");}
void  S1772C3 ::v112(){vfunc_called(this, "_ZN7S1772C34v112Ev");}
void  S1772C3 ::v113(){vfunc_called(this, "_ZN7S1772C34v113Ev");}
void  S1772C3 ::v114(){vfunc_called(this, "_ZN7S1772C34v114Ev");}
void  S1772C3 ::v115(){vfunc_called(this, "_ZN7S1772C34v115Ev");}
void  S1772C3 ::v116(){vfunc_called(this, "_ZN7S1772C34v116Ev");}
void  S1772C3 ::v117(){vfunc_called(this, "_ZN7S1772C34v117Ev");}
void  S1772C3 ::v118(){vfunc_called(this, "_ZN7S1772C34v118Ev");}
void  S1772C3 ::v119(){vfunc_called(this, "_ZN7S1772C34v119Ev");}
void  S1772C3 ::v120(){vfunc_called(this, "_ZN7S1772C34v120Ev");}
void  S1772C3 ::v121(){vfunc_called(this, "_ZN7S1772C34v121Ev");}
void  S1772C3 ::v122(){vfunc_called(this, "_ZN7S1772C34v122Ev");}
void  S1772C3 ::v123(){vfunc_called(this, "_ZN7S1772C34v123Ev");}
void  S1772C3 ::v124(){vfunc_called(this, "_ZN7S1772C34v124Ev");}
void  S1772C3 ::v125(){vfunc_called(this, "_ZN7S1772C34v125Ev");}
void  S1772C3 ::v126(){vfunc_called(this, "_ZN7S1772C34v126Ev");}
void  S1772C3 ::v127(){vfunc_called(this, "_ZN7S1772C34v127Ev");}
void  S1772C3 ::v128(){vfunc_called(this, "_ZN7S1772C34v128Ev");}
void  S1772C3 ::v129(){vfunc_called(this, "_ZN7S1772C34v129Ev");}
void  S1772C3 ::v130(){vfunc_called(this, "_ZN7S1772C34v130Ev");}
void  S1772C3 ::v131(){vfunc_called(this, "_ZN7S1772C34v131Ev");}
void  S1772C3 ::v132(){vfunc_called(this, "_ZN7S1772C34v132Ev");}
S1772C3 ::~S1772C3(){ note_dtor("S1772C3", this);} // tgen
S1772C3 ::S1772C3(){ note_ctor("S1772C3", this);} // tgen

static void Test_S1772C3()
{
  extern Class_Descriptor cd_S1772C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1772C3, buf);
    S1772C3 *dp, &lv = *(dp=new (buf) S1772C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1772C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1772C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1772C3");
    test_class_info(&lv, &cd_S1772C3);
    dp->~S1772C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1772C3(Test_S1772C3, "S1772C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1772C3C1Ev();
extern void _ZN7S1772C3D1Ev();
Name_Map name_map_S1772C3[] = {
  NSPAIR(_ZN7S1772C3C1Ev),
  NSPAIR(_ZN7S1772C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1772C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1772C3[];
extern void _ZN7S1772C3D1Ev();
extern void _ZN7S1772C3D0Ev();
extern void _ZN7S1772C33v11Ev();
extern void _ZN7S1772C33v12Ev();
extern void _ZN7S1772C33v13Ev();
extern void _ZN7S1772C33v14Ev();
extern void _ZN7S1772C33v15Ev();
extern void _ZN7S1772C33v16Ev();
extern void _ZN7S1772C33v17Ev();
extern void _ZN7S1772C33v18Ev();
extern void _ZN7S1772C33v19Ev();
extern void _ZN7S1772C33v20Ev();
extern void _ZN7S1772C33v21Ev();
extern void _ZN7S1772C33v22Ev();
extern void _ZN7S1772C33v23Ev();
extern void _ZN7S1772C33v24Ev();
extern void _ZN7S1772C33v25Ev();
extern void _ZN7S1772C33v26Ev();
extern void _ZN7S1772C33v27Ev();
extern void _ZN7S1772C33v28Ev();
extern void _ZN7S1772C33v29Ev();
extern void _ZN7S1772C33v30Ev();
extern void _ZN7S1772C33v31Ev();
extern void _ZN7S1772C33v32Ev();
extern void _ZN7S1772C33v33Ev();
extern void _ZN7S1772C33v34Ev();
extern void _ZN7S1772C33v35Ev();
extern void _ZN7S1772C33v36Ev();
extern void _ZN7S1772C33v37Ev();
extern void _ZN7S1772C33v38Ev();
extern void _ZN7S1772C33v39Ev();
extern void _ZN7S1772C33v40Ev();
extern void _ZN7S1772C33v41Ev();
extern void _ZN7S1772C33v42Ev();
extern void _ZN7S1772C33v43Ev();
extern void _ZN7S1772C33v44Ev();
extern void _ZN7S1772C33v45Ev();
extern void _ZN7S1772C33v46Ev();
extern void _ZN7S1772C33v47Ev();
extern void _ZN7S1772C33v48Ev();
extern void _ZN7S1772C33v49Ev();
extern void _ZN7S1772C33v50Ev();
extern void _ZN7S1772C33v51Ev();
extern void _ZN7S1772C33v52Ev();
extern void _ZN7S1772C33v53Ev();
extern void _ZN7S1772C33v54Ev();
extern void _ZN7S1772C33v55Ev();
extern void _ZN7S1772C33v56Ev();
extern void _ZN7S1772C33v57Ev();
extern void _ZN7S1772C33v58Ev();
extern void _ZN7S1772C33v59Ev();
extern void _ZN7S1772C33v60Ev();
extern void _ZN7S1772C33v61Ev();
extern void _ZN7S1772C33v62Ev();
extern void _ZN7S1772C33v63Ev();
extern void _ZN7S1772C33v64Ev();
extern void _ZN7S1772C33v65Ev();
extern void _ZN7S1772C33v66Ev();
extern void _ZN7S1772C33v67Ev();
extern void _ZN7S1772C33v68Ev();
extern void _ZN7S1772C33v69Ev();
extern void _ZN7S1772C33v70Ev();
extern void _ZN7S1772C33v71Ev();
extern void _ZN7S1772C33v72Ev();
extern void _ZN7S1772C33v73Ev();
extern void _ZN7S1772C33v74Ev();
extern void _ZN7S1772C33v75Ev();
extern void _ZN7S1772C33v76Ev();
extern void _ZN7S1772C33v77Ev();
extern void _ZN7S1772C33v78Ev();
extern void _ZN7S1772C33v79Ev();
extern void _ZN7S1772C33v80Ev();
extern void _ZN7S1772C33v81Ev();
extern void _ZN7S1772C33v82Ev();
extern void _ZN7S1772C33v83Ev();
extern void _ZN7S1772C33v84Ev();
extern void _ZN7S1772C33v85Ev();
extern void _ZN7S1772C33v86Ev();
extern void _ZN7S1772C33v87Ev();
extern void _ZN7S1772C33v88Ev();
extern void _ZN7S1772C33v89Ev();
extern void _ZN7S1772C33v90Ev();
extern void _ZN7S1772C33v91Ev();
extern void _ZN7S1772C33v92Ev();
extern void _ZN7S1772C33v93Ev();
extern void _ZN7S1772C33v94Ev();
extern void _ZN7S1772C33v95Ev();
extern void _ZN7S1772C33v96Ev();
extern void _ZN7S1772C33v97Ev();
extern void _ZN7S1772C33v98Ev();
extern void _ZN7S1772C33v99Ev();
extern void _ZN7S1772C34v100Ev();
extern void _ZN7S1772C34v101Ev();
extern void _ZN7S1772C34v102Ev();
extern void _ZN7S1772C34v103Ev();
extern void _ZN7S1772C34v104Ev();
extern void _ZN7S1772C34v105Ev();
extern void _ZN7S1772C34v106Ev();
extern void _ZN7S1772C34v107Ev();
extern void _ZN7S1772C34v108Ev();
extern void _ZN7S1772C34v109Ev();
extern void _ZN7S1772C34v110Ev();
extern void _ZN7S1772C34v111Ev();
extern void _ZN7S1772C34v112Ev();
extern void _ZN7S1772C34v113Ev();
extern void _ZN7S1772C34v114Ev();
extern void _ZN7S1772C34v115Ev();
extern void _ZN7S1772C34v116Ev();
extern void _ZN7S1772C34v117Ev();
extern void _ZN7S1772C34v118Ev();
extern void _ZN7S1772C34v119Ev();
extern void _ZN7S1772C34v120Ev();
extern void _ZN7S1772C34v121Ev();
extern void _ZN7S1772C34v122Ev();
extern void _ZN7S1772C34v123Ev();
extern void _ZN7S1772C34v124Ev();
extern void _ZN7S1772C34v125Ev();
extern void _ZN7S1772C34v126Ev();
extern void _ZN7S1772C34v127Ev();
extern void _ZN7S1772C34v128Ev();
extern void _ZN7S1772C34v129Ev();
extern void _ZN7S1772C34v130Ev();
extern void _ZN7S1772C34v131Ev();
extern void _ZN7S1772C34v132Ev();
static  VTBL_ENTRY vtc_S1772C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1772C3[0]),
  (VTBL_ENTRY)&_ZN7S1772C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1772C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v132Ev,
};
extern VTBL_ENTRY _ZTI7S1772C3[];
extern  VTBL_ENTRY _ZTV7S1772C3[];
Class_Descriptor cd_S1772C3 = {  "S1772C3", // class name
  bases_S1772C3, 1,
  &(vtc_S1772C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1772C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1772C3),126, //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  S1772C2  : S1772C3 {
  virtual void  v133(); // _ZN7S1772C24v133Ev
  virtual void  v134(); // _ZN7S1772C24v134Ev
  virtual void  v135(); // _ZN7S1772C24v135Ev
  virtual void  v136(); // _ZN7S1772C24v136Ev
  virtual void  v137(); // _ZN7S1772C24v137Ev
  virtual void  v138(); // _ZN7S1772C24v138Ev
  virtual void  v139(); // _ZN7S1772C24v139Ev
  virtual void  v140(); // _ZN7S1772C24v140Ev
  virtual void  v141(); // _ZN7S1772C24v141Ev
  virtual void  v142(); // _ZN7S1772C24v142Ev
  virtual void  v143(); // _ZN7S1772C24v143Ev
  virtual void  v144(); // _ZN7S1772C24v144Ev
  virtual void  v145(); // _ZN7S1772C24v145Ev
  virtual void  v146(); // _ZN7S1772C24v146Ev
  virtual void  v147(); // _ZN7S1772C24v147Ev
  virtual void  v148(); // _ZN7S1772C24v148Ev
  virtual void  v149(); // _ZN7S1772C24v149Ev
  virtual void  v150(); // _ZN7S1772C24v150Ev
  ~S1772C2(); // tgen
  S1772C2(); // tgen
};
//SIG(-1 S1772C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1772C2 ::v133(){vfunc_called(this, "_ZN7S1772C24v133Ev");}
void  S1772C2 ::v134(){vfunc_called(this, "_ZN7S1772C24v134Ev");}
void  S1772C2 ::v135(){vfunc_called(this, "_ZN7S1772C24v135Ev");}
void  S1772C2 ::v136(){vfunc_called(this, "_ZN7S1772C24v136Ev");}
void  S1772C2 ::v137(){vfunc_called(this, "_ZN7S1772C24v137Ev");}
void  S1772C2 ::v138(){vfunc_called(this, "_ZN7S1772C24v138Ev");}
void  S1772C2 ::v139(){vfunc_called(this, "_ZN7S1772C24v139Ev");}
void  S1772C2 ::v140(){vfunc_called(this, "_ZN7S1772C24v140Ev");}
void  S1772C2 ::v141(){vfunc_called(this, "_ZN7S1772C24v141Ev");}
void  S1772C2 ::v142(){vfunc_called(this, "_ZN7S1772C24v142Ev");}
void  S1772C2 ::v143(){vfunc_called(this, "_ZN7S1772C24v143Ev");}
void  S1772C2 ::v144(){vfunc_called(this, "_ZN7S1772C24v144Ev");}
void  S1772C2 ::v145(){vfunc_called(this, "_ZN7S1772C24v145Ev");}
void  S1772C2 ::v146(){vfunc_called(this, "_ZN7S1772C24v146Ev");}
void  S1772C2 ::v147(){vfunc_called(this, "_ZN7S1772C24v147Ev");}
void  S1772C2 ::v148(){vfunc_called(this, "_ZN7S1772C24v148Ev");}
void  S1772C2 ::v149(){vfunc_called(this, "_ZN7S1772C24v149Ev");}
void  S1772C2 ::v150(){vfunc_called(this, "_ZN7S1772C24v150Ev");}
S1772C2 ::~S1772C2(){ note_dtor("S1772C2", this);} // tgen
S1772C2 ::S1772C2(){ note_ctor("S1772C2", this);} // tgen

static void Test_S1772C2()
{
  extern Class_Descriptor cd_S1772C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1772C2, buf);
    S1772C2 *dp, &lv = *(dp=new (buf) S1772C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1772C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1772C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1772C3*), 0, "S1772C2");
    check_base_class_offset(lv, (S1772C3*), 0, "S1772C2");
    test_class_info(&lv, &cd_S1772C2);
    dp->~S1772C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1772C2(Test_S1772C2, "S1772C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1772C2C1Ev();
extern void _ZN7S1772C2D1Ev();
Name_Map name_map_S1772C2[] = {
  NSPAIR(_ZN7S1772C2C1Ev),
  NSPAIR(_ZN7S1772C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1772C3;
extern VTBL_ENTRY _ZTI7S1772C3[];
extern  VTBL_ENTRY _ZTV7S1772C3[];
static Base_Class bases_S1772C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1772C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1772C2[];
extern void _ZN7S1772C2D1Ev();
extern void _ZN7S1772C2D0Ev();
extern void _ZN7S1772C33v11Ev();
extern void _ZN7S1772C33v12Ev();
extern void _ZN7S1772C33v13Ev();
extern void _ZN7S1772C33v14Ev();
extern void _ZN7S1772C33v15Ev();
extern void _ZN7S1772C33v16Ev();
extern void _ZN7S1772C33v17Ev();
extern void _ZN7S1772C33v18Ev();
extern void _ZN7S1772C33v19Ev();
extern void _ZN7S1772C33v20Ev();
extern void _ZN7S1772C33v21Ev();
extern void _ZN7S1772C33v22Ev();
extern void _ZN7S1772C33v23Ev();
extern void _ZN7S1772C33v24Ev();
extern void _ZN7S1772C33v25Ev();
extern void _ZN7S1772C33v26Ev();
extern void _ZN7S1772C33v27Ev();
extern void _ZN7S1772C33v28Ev();
extern void _ZN7S1772C33v29Ev();
extern void _ZN7S1772C33v30Ev();
extern void _ZN7S1772C33v31Ev();
extern void _ZN7S1772C33v32Ev();
extern void _ZN7S1772C33v33Ev();
extern void _ZN7S1772C33v34Ev();
extern void _ZN7S1772C33v35Ev();
extern void _ZN7S1772C33v36Ev();
extern void _ZN7S1772C33v37Ev();
extern void _ZN7S1772C33v38Ev();
extern void _ZN7S1772C33v39Ev();
extern void _ZN7S1772C33v40Ev();
extern void _ZN7S1772C33v41Ev();
extern void _ZN7S1772C33v42Ev();
extern void _ZN7S1772C33v43Ev();
extern void _ZN7S1772C33v44Ev();
extern void _ZN7S1772C33v45Ev();
extern void _ZN7S1772C33v46Ev();
extern void _ZN7S1772C33v47Ev();
extern void _ZN7S1772C33v48Ev();
extern void _ZN7S1772C33v49Ev();
extern void _ZN7S1772C33v50Ev();
extern void _ZN7S1772C33v51Ev();
extern void _ZN7S1772C33v52Ev();
extern void _ZN7S1772C33v53Ev();
extern void _ZN7S1772C33v54Ev();
extern void _ZN7S1772C33v55Ev();
extern void _ZN7S1772C33v56Ev();
extern void _ZN7S1772C33v57Ev();
extern void _ZN7S1772C33v58Ev();
extern void _ZN7S1772C33v59Ev();
extern void _ZN7S1772C33v60Ev();
extern void _ZN7S1772C33v61Ev();
extern void _ZN7S1772C33v62Ev();
extern void _ZN7S1772C33v63Ev();
extern void _ZN7S1772C33v64Ev();
extern void _ZN7S1772C33v65Ev();
extern void _ZN7S1772C33v66Ev();
extern void _ZN7S1772C33v67Ev();
extern void _ZN7S1772C33v68Ev();
extern void _ZN7S1772C33v69Ev();
extern void _ZN7S1772C33v70Ev();
extern void _ZN7S1772C33v71Ev();
extern void _ZN7S1772C33v72Ev();
extern void _ZN7S1772C33v73Ev();
extern void _ZN7S1772C33v74Ev();
extern void _ZN7S1772C33v75Ev();
extern void _ZN7S1772C33v76Ev();
extern void _ZN7S1772C33v77Ev();
extern void _ZN7S1772C33v78Ev();
extern void _ZN7S1772C33v79Ev();
extern void _ZN7S1772C33v80Ev();
extern void _ZN7S1772C33v81Ev();
extern void _ZN7S1772C33v82Ev();
extern void _ZN7S1772C33v83Ev();
extern void _ZN7S1772C33v84Ev();
extern void _ZN7S1772C33v85Ev();
extern void _ZN7S1772C33v86Ev();
extern void _ZN7S1772C33v87Ev();
extern void _ZN7S1772C33v88Ev();
extern void _ZN7S1772C33v89Ev();
extern void _ZN7S1772C33v90Ev();
extern void _ZN7S1772C33v91Ev();
extern void _ZN7S1772C33v92Ev();
extern void _ZN7S1772C33v93Ev();
extern void _ZN7S1772C33v94Ev();
extern void _ZN7S1772C33v95Ev();
extern void _ZN7S1772C33v96Ev();
extern void _ZN7S1772C33v97Ev();
extern void _ZN7S1772C33v98Ev();
extern void _ZN7S1772C33v99Ev();
extern void _ZN7S1772C34v100Ev();
extern void _ZN7S1772C34v101Ev();
extern void _ZN7S1772C34v102Ev();
extern void _ZN7S1772C34v103Ev();
extern void _ZN7S1772C34v104Ev();
extern void _ZN7S1772C34v105Ev();
extern void _ZN7S1772C34v106Ev();
extern void _ZN7S1772C34v107Ev();
extern void _ZN7S1772C34v108Ev();
extern void _ZN7S1772C34v109Ev();
extern void _ZN7S1772C34v110Ev();
extern void _ZN7S1772C34v111Ev();
extern void _ZN7S1772C34v112Ev();
extern void _ZN7S1772C34v113Ev();
extern void _ZN7S1772C34v114Ev();
extern void _ZN7S1772C34v115Ev();
extern void _ZN7S1772C34v116Ev();
extern void _ZN7S1772C34v117Ev();
extern void _ZN7S1772C34v118Ev();
extern void _ZN7S1772C34v119Ev();
extern void _ZN7S1772C34v120Ev();
extern void _ZN7S1772C34v121Ev();
extern void _ZN7S1772C34v122Ev();
extern void _ZN7S1772C34v123Ev();
extern void _ZN7S1772C34v124Ev();
extern void _ZN7S1772C34v125Ev();
extern void _ZN7S1772C34v126Ev();
extern void _ZN7S1772C34v127Ev();
extern void _ZN7S1772C34v128Ev();
extern void _ZN7S1772C34v129Ev();
extern void _ZN7S1772C34v130Ev();
extern void _ZN7S1772C34v131Ev();
extern void _ZN7S1772C34v132Ev();
extern void _ZN7S1772C24v133Ev();
extern void _ZN7S1772C24v134Ev();
extern void _ZN7S1772C24v135Ev();
extern void _ZN7S1772C24v136Ev();
extern void _ZN7S1772C24v137Ev();
extern void _ZN7S1772C24v138Ev();
extern void _ZN7S1772C24v139Ev();
extern void _ZN7S1772C24v140Ev();
extern void _ZN7S1772C24v141Ev();
extern void _ZN7S1772C24v142Ev();
extern void _ZN7S1772C24v143Ev();
extern void _ZN7S1772C24v144Ev();
extern void _ZN7S1772C24v145Ev();
extern void _ZN7S1772C24v146Ev();
extern void _ZN7S1772C24v147Ev();
extern void _ZN7S1772C24v148Ev();
extern void _ZN7S1772C24v149Ev();
extern void _ZN7S1772C24v150Ev();
static  VTBL_ENTRY vtc_S1772C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1772C2[0]),
  (VTBL_ENTRY)&_ZN7S1772C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1772C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v150Ev,
};
extern VTBL_ENTRY _ZTI7S1772C2[];
extern  VTBL_ENTRY _ZTV7S1772C2[];
Class_Descriptor cd_S1772C2 = {  "S1772C2", // class name
  bases_S1772C2, 2,
  &(vtc_S1772C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1772C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1772C2),144, //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  S1772C1  : S1772C2 {
  virtual void  v1(); // _ZN7S1772C12v1Ev
  virtual void  v2(); // _ZN7S1772C12v2Ev
  virtual void  v3(); // _ZN7S1772C12v3Ev
  virtual void  v4(); // _ZN7S1772C12v4Ev
  virtual void  v5(); // _ZN7S1772C12v5Ev
  virtual void  v6(); // _ZN7S1772C12v6Ev
  virtual void  v7(); // _ZN7S1772C12v7Ev
  virtual void  v8(); // _ZN7S1772C12v8Ev
  virtual void  v9(); // _ZN7S1772C12v9Ev
  virtual void  v10(); // _ZN7S1772C13v10Ev
  ~S1772C1(); // tgen
  S1772C1(); // tgen
};
//SIG(1 S1772C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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 v149 v150} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


void  S1772C1 ::v1(){vfunc_called(this, "_ZN7S1772C12v1Ev");}
void  S1772C1 ::v2(){vfunc_called(this, "_ZN7S1772C12v2Ev");}
void  S1772C1 ::v3(){vfunc_called(this, "_ZN7S1772C12v3Ev");}
void  S1772C1 ::v4(){vfunc_called(this, "_ZN7S1772C12v4Ev");}
void  S1772C1 ::v5(){vfunc_called(this, "_ZN7S1772C12v5Ev");}
void  S1772C1 ::v6(){vfunc_called(this, "_ZN7S1772C12v6Ev");}
void  S1772C1 ::v7(){vfunc_called(this, "_ZN7S1772C12v7Ev");}
void  S1772C1 ::v8(){vfunc_called(this, "_ZN7S1772C12v8Ev");}
void  S1772C1 ::v9(){vfunc_called(this, "_ZN7S1772C12v9Ev");}
void  S1772C1 ::v10(){vfunc_called(this, "_ZN7S1772C13v10Ev");}
S1772C1 ::~S1772C1(){ note_dtor("S1772C1", this);} // tgen
S1772C1 ::S1772C1(){ note_ctor("S1772C1", this);} // tgen

static void Test_S1772C1()
{
  extern Class_Descriptor cd_S1772C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1772C1, buf);
    S1772C1 *dp, &lv = *(dp=new (buf) S1772C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1772C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1772C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1772C3*)(S1772C2*), 0, "S1772C1");
    check_base_class_offset(lv, (S1772C3*)(S1772C2*), 0, "S1772C1");
    check_base_class_offset(lv, (S1772C2*), 0, "S1772C1");
    test_class_info(&lv, &cd_S1772C1);
    dp->~S1772C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1772C1(Test_S1772C1, "S1772C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1772C1C1Ev();
extern void _ZN7S1772C1D1Ev();
Name_Map name_map_S1772C1[] = {
  NSPAIR(_ZN7S1772C1C1Ev),
  NSPAIR(_ZN7S1772C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1772C3;
extern VTBL_ENTRY _ZTI7S1772C3[];
extern  VTBL_ENTRY _ZTV7S1772C3[];
extern Class_Descriptor cd_S1772C2;
extern VTBL_ENTRY _ZTI7S1772C2[];
extern  VTBL_ENTRY _ZTV7S1772C2[];
static Base_Class bases_S1772C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1772C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1772C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1772C1[];
extern void _ZN7S1772C1D1Ev();
extern void _ZN7S1772C1D0Ev();
extern void _ZN7S1772C33v11Ev();
extern void _ZN7S1772C33v12Ev();
extern void _ZN7S1772C33v13Ev();
extern void _ZN7S1772C33v14Ev();
extern void _ZN7S1772C33v15Ev();
extern void _ZN7S1772C33v16Ev();
extern void _ZN7S1772C33v17Ev();
extern void _ZN7S1772C33v18Ev();
extern void _ZN7S1772C33v19Ev();
extern void _ZN7S1772C33v20Ev();
extern void _ZN7S1772C33v21Ev();
extern void _ZN7S1772C33v22Ev();
extern void _ZN7S1772C33v23Ev();
extern void _ZN7S1772C33v24Ev();
extern void _ZN7S1772C33v25Ev();
extern void _ZN7S1772C33v26Ev();
extern void _ZN7S1772C33v27Ev();
extern void _ZN7S1772C33v28Ev();
extern void _ZN7S1772C33v29Ev();
extern void _ZN7S1772C33v30Ev();
extern void _ZN7S1772C33v31Ev();
extern void _ZN7S1772C33v32Ev();
extern void _ZN7S1772C33v33Ev();
extern void _ZN7S1772C33v34Ev();
extern void _ZN7S1772C33v35Ev();
extern void _ZN7S1772C33v36Ev();
extern void _ZN7S1772C33v37Ev();
extern void _ZN7S1772C33v38Ev();
extern void _ZN7S1772C33v39Ev();
extern void _ZN7S1772C33v40Ev();
extern void _ZN7S1772C33v41Ev();
extern void _ZN7S1772C33v42Ev();
extern void _ZN7S1772C33v43Ev();
extern void _ZN7S1772C33v44Ev();
extern void _ZN7S1772C33v45Ev();
extern void _ZN7S1772C33v46Ev();
extern void _ZN7S1772C33v47Ev();
extern void _ZN7S1772C33v48Ev();
extern void _ZN7S1772C33v49Ev();
extern void _ZN7S1772C33v50Ev();
extern void _ZN7S1772C33v51Ev();
extern void _ZN7S1772C33v52Ev();
extern void _ZN7S1772C33v53Ev();
extern void _ZN7S1772C33v54Ev();
extern void _ZN7S1772C33v55Ev();
extern void _ZN7S1772C33v56Ev();
extern void _ZN7S1772C33v57Ev();
extern void _ZN7S1772C33v58Ev();
extern void _ZN7S1772C33v59Ev();
extern void _ZN7S1772C33v60Ev();
extern void _ZN7S1772C33v61Ev();
extern void _ZN7S1772C33v62Ev();
extern void _ZN7S1772C33v63Ev();
extern void _ZN7S1772C33v64Ev();
extern void _ZN7S1772C33v65Ev();
extern void _ZN7S1772C33v66Ev();
extern void _ZN7S1772C33v67Ev();
extern void _ZN7S1772C33v68Ev();
extern void _ZN7S1772C33v69Ev();
extern void _ZN7S1772C33v70Ev();
extern void _ZN7S1772C33v71Ev();
extern void _ZN7S1772C33v72Ev();
extern void _ZN7S1772C33v73Ev();
extern void _ZN7S1772C33v74Ev();
extern void _ZN7S1772C33v75Ev();
extern void _ZN7S1772C33v76Ev();
extern void _ZN7S1772C33v77Ev();
extern void _ZN7S1772C33v78Ev();
extern void _ZN7S1772C33v79Ev();
extern void _ZN7S1772C33v80Ev();
extern void _ZN7S1772C33v81Ev();
extern void _ZN7S1772C33v82Ev();
extern void _ZN7S1772C33v83Ev();
extern void _ZN7S1772C33v84Ev();
extern void _ZN7S1772C33v85Ev();
extern void _ZN7S1772C33v86Ev();
extern void _ZN7S1772C33v87Ev();
extern void _ZN7S1772C33v88Ev();
extern void _ZN7S1772C33v89Ev();
extern void _ZN7S1772C33v90Ev();
extern void _ZN7S1772C33v91Ev();
extern void _ZN7S1772C33v92Ev();
extern void _ZN7S1772C33v93Ev();
extern void _ZN7S1772C33v94Ev();
extern void _ZN7S1772C33v95Ev();
extern void _ZN7S1772C33v96Ev();
extern void _ZN7S1772C33v97Ev();
extern void _ZN7S1772C33v98Ev();
extern void _ZN7S1772C33v99Ev();
extern void _ZN7S1772C34v100Ev();
extern void _ZN7S1772C34v101Ev();
extern void _ZN7S1772C34v102Ev();
extern void _ZN7S1772C34v103Ev();
extern void _ZN7S1772C34v104Ev();
extern void _ZN7S1772C34v105Ev();
extern void _ZN7S1772C34v106Ev();
extern void _ZN7S1772C34v107Ev();
extern void _ZN7S1772C34v108Ev();
extern void _ZN7S1772C34v109Ev();
extern void _ZN7S1772C34v110Ev();
extern void _ZN7S1772C34v111Ev();
extern void _ZN7S1772C34v112Ev();
extern void _ZN7S1772C34v113Ev();
extern void _ZN7S1772C34v114Ev();
extern void _ZN7S1772C34v115Ev();
extern void _ZN7S1772C34v116Ev();
extern void _ZN7S1772C34v117Ev();
extern void _ZN7S1772C34v118Ev();
extern void _ZN7S1772C34v119Ev();
extern void _ZN7S1772C34v120Ev();
extern void _ZN7S1772C34v121Ev();
extern void _ZN7S1772C34v122Ev();
extern void _ZN7S1772C34v123Ev();
extern void _ZN7S1772C34v124Ev();
extern void _ZN7S1772C34v125Ev();
extern void _ZN7S1772C34v126Ev();
extern void _ZN7S1772C34v127Ev();
extern void _ZN7S1772C34v128Ev();
extern void _ZN7S1772C34v129Ev();
extern void _ZN7S1772C34v130Ev();
extern void _ZN7S1772C34v131Ev();
extern void _ZN7S1772C34v132Ev();
extern void _ZN7S1772C24v133Ev();
extern void _ZN7S1772C24v134Ev();
extern void _ZN7S1772C24v135Ev();
extern void _ZN7S1772C24v136Ev();
extern void _ZN7S1772C24v137Ev();
extern void _ZN7S1772C24v138Ev();
extern void _ZN7S1772C24v139Ev();
extern void _ZN7S1772C24v140Ev();
extern void _ZN7S1772C24v141Ev();
extern void _ZN7S1772C24v142Ev();
extern void _ZN7S1772C24v143Ev();
extern void _ZN7S1772C24v144Ev();
extern void _ZN7S1772C24v145Ev();
extern void _ZN7S1772C24v146Ev();
extern void _ZN7S1772C24v147Ev();
extern void _ZN7S1772C24v148Ev();
extern void _ZN7S1772C24v149Ev();
extern void _ZN7S1772C24v150Ev();
extern void _ZN7S1772C12v1Ev();
extern void _ZN7S1772C12v2Ev();
extern void _ZN7S1772C12v3Ev();
extern void _ZN7S1772C12v4Ev();
extern void _ZN7S1772C12v5Ev();
extern void _ZN7S1772C12v6Ev();
extern void _ZN7S1772C12v7Ev();
extern void _ZN7S1772C12v8Ev();
extern void _ZN7S1772C12v9Ev();
extern void _ZN7S1772C13v10Ev();
static  VTBL_ENTRY vtc_S1772C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1772C1[0]),
  (VTBL_ENTRY)&_ZN7S1772C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1772C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1772C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1772C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1772C24v150Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1772C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1772C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1772C1[];
extern  VTBL_ENTRY _ZTV7S1772C1[];
Class_Descriptor cd_S1772C1 = {  "S1772C1", // class name
  bases_S1772C1, 3,
  &(vtc_S1772C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1772C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1772C1),154, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S781C4  : S785C5_nt {
  virtual void  v4(); // _ZN6S781C42v4Ev
  virtual void  v5(); // _ZN6S781C42v5Ev
  virtual void  v6(); // _ZN6S781C42v6Ev
  virtual void  v7(); // _ZN6S781C42v7Ev
  virtual void  v8(); // _ZN6S781C42v8Ev
  virtual void  v9(); // _ZN6S781C42v9Ev
  virtual void  v10(); // _ZN6S781C43v10Ev
  virtual void  v11(); // _ZN6S781C43v11Ev
  virtual void  v12(); // _ZN6S781C43v12Ev
  virtual void  v13(); // _ZN6S781C43v13Ev
  virtual void  v14(); // _ZN6S781C43v14Ev
  virtual void  v15(); // _ZN6S781C43v15Ev
  virtual void  v16(); // _ZN6S781C43v16Ev
  virtual void  v17(); // _ZN6S781C43v17Ev
  virtual void  v18(); // _ZN6S781C43v18Ev
  virtual void  v19(); // _ZN6S781C43v19Ev
  virtual void  v20(); // _ZN6S781C43v20Ev
  virtual void  v21(); // _ZN6S781C43v21Ev
  virtual void  v22(); // _ZN6S781C43v22Ev
  virtual void  v23(); // _ZN6S781C43v23Ev
  virtual void  v24(); // _ZN6S781C43v24Ev
  virtual void  v25(); // _ZN6S781C43v25Ev
  virtual void  v26(); // _ZN6S781C43v26Ev
  virtual void  v27(); // _ZN6S781C43v27Ev
  virtual void  v28(); // _ZN6S781C43v28Ev
  virtual void  v29(); // _ZN6S781C43v29Ev
  virtual void  v30(); // _ZN6S781C43v30Ev
  virtual void  v31(); // _ZN6S781C43v31Ev
  virtual void  v32(); // _ZN6S781C43v32Ev
  virtual void  v33(); // _ZN6S781C43v33Ev
  virtual void  v34(); // _ZN6S781C43v34Ev
  virtual void  v35(); // _ZN6S781C43v35Ev
  virtual void  v36(); // _ZN6S781C43v36Ev
  virtual void  v37(); // _ZN6S781C43v37Ev
  virtual void  v38(); // _ZN6S781C43v38Ev
  virtual void  v39(); // _ZN6S781C43v39Ev
  virtual void  v40(); // _ZN6S781C43v40Ev
  virtual void  v41(); // _ZN6S781C43v41Ev
  virtual void  v42(); // _ZN6S781C43v42Ev
  virtual void  v43(); // _ZN6S781C43v43Ev
  virtual void  v44(); // _ZN6S781C43v44Ev
  virtual void  v45(); // _ZN6S781C43v45Ev
  virtual void  v46(); // _ZN6S781C43v46Ev
  virtual void  v47(); // _ZN6S781C43v47Ev
  virtual void  v48(); // _ZN6S781C43v48Ev
  virtual void  v49(); // _ZN6S781C43v49Ev
  virtual void  v50(); // _ZN6S781C43v50Ev
  virtual void  v51(); // _ZN6S781C43v51Ev
  virtual void  v52(); // _ZN6S781C43v52Ev
  virtual void  v53(); // _ZN6S781C43v53Ev
  virtual void  v54(); // _ZN6S781C43v54Ev
  virtual void  v55(); // _ZN6S781C43v55Ev
  virtual void  v56(); // _ZN6S781C43v56Ev
  virtual void  v57(); // _ZN6S781C43v57Ev
  virtual void  v58(); // _ZN6S781C43v58Ev
  virtual void  v59(); // _ZN6S781C43v59Ev
  virtual void  v60(); // _ZN6S781C43v60Ev
  virtual void  v61(); // _ZN6S781C43v61Ev
  virtual void  v62(); // _ZN6S781C43v62Ev
  virtual void  v63(); // _ZN6S781C43v63Ev
  virtual void  v64(); // _ZN6S781C43v64Ev
  virtual void  v65(); // _ZN6S781C43v65Ev
  virtual void  v66(); // _ZN6S781C43v66Ev
  virtual void  v67(); // _ZN6S781C43v67Ev
  virtual void  v68(); // _ZN6S781C43v68Ev
  virtual void  v69(); // _ZN6S781C43v69Ev
  virtual void  v70(); // _ZN6S781C43v70Ev
  virtual void  v71(); // _ZN6S781C43v71Ev
  virtual void  v72(); // _ZN6S781C43v72Ev
  virtual void  v73(); // _ZN6S781C43v73Ev
  virtual void  v74(); // _ZN6S781C43v74Ev
  virtual void  v75(); // _ZN6S781C43v75Ev
  virtual void  v76(); // _ZN6S781C43v76Ev
  virtual void  v77(); // _ZN6S781C43v77Ev
  virtual void  v78(); // _ZN6S781C43v78Ev
  virtual void  v79(); // _ZN6S781C43v79Ev
  virtual void  v80(); // _ZN6S781C43v80Ev
  virtual void  v81(); // _ZN6S781C43v81Ev
  virtual void  v82(); // _ZN6S781C43v82Ev
  virtual void  v83(); // _ZN6S781C43v83Ev
  virtual void  v84(); // _ZN6S781C43v84Ev
  virtual void  v85(); // _ZN6S781C43v85Ev
  virtual void  v86(); // _ZN6S781C43v86Ev
  virtual void  v87(); // _ZN6S781C43v87Ev
  virtual void  v88(); // _ZN6S781C43v88Ev
  virtual void  v89(); // _ZN6S781C43v89Ev
  virtual void  v90(); // _ZN6S781C43v90Ev
  virtual void  v91(); // _ZN6S781C43v91Ev
  virtual void  v92(); // _ZN6S781C43v92Ev
  virtual void  v93(); // _ZN6S781C43v93Ev
  virtual void  v94(); // _ZN6S781C43v94Ev
  virtual void  v95(); // _ZN6S781C43v95Ev
  virtual void  v96(); // _ZN6S781C43v96Ev
  virtual void  v97(); // _ZN6S781C43v97Ev
  virtual void  v98(); // _ZN6S781C43v98Ev
  virtual void  v99(); // _ZN6S781C43v99Ev
  virtual void  v100(); // _ZN6S781C44v100Ev
  virtual void  v101(); // _ZN6S781C44v101Ev
  virtual void  v102(); // _ZN6S781C44v102Ev
  virtual void  v103(); // _ZN6S781C44v103Ev
  virtual void  v104(); // _ZN6S781C44v104Ev
  virtual void  v105(); // _ZN6S781C44v105Ev
  virtual void  v106(); // _ZN6S781C44v106Ev
  virtual void  v107(); // _ZN6S781C44v107Ev
  virtual void  v108(); // _ZN6S781C44v108Ev
  virtual void  v109(); // _ZN6S781C44v109Ev
  virtual void  v110(); // _ZN6S781C44v110Ev
  virtual void  v111(); // _ZN6S781C44v111Ev
  virtual void  v112(); // _ZN6S781C44v112Ev
  virtual void  v113(); // _ZN6S781C44v113Ev
  virtual void  v114(); // _ZN6S781C44v114Ev
  virtual void  v115(); // _ZN6S781C44v115Ev
  virtual void  v116(); // _ZN6S781C44v116Ev
  virtual void  v117(); // _ZN6S781C44v117Ev
  virtual void  v118(); // _ZN6S781C44v118Ev
  virtual void  v119(); // _ZN6S781C44v119Ev
  virtual void  v120(); // _ZN6S781C44v120Ev
  virtual void  v121(); // _ZN6S781C44v121Ev
  virtual void  v122(); // _ZN6S781C44v122Ev
  virtual void  v123(); // _ZN6S781C44v123Ev
  virtual void  v124(); // _ZN6S781C44v124Ev
  virtual void  v125(); // _ZN6S781C44v125Ev
  ~S781C4(); // tgen
  S781C4(); // tgen
};
//SIG(-1 S781C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S781C4 ::v4(){vfunc_called(this, "_ZN6S781C42v4Ev");}
void  S781C4 ::v5(){vfunc_called(this, "_ZN6S781C42v5Ev");}
void  S781C4 ::v6(){vfunc_called(this, "_ZN6S781C42v6Ev");}
void  S781C4 ::v7(){vfunc_called(this, "_ZN6S781C42v7Ev");}
void  S781C4 ::v8(){vfunc_called(this, "_ZN6S781C42v8Ev");}
void  S781C4 ::v9(){vfunc_called(this, "_ZN6S781C42v9Ev");}
void  S781C4 ::v10(){vfunc_called(this, "_ZN6S781C43v10Ev");}
void  S781C4 ::v11(){vfunc_called(this, "_ZN6S781C43v11Ev");}
void  S781C4 ::v12(){vfunc_called(this, "_ZN6S781C43v12Ev");}
void  S781C4 ::v13(){vfunc_called(this, "_ZN6S781C43v13Ev");}
void  S781C4 ::v14(){vfunc_called(this, "_ZN6S781C43v14Ev");}
void  S781C4 ::v15(){vfunc_called(this, "_ZN6S781C43v15Ev");}
void  S781C4 ::v16(){vfunc_called(this, "_ZN6S781C43v16Ev");}
void  S781C4 ::v17(){vfunc_called(this, "_ZN6S781C43v17Ev");}
void  S781C4 ::v18(){vfunc_called(this, "_ZN6S781C43v18Ev");}
void  S781C4 ::v19(){vfunc_called(this, "_ZN6S781C43v19Ev");}
void  S781C4 ::v20(){vfunc_called(this, "_ZN6S781C43v20Ev");}
void  S781C4 ::v21(){vfunc_called(this, "_ZN6S781C43v21Ev");}
void  S781C4 ::v22(){vfunc_called(this, "_ZN6S781C43v22Ev");}
void  S781C4 ::v23(){vfunc_called(this, "_ZN6S781C43v23Ev");}
void  S781C4 ::v24(){vfunc_called(this, "_ZN6S781C43v24Ev");}
void  S781C4 ::v25(){vfunc_called(this, "_ZN6S781C43v25Ev");}
void  S781C4 ::v26(){vfunc_called(this, "_ZN6S781C43v26Ev");}
void  S781C4 ::v27(){vfunc_called(this, "_ZN6S781C43v27Ev");}
void  S781C4 ::v28(){vfunc_called(this, "_ZN6S781C43v28Ev");}
void  S781C4 ::v29(){vfunc_called(this, "_ZN6S781C43v29Ev");}
void  S781C4 ::v30(){vfunc_called(this, "_ZN6S781C43v30Ev");}
void  S781C4 ::v31(){vfunc_called(this, "_ZN6S781C43v31Ev");}
void  S781C4 ::v32(){vfunc_called(this, "_ZN6S781C43v32Ev");}
void  S781C4 ::v33(){vfunc_called(this, "_ZN6S781C43v33Ev");}
void  S781C4 ::v34(){vfunc_called(this, "_ZN6S781C43v34Ev");}
void  S781C4 ::v35(){vfunc_called(this, "_ZN6S781C43v35Ev");}
void  S781C4 ::v36(){vfunc_called(this, "_ZN6S781C43v36Ev");}
void  S781C4 ::v37(){vfunc_called(this, "_ZN6S781C43v37Ev");}
void  S781C4 ::v38(){vfunc_called(this, "_ZN6S781C43v38Ev");}
void  S781C4 ::v39(){vfunc_called(this, "_ZN6S781C43v39Ev");}
void  S781C4 ::v40(){vfunc_called(this, "_ZN6S781C43v40Ev");}
void  S781C4 ::v41(){vfunc_called(this, "_ZN6S781C43v41Ev");}
void  S781C4 ::v42(){vfunc_called(this, "_ZN6S781C43v42Ev");}
void  S781C4 ::v43(){vfunc_called(this, "_ZN6S781C43v43Ev");}
void  S781C4 ::v44(){vfunc_called(this, "_ZN6S781C43v44Ev");}
void  S781C4 ::v45(){vfunc_called(this, "_ZN6S781C43v45Ev");}
void  S781C4 ::v46(){vfunc_called(this, "_ZN6S781C43v46Ev");}
void  S781C4 ::v47(){vfunc_called(this, "_ZN6S781C43v47Ev");}
void  S781C4 ::v48(){vfunc_called(this, "_ZN6S781C43v48Ev");}
void  S781C4 ::v49(){vfunc_called(this, "_ZN6S781C43v49Ev");}
void  S781C4 ::v50(){vfunc_called(this, "_ZN6S781C43v50Ev");}
void  S781C4 ::v51(){vfunc_called(this, "_ZN6S781C43v51Ev");}
void  S781C4 ::v52(){vfunc_called(this, "_ZN6S781C43v52Ev");}
void  S781C4 ::v53(){vfunc_called(this, "_ZN6S781C43v53Ev");}
void  S781C4 ::v54(){vfunc_called(this, "_ZN6S781C43v54Ev");}
void  S781C4 ::v55(){vfunc_called(this, "_ZN6S781C43v55Ev");}
void  S781C4 ::v56(){vfunc_called(this, "_ZN6S781C43v56Ev");}
void  S781C4 ::v57(){vfunc_called(this, "_ZN6S781C43v57Ev");}
void  S781C4 ::v58(){vfunc_called(this, "_ZN6S781C43v58Ev");}
void  S781C4 ::v59(){vfunc_called(this, "_ZN6S781C43v59Ev");}
void  S781C4 ::v60(){vfunc_called(this, "_ZN6S781C43v60Ev");}
void  S781C4 ::v61(){vfunc_called(this, "_ZN6S781C43v61Ev");}
void  S781C4 ::v62(){vfunc_called(this, "_ZN6S781C43v62Ev");}
void  S781C4 ::v63(){vfunc_called(this, "_ZN6S781C43v63Ev");}
void  S781C4 ::v64(){vfunc_called(this, "_ZN6S781C43v64Ev");}
void  S781C4 ::v65(){vfunc_called(this, "_ZN6S781C43v65Ev");}
void  S781C4 ::v66(){vfunc_called(this, "_ZN6S781C43v66Ev");}
void  S781C4 ::v67(){vfunc_called(this, "_ZN6S781C43v67Ev");}
void  S781C4 ::v68(){vfunc_called(this, "_ZN6S781C43v68Ev");}
void  S781C4 ::v69(){vfunc_called(this, "_ZN6S781C43v69Ev");}
void  S781C4 ::v70(){vfunc_called(this, "_ZN6S781C43v70Ev");}
void  S781C4 ::v71(){vfunc_called(this, "_ZN6S781C43v71Ev");}
void  S781C4 ::v72(){vfunc_called(this, "_ZN6S781C43v72Ev");}
void  S781C4 ::v73(){vfunc_called(this, "_ZN6S781C43v73Ev");}
void  S781C4 ::v74(){vfunc_called(this, "_ZN6S781C43v74Ev");}
void  S781C4 ::v75(){vfunc_called(this, "_ZN6S781C43v75Ev");}
void  S781C4 ::v76(){vfunc_called(this, "_ZN6S781C43v76Ev");}
void  S781C4 ::v77(){vfunc_called(this, "_ZN6S781C43v77Ev");}
void  S781C4 ::v78(){vfunc_called(this, "_ZN6S781C43v78Ev");}
void  S781C4 ::v79(){vfunc_called(this, "_ZN6S781C43v79Ev");}
void  S781C4 ::v80(){vfunc_called(this, "_ZN6S781C43v80Ev");}
void  S781C4 ::v81(){vfunc_called(this, "_ZN6S781C43v81Ev");}
void  S781C4 ::v82(){vfunc_called(this, "_ZN6S781C43v82Ev");}
void  S781C4 ::v83(){vfunc_called(this, "_ZN6S781C43v83Ev");}
void  S781C4 ::v84(){vfunc_called(this, "_ZN6S781C43v84Ev");}
void  S781C4 ::v85(){vfunc_called(this, "_ZN6S781C43v85Ev");}
void  S781C4 ::v86(){vfunc_called(this, "_ZN6S781C43v86Ev");}
void  S781C4 ::v87(){vfunc_called(this, "_ZN6S781C43v87Ev");}
void  S781C4 ::v88(){vfunc_called(this, "_ZN6S781C43v88Ev");}
void  S781C4 ::v89(){vfunc_called(this, "_ZN6S781C43v89Ev");}
void  S781C4 ::v90(){vfunc_called(this, "_ZN6S781C43v90Ev");}
void  S781C4 ::v91(){vfunc_called(this, "_ZN6S781C43v91Ev");}
void  S781C4 ::v92(){vfunc_called(this, "_ZN6S781C43v92Ev");}
void  S781C4 ::v93(){vfunc_called(this, "_ZN6S781C43v93Ev");}
void  S781C4 ::v94(){vfunc_called(this, "_ZN6S781C43v94Ev");}
void  S781C4 ::v95(){vfunc_called(this, "_ZN6S781C43v95Ev");}
void  S781C4 ::v96(){vfunc_called(this, "_ZN6S781C43v96Ev");}
void  S781C4 ::v97(){vfunc_called(this, "_ZN6S781C43v97Ev");}
void  S781C4 ::v98(){vfunc_called(this, "_ZN6S781C43v98Ev");}
void  S781C4 ::v99(){vfunc_called(this, "_ZN6S781C43v99Ev");}
void  S781C4 ::v100(){vfunc_called(this, "_ZN6S781C44v100Ev");}
void  S781C4 ::v101(){vfunc_called(this, "_ZN6S781C44v101Ev");}
void  S781C4 ::v102(){vfunc_called(this, "_ZN6S781C44v102Ev");}
void  S781C4 ::v103(){vfunc_called(this, "_ZN6S781C44v103Ev");}
void  S781C4 ::v104(){vfunc_called(this, "_ZN6S781C44v104Ev");}
void  S781C4 ::v105(){vfunc_called(this, "_ZN6S781C44v105Ev");}
void  S781C4 ::v106(){vfunc_called(this, "_ZN6S781C44v106Ev");}
void  S781C4 ::v107(){vfunc_called(this, "_ZN6S781C44v107Ev");}
void  S781C4 ::v108(){vfunc_called(this, "_ZN6S781C44v108Ev");}
void  S781C4 ::v109(){vfunc_called(this, "_ZN6S781C44v109Ev");}
void  S781C4 ::v110(){vfunc_called(this, "_ZN6S781C44v110Ev");}
void  S781C4 ::v111(){vfunc_called(this, "_ZN6S781C44v111Ev");}
void  S781C4 ::v112(){vfunc_called(this, "_ZN6S781C44v112Ev");}
void  S781C4 ::v113(){vfunc_called(this, "_ZN6S781C44v113Ev");}
void  S781C4 ::v114(){vfunc_called(this, "_ZN6S781C44v114Ev");}
void  S781C4 ::v115(){vfunc_called(this, "_ZN6S781C44v115Ev");}
void  S781C4 ::v116(){vfunc_called(this, "_ZN6S781C44v116Ev");}
void  S781C4 ::v117(){vfunc_called(this, "_ZN6S781C44v117Ev");}
void  S781C4 ::v118(){vfunc_called(this, "_ZN6S781C44v118Ev");}
void  S781C4 ::v119(){vfunc_called(this, "_ZN6S781C44v119Ev");}
void  S781C4 ::v120(){vfunc_called(this, "_ZN6S781C44v120Ev");}
void  S781C4 ::v121(){vfunc_called(this, "_ZN6S781C44v121Ev");}
void  S781C4 ::v122(){vfunc_called(this, "_ZN6S781C44v122Ev");}
void  S781C4 ::v123(){vfunc_called(this, "_ZN6S781C44v123Ev");}
void  S781C4 ::v124(){vfunc_called(this, "_ZN6S781C44v124Ev");}
void  S781C4 ::v125(){vfunc_called(this, "_ZN6S781C44v125Ev");}
S781C4 ::~S781C4(){ note_dtor("S781C4", this);} // tgen
S781C4 ::S781C4(){ note_ctor("S781C4", this);} // tgen

static void Test_S781C4()
{
  extern Class_Descriptor cd_S781C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S781C4, buf);
    S781C4 *dp, &lv = *(dp=new (buf) S781C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S781C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S781C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S781C4");
    test_class_info(&lv, &cd_S781C4);
    dp->~S781C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS781C4(Test_S781C4, "S781C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S781C4C1Ev();
extern void _ZN6S781C4D1Ev();
Name_Map name_map_S781C4[] = {
  NSPAIR(_ZN6S781C4C1Ev),
  NSPAIR(_ZN6S781C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S781C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S781C4[];
extern void _ZN6S781C4D1Ev();
extern void _ZN6S781C4D0Ev();
extern void _ZN6S781C42v4Ev();
extern void _ZN6S781C42v5Ev();
extern void _ZN6S781C42v6Ev();
extern void _ZN6S781C42v7Ev();
extern void _ZN6S781C42v8Ev();
extern void _ZN6S781C42v9Ev();
extern void _ZN6S781C43v10Ev();
extern void _ZN6S781C43v11Ev();
extern void _ZN6S781C43v12Ev();
extern void _ZN6S781C43v13Ev();
extern void _ZN6S781C43v14Ev();
extern void _ZN6S781C43v15Ev();
extern void _ZN6S781C43v16Ev();
extern void _ZN6S781C43v17Ev();
extern void _ZN6S781C43v18Ev();
extern void _ZN6S781C43v19Ev();
extern void _ZN6S781C43v20Ev();
extern void _ZN6S781C43v21Ev();
extern void _ZN6S781C43v22Ev();
extern void _ZN6S781C43v23Ev();
extern void _ZN6S781C43v24Ev();
extern void _ZN6S781C43v25Ev();
extern void _ZN6S781C43v26Ev();
extern void _ZN6S781C43v27Ev();
extern void _ZN6S781C43v28Ev();
extern void _ZN6S781C43v29Ev();
extern void _ZN6S781C43v30Ev();
extern void _ZN6S781C43v31Ev();
extern void _ZN6S781C43v32Ev();
extern void _ZN6S781C43v33Ev();
extern void _ZN6S781C43v34Ev();
extern void _ZN6S781C43v35Ev();
extern void _ZN6S781C43v36Ev();
extern void _ZN6S781C43v37Ev();
extern void _ZN6S781C43v38Ev();
extern void _ZN6S781C43v39Ev();
extern void _ZN6S781C43v40Ev();
extern void _ZN6S781C43v41Ev();
extern void _ZN6S781C43v42Ev();
extern void _ZN6S781C43v43Ev();
extern void _ZN6S781C43v44Ev();
extern void _ZN6S781C43v45Ev();
extern void _ZN6S781C43v46Ev();
extern void _ZN6S781C43v47Ev();
extern void _ZN6S781C43v48Ev();
extern void _ZN6S781C43v49Ev();
extern void _ZN6S781C43v50Ev();
extern void _ZN6S781C43v51Ev();
extern void _ZN6S781C43v52Ev();
extern void _ZN6S781C43v53Ev();
extern void _ZN6S781C43v54Ev();
extern void _ZN6S781C43v55Ev();
extern void _ZN6S781C43v56Ev();
extern void _ZN6S781C43v57Ev();
extern void _ZN6S781C43v58Ev();
extern void _ZN6S781C43v59Ev();
extern void _ZN6S781C43v60Ev();
extern void _ZN6S781C43v61Ev();
extern void _ZN6S781C43v62Ev();
extern void _ZN6S781C43v63Ev();
extern void _ZN6S781C43v64Ev();
extern void _ZN6S781C43v65Ev();
extern void _ZN6S781C43v66Ev();
extern void _ZN6S781C43v67Ev();
extern void _ZN6S781C43v68Ev();
extern void _ZN6S781C43v69Ev();
extern void _ZN6S781C43v70Ev();
extern void _ZN6S781C43v71Ev();
extern void _ZN6S781C43v72Ev();
extern void _ZN6S781C43v73Ev();
extern void _ZN6S781C43v74Ev();
extern void _ZN6S781C43v75Ev();
extern void _ZN6S781C43v76Ev();
extern void _ZN6S781C43v77Ev();
extern void _ZN6S781C43v78Ev();
extern void _ZN6S781C43v79Ev();
extern void _ZN6S781C43v80Ev();
extern void _ZN6S781C43v81Ev();
extern void _ZN6S781C43v82Ev();
extern void _ZN6S781C43v83Ev();
extern void _ZN6S781C43v84Ev();
extern void _ZN6S781C43v85Ev();
extern void _ZN6S781C43v86Ev();
extern void _ZN6S781C43v87Ev();
extern void _ZN6S781C43v88Ev();
extern void _ZN6S781C43v89Ev();
extern void _ZN6S781C43v90Ev();
extern void _ZN6S781C43v91Ev();
extern void _ZN6S781C43v92Ev();
extern void _ZN6S781C43v93Ev();
extern void _ZN6S781C43v94Ev();
extern void _ZN6S781C43v95Ev();
extern void _ZN6S781C43v96Ev();
extern void _ZN6S781C43v97Ev();
extern void _ZN6S781C43v98Ev();
extern void _ZN6S781C43v99Ev();
extern void _ZN6S781C44v100Ev();
extern void _ZN6S781C44v101Ev();
extern void _ZN6S781C44v102Ev();
extern void _ZN6S781C44v103Ev();
extern void _ZN6S781C44v104Ev();
extern void _ZN6S781C44v105Ev();
extern void _ZN6S781C44v106Ev();
extern void _ZN6S781C44v107Ev();
extern void _ZN6S781C44v108Ev();
extern void _ZN6S781C44v109Ev();
extern void _ZN6S781C44v110Ev();
extern void _ZN6S781C44v111Ev();
extern void _ZN6S781C44v112Ev();
extern void _ZN6S781C44v113Ev();
extern void _ZN6S781C44v114Ev();
extern void _ZN6S781C44v115Ev();
extern void _ZN6S781C44v116Ev();
extern void _ZN6S781C44v117Ev();
extern void _ZN6S781C44v118Ev();
extern void _ZN6S781C44v119Ev();
extern void _ZN6S781C44v120Ev();
extern void _ZN6S781C44v121Ev();
extern void _ZN6S781C44v122Ev();
extern void _ZN6S781C44v123Ev();
extern void _ZN6S781C44v124Ev();
extern void _ZN6S781C44v125Ev();
static  VTBL_ENTRY vtc_S781C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S781C4[0]),
  (VTBL_ENTRY)&_ZN6S781C4D1Ev,
  (VTBL_ENTRY)&_ZN6S781C4D0Ev,
  (VTBL_ENTRY)&_ZN6S781C42v4Ev,
  (VTBL_ENTRY)&_ZN6S781C42v5Ev,
  (VTBL_ENTRY)&_ZN6S781C42v6Ev,
  (VTBL_ENTRY)&_ZN6S781C42v7Ev,
  (VTBL_ENTRY)&_ZN6S781C42v8Ev,
  (VTBL_ENTRY)&_ZN6S781C42v9Ev,
  (VTBL_ENTRY)&_ZN6S781C43v10Ev,
  (VTBL_ENTRY)&_ZN6S781C43v11Ev,
  (VTBL_ENTRY)&_ZN6S781C43v12Ev,
  (VTBL_ENTRY)&_ZN6S781C43v13Ev,
  (VTBL_ENTRY)&_ZN6S781C43v14Ev,
  (VTBL_ENTRY)&_ZN6S781C43v15Ev,
  (VTBL_ENTRY)&_ZN6S781C43v16Ev,
  (VTBL_ENTRY)&_ZN6S781C43v17Ev,
  (VTBL_ENTRY)&_ZN6S781C43v18Ev,
  (VTBL_ENTRY)&_ZN6S781C43v19Ev,
  (VTBL_ENTRY)&_ZN6S781C43v20Ev,
  (VTBL_ENTRY)&_ZN6S781C43v21Ev,
  (VTBL_ENTRY)&_ZN6S781C43v22Ev,
  (VTBL_ENTRY)&_ZN6S781C43v23Ev,
  (VTBL_ENTRY)&_ZN6S781C43v24Ev,
  (VTBL_ENTRY)&_ZN6S781C43v25Ev,
  (VTBL_ENTRY)&_ZN6S781C43v26Ev,
  (VTBL_ENTRY)&_ZN6S781C43v27Ev,
  (VTBL_ENTRY)&_ZN6S781C43v28Ev,
  (VTBL_ENTRY)&_ZN6S781C43v29Ev,
  (VTBL_ENTRY)&_ZN6S781C43v30Ev,
  (VTBL_ENTRY)&_ZN6S781C43v31Ev,
  (VTBL_ENTRY)&_ZN6S781C43v32Ev,
  (VTBL_ENTRY)&_ZN6S781C43v33Ev,
  (VTBL_ENTRY)&_ZN6S781C43v34Ev,
  (VTBL_ENTRY)&_ZN6S781C43v35Ev,
  (VTBL_ENTRY)&_ZN6S781C43v36Ev,
  (VTBL_ENTRY)&_ZN6S781C43v37Ev,
  (VTBL_ENTRY)&_ZN6S781C43v38Ev,
  (VTBL_ENTRY)&_ZN6S781C43v39Ev,
  (VTBL_ENTRY)&_ZN6S781C43v40Ev,
  (VTBL_ENTRY)&_ZN6S781C43v41Ev,
  (VTBL_ENTRY)&_ZN6S781C43v42Ev,
  (VTBL_ENTRY)&_ZN6S781C43v43Ev,
  (VTBL_ENTRY)&_ZN6S781C43v44Ev,
  (VTBL_ENTRY)&_ZN6S781C43v45Ev,
  (VTBL_ENTRY)&_ZN6S781C43v46Ev,
  (VTBL_ENTRY)&_ZN6S781C43v47Ev,
  (VTBL_ENTRY)&_ZN6S781C43v48Ev,
  (VTBL_ENTRY)&_ZN6S781C43v49Ev,
  (VTBL_ENTRY)&_ZN6S781C43v50Ev,
  (VTBL_ENTRY)&_ZN6S781C43v51Ev,
  (VTBL_ENTRY)&_ZN6S781C43v52Ev,
  (VTBL_ENTRY)&_ZN6S781C43v53Ev,
  (VTBL_ENTRY)&_ZN6S781C43v54Ev,
  (VTBL_ENTRY)&_ZN6S781C43v55Ev,
  (VTBL_ENTRY)&_ZN6S781C43v56Ev,
  (VTBL_ENTRY)&_ZN6S781C43v57Ev,
  (VTBL_ENTRY)&_ZN6S781C43v58Ev,
  (VTBL_ENTRY)&_ZN6S781C43v59Ev,
  (VTBL_ENTRY)&_ZN6S781C43v60Ev,
  (VTBL_ENTRY)&_ZN6S781C43v61Ev,
  (VTBL_ENTRY)&_ZN6S781C43v62Ev,
  (VTBL_ENTRY)&_ZN6S781C43v63Ev,
  (VTBL_ENTRY)&_ZN6S781C43v64Ev,
  (VTBL_ENTRY)&_ZN6S781C43v65Ev,
  (VTBL_ENTRY)&_ZN6S781C43v66Ev,
  (VTBL_ENTRY)&_ZN6S781C43v67Ev,
  (VTBL_ENTRY)&_ZN6S781C43v68Ev,
  (VTBL_ENTRY)&_ZN6S781C43v69Ev,
  (VTBL_ENTRY)&_ZN6S781C43v70Ev,
  (VTBL_ENTRY)&_ZN6S781C43v71Ev,
  (VTBL_ENTRY)&_ZN6S781C43v72Ev,
  (VTBL_ENTRY)&_ZN6S781C43v73Ev,
  (VTBL_ENTRY)&_ZN6S781C43v74Ev,
  (VTBL_ENTRY)&_ZN6S781C43v75Ev,
  (VTBL_ENTRY)&_ZN6S781C43v76Ev,
  (VTBL_ENTRY)&_ZN6S781C43v77Ev,
  (VTBL_ENTRY)&_ZN6S781C43v78Ev,
  (VTBL_ENTRY)&_ZN6S781C43v79Ev,
  (VTBL_ENTRY)&_ZN6S781C43v80Ev,
  (VTBL_ENTRY)&_ZN6S781C43v81Ev,
  (VTBL_ENTRY)&_ZN6S781C43v82Ev,
  (VTBL_ENTRY)&_ZN6S781C43v83Ev,
  (VTBL_ENTRY)&_ZN6S781C43v84Ev,
  (VTBL_ENTRY)&_ZN6S781C43v85Ev,
  (VTBL_ENTRY)&_ZN6S781C43v86Ev,
  (VTBL_ENTRY)&_ZN6S781C43v87Ev,
  (VTBL_ENTRY)&_ZN6S781C43v88Ev,
  (VTBL_ENTRY)&_ZN6S781C43v89Ev,
  (VTBL_ENTRY)&_ZN6S781C43v90Ev,
  (VTBL_ENTRY)&_ZN6S781C43v91Ev,
  (VTBL_ENTRY)&_ZN6S781C43v92Ev,
  (VTBL_ENTRY)&_ZN6S781C43v93Ev,
  (VTBL_ENTRY)&_ZN6S781C43v94Ev,
  (VTBL_ENTRY)&_ZN6S781C43v95Ev,
  (VTBL_ENTRY)&_ZN6S781C43v96Ev,
  (VTBL_ENTRY)&_ZN6S781C43v97Ev,
  (VTBL_ENTRY)&_ZN6S781C43v98Ev,
  (VTBL_ENTRY)&_ZN6S781C43v99Ev,
  (VTBL_ENTRY)&_ZN6S781C44v100Ev,
  (VTBL_ENTRY)&_ZN6S781C44v101Ev,
  (VTBL_ENTRY)&_ZN6S781C44v102Ev,
  (VTBL_ENTRY)&_ZN6S781C44v103Ev,
  (VTBL_ENTRY)&_ZN6S781C44v104Ev,
  (VTBL_ENTRY)&_ZN6S781C44v105Ev,
  (VTBL_ENTRY)&_ZN6S781C44v106Ev,
  (VTBL_ENTRY)&_ZN6S781C44v107Ev,
  (VTBL_ENTRY)&_ZN6S781C44v108Ev,
  (VTBL_ENTRY)&_ZN6S781C44v109Ev,
  (VTBL_ENTRY)&_ZN6S781C44v110Ev,
  (VTBL_ENTRY)&_ZN6S781C44v111Ev,
  (VTBL_ENTRY)&_ZN6S781C44v112Ev,
  (VTBL_ENTRY)&_ZN6S781C44v113Ev,
  (VTBL_ENTRY)&_ZN6S781C44v114Ev,
  (VTBL_ENTRY)&_ZN6S781C44v115Ev,
  (VTBL_ENTRY)&_ZN6S781C44v116Ev,
  (VTBL_ENTRY)&_ZN6S781C44v117Ev,
  (VTBL_ENTRY)&_ZN6S781C44v118Ev,
  (VTBL_ENTRY)&_ZN6S781C44v119Ev,
  (VTBL_ENTRY)&_ZN6S781C44v120Ev,
  (VTBL_ENTRY)&_ZN6S781C44v121Ev,
  (VTBL_ENTRY)&_ZN6S781C44v122Ev,
  (VTBL_ENTRY)&_ZN6S781C44v123Ev,
  (VTBL_ENTRY)&_ZN6S781C44v124Ev,
  (VTBL_ENTRY)&_ZN6S781C44v125Ev,
};
extern VTBL_ENTRY _ZTI6S781C4[];
extern  VTBL_ENTRY _ZTV6S781C4[];
Class_Descriptor cd_S781C4 = {  "S781C4", // class name
  bases_S781C4, 1,
  &(vtc_S781C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S781C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S781C4),126, //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  S781C3  : S781C4 {
  virtual void  v126(); // _ZN6S781C34v126Ev
  virtual void  v127(); // _ZN6S781C34v127Ev
  virtual void  v128(); // _ZN6S781C34v128Ev
  virtual void  v129(); // _ZN6S781C34v129Ev
  virtual void  v130(); // _ZN6S781C34v130Ev
  virtual void  v131(); // _ZN6S781C34v131Ev
  virtual void  v132(); // _ZN6S781C34v132Ev
  virtual void  v133(); // _ZN6S781C34v133Ev
  virtual void  v134(); // _ZN6S781C34v134Ev
  virtual void  v135(); // _ZN6S781C34v135Ev
  virtual void  v136(); // _ZN6S781C34v136Ev
  virtual void  v137(); // _ZN6S781C34v137Ev
  virtual void  v138(); // _ZN6S781C34v138Ev
  virtual void  v139(); // _ZN6S781C34v139Ev
  virtual void  v140(); // _ZN6S781C34v140Ev
  virtual void  v141(); // _ZN6S781C34v141Ev
  virtual void  v142(); // _ZN6S781C34v142Ev
  virtual void  v143(); // _ZN6S781C34v143Ev
  ~S781C3(); // tgen
  S781C3(); // tgen
};
//SIG(-1 S781C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S781C3 ::v126(){vfunc_called(this, "_ZN6S781C34v126Ev");}
void  S781C3 ::v127(){vfunc_called(this, "_ZN6S781C34v127Ev");}
void  S781C3 ::v128(){vfunc_called(this, "_ZN6S781C34v128Ev");}
void  S781C3 ::v129(){vfunc_called(this, "_ZN6S781C34v129Ev");}
void  S781C3 ::v130(){vfunc_called(this, "_ZN6S781C34v130Ev");}
void  S781C3 ::v131(){vfunc_called(this, "_ZN6S781C34v131Ev");}
void  S781C3 ::v132(){vfunc_called(this, "_ZN6S781C34v132Ev");}
void  S781C3 ::v133(){vfunc_called(this, "_ZN6S781C34v133Ev");}
void  S781C3 ::v134(){vfunc_called(this, "_ZN6S781C34v134Ev");}
void  S781C3 ::v135(){vfunc_called(this, "_ZN6S781C34v135Ev");}
void  S781C3 ::v136(){vfunc_called(this, "_ZN6S781C34v136Ev");}
void  S781C3 ::v137(){vfunc_called(this, "_ZN6S781C34v137Ev");}
void  S781C3 ::v138(){vfunc_called(this, "_ZN6S781C34v138Ev");}
void  S781C3 ::v139(){vfunc_called(this, "_ZN6S781C34v139Ev");}
void  S781C3 ::v140(){vfunc_called(this, "_ZN6S781C34v140Ev");}
void  S781C3 ::v141(){vfunc_called(this, "_ZN6S781C34v141Ev");}
void  S781C3 ::v142(){vfunc_called(this, "_ZN6S781C34v142Ev");}
void  S781C3 ::v143(){vfunc_called(this, "_ZN6S781C34v143Ev");}
S781C3 ::~S781C3(){ note_dtor("S781C3", this);} // tgen
S781C3 ::S781C3(){ note_ctor("S781C3", this);} // tgen

static void Test_S781C3()
{
  extern Class_Descriptor cd_S781C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S781C3, buf);
    S781C3 *dp, &lv = *(dp=new (buf) S781C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S781C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S781C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S781C4*), 0, "S781C3");
    check_base_class_offset(lv, (S781C4*), 0, "S781C3");
    test_class_info(&lv, &cd_S781C3);
    dp->~S781C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS781C3(Test_S781C3, "S781C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S781C3C1Ev();
extern void _ZN6S781C3D1Ev();
Name_Map name_map_S781C3[] = {
  NSPAIR(_ZN6S781C3C1Ev),
  NSPAIR(_ZN6S781C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S781C4;
extern VTBL_ENTRY _ZTI6S781C4[];
extern  VTBL_ENTRY _ZTV6S781C4[];
static Base_Class bases_S781C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S781C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S781C3[];
extern void _ZN6S781C3D1Ev();
extern void _ZN6S781C3D0Ev();
extern void _ZN6S781C42v4Ev();
extern void _ZN6S781C42v5Ev();
extern void _ZN6S781C42v6Ev();
extern void _ZN6S781C42v7Ev();
extern void _ZN6S781C42v8Ev();
extern void _ZN6S781C42v9Ev();
extern void _ZN6S781C43v10Ev();
extern void _ZN6S781C43v11Ev();
extern void _ZN6S781C43v12Ev();
extern void _ZN6S781C43v13Ev();
extern void _ZN6S781C43v14Ev();
extern void _ZN6S781C43v15Ev();
extern void _ZN6S781C43v16Ev();
extern void _ZN6S781C43v17Ev();
extern void _ZN6S781C43v18Ev();
extern void _ZN6S781C43v19Ev();
extern void _ZN6S781C43v20Ev();
extern void _ZN6S781C43v21Ev();
extern void _ZN6S781C43v22Ev();
extern void _ZN6S781C43v23Ev();
extern void _ZN6S781C43v24Ev();
extern void _ZN6S781C43v25Ev();
extern void _ZN6S781C43v26Ev();
extern void _ZN6S781C43v27Ev();
extern void _ZN6S781C43v28Ev();
extern void _ZN6S781C43v29Ev();
extern void _ZN6S781C43v30Ev();
extern void _ZN6S781C43v31Ev();
extern void _ZN6S781C43v32Ev();
extern void _ZN6S781C43v33Ev();
extern void _ZN6S781C43v34Ev();
extern void _ZN6S781C43v35Ev();
extern void _ZN6S781C43v36Ev();
extern void _ZN6S781C43v37Ev();
extern void _ZN6S781C43v38Ev();
extern void _ZN6S781C43v39Ev();
extern void _ZN6S781C43v40Ev();
extern void _ZN6S781C43v41Ev();
extern void _ZN6S781C43v42Ev();
extern void _ZN6S781C43v43Ev();
extern void _ZN6S781C43v44Ev();
extern void _ZN6S781C43v45Ev();
extern void _ZN6S781C43v46Ev();
extern void _ZN6S781C43v47Ev();
extern void _ZN6S781C43v48Ev();
extern void _ZN6S781C43v49Ev();
extern void _ZN6S781C43v50Ev();
extern void _ZN6S781C43v51Ev();
extern void _ZN6S781C43v52Ev();
extern void _ZN6S781C43v53Ev();
extern void _ZN6S781C43v54Ev();
extern void _ZN6S781C43v55Ev();
extern void _ZN6S781C43v56Ev();
extern void _ZN6S781C43v57Ev();
extern void _ZN6S781C43v58Ev();
extern void _ZN6S781C43v59Ev();
extern void _ZN6S781C43v60Ev();
extern void _ZN6S781C43v61Ev();
extern void _ZN6S781C43v62Ev();
extern void _ZN6S781C43v63Ev();
extern void _ZN6S781C43v64Ev();
extern void _ZN6S781C43v65Ev();
extern void _ZN6S781C43v66Ev();
extern void _ZN6S781C43v67Ev();
extern void _ZN6S781C43v68Ev();
extern void _ZN6S781C43v69Ev();
extern void _ZN6S781C43v70Ev();
extern void _ZN6S781C43v71Ev();
extern void _ZN6S781C43v72Ev();
extern void _ZN6S781C43v73Ev();
extern void _ZN6S781C43v74Ev();
extern void _ZN6S781C43v75Ev();
extern void _ZN6S781C43v76Ev();
extern void _ZN6S781C43v77Ev();
extern void _ZN6S781C43v78Ev();
extern void _ZN6S781C43v79Ev();
extern void _ZN6S781C43v80Ev();
extern void _ZN6S781C43v81Ev();
extern void _ZN6S781C43v82Ev();
extern void _ZN6S781C43v83Ev();
extern void _ZN6S781C43v84Ev();
extern void _ZN6S781C43v85Ev();
extern void _ZN6S781C43v86Ev();
extern void _ZN6S781C43v87Ev();
extern void _ZN6S781C43v88Ev();
extern void _ZN6S781C43v89Ev();
extern void _ZN6S781C43v90Ev();
extern void _ZN6S781C43v91Ev();
extern void _ZN6S781C43v92Ev();
extern void _ZN6S781C43v93Ev();
extern void _ZN6S781C43v94Ev();
extern void _ZN6S781C43v95Ev();
extern void _ZN6S781C43v96Ev();
extern void _ZN6S781C43v97Ev();
extern void _ZN6S781C43v98Ev();
extern void _ZN6S781C43v99Ev();
extern void _ZN6S781C44v100Ev();
extern void _ZN6S781C44v101Ev();
extern void _ZN6S781C44v102Ev();
extern void _ZN6S781C44v103Ev();
extern void _ZN6S781C44v104Ev();
extern void _ZN6S781C44v105Ev();
extern void _ZN6S781C44v106Ev();
extern void _ZN6S781C44v107Ev();
extern void _ZN6S781C44v108Ev();
extern void _ZN6S781C44v109Ev();
extern void _ZN6S781C44v110Ev();
extern void _ZN6S781C44v111Ev();
extern void _ZN6S781C44v112Ev();
extern void _ZN6S781C44v113Ev();
extern void _ZN6S781C44v114Ev();
extern void _ZN6S781C44v115Ev();
extern void _ZN6S781C44v116Ev();
extern void _ZN6S781C44v117Ev();
extern void _ZN6S781C44v118Ev();
extern void _ZN6S781C44v119Ev();
extern void _ZN6S781C44v120Ev();
extern void _ZN6S781C44v121Ev();
extern void _ZN6S781C44v122Ev();
extern void _ZN6S781C44v123Ev();
extern void _ZN6S781C44v124Ev();
extern void _ZN6S781C44v125Ev();
extern void _ZN6S781C34v126Ev();
extern void _ZN6S781C34v127Ev();
extern void _ZN6S781C34v128Ev();
extern void _ZN6S781C34v129Ev();
extern void _ZN6S781C34v130Ev();
extern void _ZN6S781C34v131Ev();
extern void _ZN6S781C34v132Ev();
extern void _ZN6S781C34v133Ev();
extern void _ZN6S781C34v134Ev();
extern void _ZN6S781C34v135Ev();
extern void _ZN6S781C34v136Ev();
extern void _ZN6S781C34v137Ev();
extern void _ZN6S781C34v138Ev();
extern void _ZN6S781C34v139Ev();
extern void _ZN6S781C34v140Ev();
extern void _ZN6S781C34v141Ev();
extern void _ZN6S781C34v142Ev();
extern void _ZN6S781C34v143Ev();
static  VTBL_ENTRY vtc_S781C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S781C3[0]),
  (VTBL_ENTRY)&_ZN6S781C3D1Ev,
  (VTBL_ENTRY)&_ZN6S781C3D0Ev,
  (VTBL_ENTRY)&_ZN6S781C42v4Ev,
  (VTBL_ENTRY)&_ZN6S781C42v5Ev,
  (VTBL_ENTRY)&_ZN6S781C42v6Ev,
  (VTBL_ENTRY)&_ZN6S781C42v7Ev,
  (VTBL_ENTRY)&_ZN6S781C42v8Ev,
  (VTBL_ENTRY)&_ZN6S781C42v9Ev,
  (VTBL_ENTRY)&_ZN6S781C43v10Ev,
  (VTBL_ENTRY)&_ZN6S781C43v11Ev,
  (VTBL_ENTRY)&_ZN6S781C43v12Ev,
  (VTBL_ENTRY)&_ZN6S781C43v13Ev,
  (VTBL_ENTRY)&_ZN6S781C43v14Ev,
  (VTBL_ENTRY)&_ZN6S781C43v15Ev,
  (VTBL_ENTRY)&_ZN6S781C43v16Ev,
  (VTBL_ENTRY)&_ZN6S781C43v17Ev,
  (VTBL_ENTRY)&_ZN6S781C43v18Ev,
  (VTBL_ENTRY)&_ZN6S781C43v19Ev,
  (VTBL_ENTRY)&_ZN6S781C43v20Ev,
  (VTBL_ENTRY)&_ZN6S781C43v21Ev,
  (VTBL_ENTRY)&_ZN6S781C43v22Ev,
  (VTBL_ENTRY)&_ZN6S781C43v23Ev,
  (VTBL_ENTRY)&_ZN6S781C43v24Ev,
  (VTBL_ENTRY)&_ZN6S781C43v25Ev,
  (VTBL_ENTRY)&_ZN6S781C43v26Ev,
  (VTBL_ENTRY)&_ZN6S781C43v27Ev,
  (VTBL_ENTRY)&_ZN6S781C43v28Ev,
  (VTBL_ENTRY)&_ZN6S781C43v29Ev,
  (VTBL_ENTRY)&_ZN6S781C43v30Ev,
  (VTBL_ENTRY)&_ZN6S781C43v31Ev,
  (VTBL_ENTRY)&_ZN6S781C43v32Ev,
  (VTBL_ENTRY)&_ZN6S781C43v33Ev,
  (VTBL_ENTRY)&_ZN6S781C43v34Ev,
  (VTBL_ENTRY)&_ZN6S781C43v35Ev,
  (VTBL_ENTRY)&_ZN6S781C43v36Ev,
  (VTBL_ENTRY)&_ZN6S781C43v37Ev,
  (VTBL_ENTRY)&_ZN6S781C43v38Ev,
  (VTBL_ENTRY)&_ZN6S781C43v39Ev,
  (VTBL_ENTRY)&_ZN6S781C43v40Ev,
  (VTBL_ENTRY)&_ZN6S781C43v41Ev,
  (VTBL_ENTRY)&_ZN6S781C43v42Ev,
  (VTBL_ENTRY)&_ZN6S781C43v43Ev,
  (VTBL_ENTRY)&_ZN6S781C43v44Ev,
  (VTBL_ENTRY)&_ZN6S781C43v45Ev,
  (VTBL_ENTRY)&_ZN6S781C43v46Ev,
  (VTBL_ENTRY)&_ZN6S781C43v47Ev,
  (VTBL_ENTRY)&_ZN6S781C43v48Ev,
  (VTBL_ENTRY)&_ZN6S781C43v49Ev,
  (VTBL_ENTRY)&_ZN6S781C43v50Ev,
  (VTBL_ENTRY)&_ZN6S781C43v51Ev,
  (VTBL_ENTRY)&_ZN6S781C43v52Ev,
  (VTBL_ENTRY)&_ZN6S781C43v53Ev,
  (VTBL_ENTRY)&_ZN6S781C43v54Ev,
  (VTBL_ENTRY)&_ZN6S781C43v55Ev,
  (VTBL_ENTRY)&_ZN6S781C43v56Ev,
  (VTBL_ENTRY)&_ZN6S781C43v57Ev,
  (VTBL_ENTRY)&_ZN6S781C43v58Ev,
  (VTBL_ENTRY)&_ZN6S781C43v59Ev,
  (VTBL_ENTRY)&_ZN6S781C43v60Ev,
  (VTBL_ENTRY)&_ZN6S781C43v61Ev,
  (VTBL_ENTRY)&_ZN6S781C43v62Ev,
  (VTBL_ENTRY)&_ZN6S781C43v63Ev,
  (VTBL_ENTRY)&_ZN6S781C43v64Ev,
  (VTBL_ENTRY)&_ZN6S781C43v65Ev,
  (VTBL_ENTRY)&_ZN6S781C43v66Ev,
  (VTBL_ENTRY)&_ZN6S781C43v67Ev,
  (VTBL_ENTRY)&_ZN6S781C43v68Ev,
  (VTBL_ENTRY)&_ZN6S781C43v69Ev,
  (VTBL_ENTRY)&_ZN6S781C43v70Ev,
  (VTBL_ENTRY)&_ZN6S781C43v71Ev,
  (VTBL_ENTRY)&_ZN6S781C43v72Ev,
  (VTBL_ENTRY)&_ZN6S781C43v73Ev,
  (VTBL_ENTRY)&_ZN6S781C43v74Ev,
  (VTBL_ENTRY)&_ZN6S781C43v75Ev,
  (VTBL_ENTRY)&_ZN6S781C43v76Ev,
  (VTBL_ENTRY)&_ZN6S781C43v77Ev,
  (VTBL_ENTRY)&_ZN6S781C43v78Ev,
  (VTBL_ENTRY)&_ZN6S781C43v79Ev,
  (VTBL_ENTRY)&_ZN6S781C43v80Ev,
  (VTBL_ENTRY)&_ZN6S781C43v81Ev,
  (VTBL_ENTRY)&_ZN6S781C43v82Ev,
  (VTBL_ENTRY)&_ZN6S781C43v83Ev,
  (VTBL_ENTRY)&_ZN6S781C43v84Ev,
  (VTBL_ENTRY)&_ZN6S781C43v85Ev,
  (VTBL_ENTRY)&_ZN6S781C43v86Ev,
  (VTBL_ENTRY)&_ZN6S781C43v87Ev,
  (VTBL_ENTRY)&_ZN6S781C43v88Ev,
  (VTBL_ENTRY)&_ZN6S781C43v89Ev,
  (VTBL_ENTRY)&_ZN6S781C43v90Ev,
  (VTBL_ENTRY)&_ZN6S781C43v91Ev,
  (VTBL_ENTRY)&_ZN6S781C43v92Ev,
  (VTBL_ENTRY)&_ZN6S781C43v93Ev,
  (VTBL_ENTRY)&_ZN6S781C43v94Ev,
  (VTBL_ENTRY)&_ZN6S781C43v95Ev,
  (VTBL_ENTRY)&_ZN6S781C43v96Ev,
  (VTBL_ENTRY)&_ZN6S781C43v97Ev,
  (VTBL_ENTRY)&_ZN6S781C43v98Ev,
  (VTBL_ENTRY)&_ZN6S781C43v99Ev,
  (VTBL_ENTRY)&_ZN6S781C44v100Ev,
  (VTBL_ENTRY)&_ZN6S781C44v101Ev,
  (VTBL_ENTRY)&_ZN6S781C44v102Ev,
  (VTBL_ENTRY)&_ZN6S781C44v103Ev,
  (VTBL_ENTRY)&_ZN6S781C44v104Ev,
  (VTBL_ENTRY)&_ZN6S781C44v105Ev,
  (VTBL_ENTRY)&_ZN6S781C44v106Ev,
  (VTBL_ENTRY)&_ZN6S781C44v107Ev,
  (VTBL_ENTRY)&_ZN6S781C44v108Ev,
  (VTBL_ENTRY)&_ZN6S781C44v109Ev,
  (VTBL_ENTRY)&_ZN6S781C44v110Ev,
  (VTBL_ENTRY)&_ZN6S781C44v111Ev,
  (VTBL_ENTRY)&_ZN6S781C44v112Ev,
  (VTBL_ENTRY)&_ZN6S781C44v113Ev,
  (VTBL_ENTRY)&_ZN6S781C44v114Ev,
  (VTBL_ENTRY)&_ZN6S781C44v115Ev,
  (VTBL_ENTRY)&_ZN6S781C44v116Ev,
  (VTBL_ENTRY)&_ZN6S781C44v117Ev,
  (VTBL_ENTRY)&_ZN6S781C44v118Ev,
  (VTBL_ENTRY)&_ZN6S781C44v119Ev,
  (VTBL_ENTRY)&_ZN6S781C44v120Ev,
  (VTBL_ENTRY)&_ZN6S781C44v121Ev,
  (VTBL_ENTRY)&_ZN6S781C44v122Ev,
  (VTBL_ENTRY)&_ZN6S781C44v123Ev,
  (VTBL_ENTRY)&_ZN6S781C44v124Ev,
  (VTBL_ENTRY)&_ZN6S781C44v125Ev,
  (VTBL_ENTRY)&_ZN6S781C34v126Ev,
  (VTBL_ENTRY)&_ZN6S781C34v127Ev,
  (VTBL_ENTRY)&_ZN6S781C34v128Ev,
  (VTBL_ENTRY)&_ZN6S781C34v129Ev,
  (VTBL_ENTRY)&_ZN6S781C34v130Ev,
  (VTBL_ENTRY)&_ZN6S781C34v131Ev,
  (VTBL_ENTRY)&_ZN6S781C34v132Ev,
  (VTBL_ENTRY)&_ZN6S781C34v133Ev,
  (VTBL_ENTRY)&_ZN6S781C34v134Ev,
  (VTBL_ENTRY)&_ZN6S781C34v135Ev,
  (VTBL_ENTRY)&_ZN6S781C34v136Ev,
  (VTBL_ENTRY)&_ZN6S781C34v137Ev,
  (VTBL_ENTRY)&_ZN6S781C34v138Ev,
  (VTBL_ENTRY)&_ZN6S781C34v139Ev,
  (VTBL_ENTRY)&_ZN6S781C34v140Ev,
  (VTBL_ENTRY)&_ZN6S781C34v141Ev,
  (VTBL_ENTRY)&_ZN6S781C34v142Ev,
  (VTBL_ENTRY)&_ZN6S781C34v143Ev,
};
extern VTBL_ENTRY _ZTI6S781C3[];
extern  VTBL_ENTRY _ZTV6S781C3[];
Class_Descriptor cd_S781C3 = {  "S781C3", // class name
  bases_S781C3, 2,
  &(vtc_S781C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S781C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S781C3),144, //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  S781C2  : S781C3 {
  virtual void  v144(); // _ZN6S781C24v144Ev
  virtual void  v145(); // _ZN6S781C24v145Ev
  virtual void  v146(); // _ZN6S781C24v146Ev
  virtual void  v147(); // _ZN6S781C24v147Ev
  virtual void  v148(); // _ZN6S781C24v148Ev
  virtual void  v149(); // _ZN6S781C24v149Ev
  ~S781C2(); // tgen
  S781C2(); // tgen
};
//SIG(-1 S781C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6}


void  S781C2 ::v144(){vfunc_called(this, "_ZN6S781C24v144Ev");}
void  S781C2 ::v145(){vfunc_called(this, "_ZN6S781C24v145Ev");}
void  S781C2 ::v146(){vfunc_called(this, "_ZN6S781C24v146Ev");}
void  S781C2 ::v147(){vfunc_called(this, "_ZN6S781C24v147Ev");}
void  S781C2 ::v148(){vfunc_called(this, "_ZN6S781C24v148Ev");}
void  S781C2 ::v149(){vfunc_called(this, "_ZN6S781C24v149Ev");}
S781C2 ::~S781C2(){ note_dtor("S781C2", this);} // tgen
S781C2 ::S781C2(){ note_ctor("S781C2", this);} // tgen

static void Test_S781C2()
{
  extern Class_Descriptor cd_S781C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S781C2, buf);
    S781C2 *dp, &lv = *(dp=new (buf) S781C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S781C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S781C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S781C4*)(S781C3*), 0, "S781C2");
    check_base_class_offset(lv, (S781C4*)(S781C3*), 0, "S781C2");
    check_base_class_offset(lv, (S781C3*), 0, "S781C2");
    test_class_info(&lv, &cd_S781C2);
    dp->~S781C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS781C2(Test_S781C2, "S781C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S781C2C1Ev();
extern void _ZN6S781C2D1Ev();
Name_Map name_map_S781C2[] = {
  NSPAIR(_ZN6S781C2C1Ev),
  NSPAIR(_ZN6S781C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S781C4;
extern VTBL_ENTRY _ZTI6S781C4[];
extern  VTBL_ENTRY _ZTV6S781C4[];
extern Class_Descriptor cd_S781C3;
extern VTBL_ENTRY _ZTI6S781C3[];
extern  VTBL_ENTRY _ZTV6S781C3[];
static Base_Class bases_S781C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S781C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S781C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S781C2[];
extern void _ZN6S781C2D1Ev();
extern void _ZN6S781C2D0Ev();
extern void _ZN6S781C42v4Ev();
extern void _ZN6S781C42v5Ev();
extern void _ZN6S781C42v6Ev();
extern void _ZN6S781C42v7Ev();
extern void _ZN6S781C42v8Ev();
extern void _ZN6S781C42v9Ev();
extern void _ZN6S781C43v10Ev();
extern void _ZN6S781C43v11Ev();
extern void _ZN6S781C43v12Ev();
extern void _ZN6S781C43v13Ev();
extern void _ZN6S781C43v14Ev();
extern void _ZN6S781C43v15Ev();
extern void _ZN6S781C43v16Ev();
extern void _ZN6S781C43v17Ev();
extern void _ZN6S781C43v18Ev();
extern void _ZN6S781C43v19Ev();
extern void _ZN6S781C43v20Ev();
extern void _ZN6S781C43v21Ev();
extern void _ZN6S781C43v22Ev();
extern void _ZN6S781C43v23Ev();
extern void _ZN6S781C43v24Ev();
extern void _ZN6S781C43v25Ev();
extern void _ZN6S781C43v26Ev();
extern void _ZN6S781C43v27Ev();
extern void _ZN6S781C43v28Ev();
extern void _ZN6S781C43v29Ev();
extern void _ZN6S781C43v30Ev();
extern void _ZN6S781C43v31Ev();
extern void _ZN6S781C43v32Ev();
extern void _ZN6S781C43v33Ev();
extern void _ZN6S781C43v34Ev();
extern void _ZN6S781C43v35Ev();
extern void _ZN6S781C43v36Ev();
extern void _ZN6S781C43v37Ev();
extern void _ZN6S781C43v38Ev();
extern void _ZN6S781C43v39Ev();
extern void _ZN6S781C43v40Ev();
extern void _ZN6S781C43v41Ev();
extern void _ZN6S781C43v42Ev();
extern void _ZN6S781C43v43Ev();
extern void _ZN6S781C43v44Ev();
extern void _ZN6S781C43v45Ev();
extern void _ZN6S781C43v46Ev();
extern void _ZN6S781C43v47Ev();
extern void _ZN6S781C43v48Ev();
extern void _ZN6S781C43v49Ev();
extern void _ZN6S781C43v50Ev();
extern void _ZN6S781C43v51Ev();
extern void _ZN6S781C43v52Ev();
extern void _ZN6S781C43v53Ev();
extern void _ZN6S781C43v54Ev();
extern void _ZN6S781C43v55Ev();
extern void _ZN6S781C43v56Ev();
extern void _ZN6S781C43v57Ev();
extern void _ZN6S781C43v58Ev();
extern void _ZN6S781C43v59Ev();
extern void _ZN6S781C43v60Ev();
extern void _ZN6S781C43v61Ev();
extern void _ZN6S781C43v62Ev();
extern void _ZN6S781C43v63Ev();
extern void _ZN6S781C43v64Ev();
extern void _ZN6S781C43v65Ev();
extern void _ZN6S781C43v66Ev();
extern void _ZN6S781C43v67Ev();
extern void _ZN6S781C43v68Ev();
extern void _ZN6S781C43v69Ev();
extern void _ZN6S781C43v70Ev();
extern void _ZN6S781C43v71Ev();
extern void _ZN6S781C43v72Ev();
extern void _ZN6S781C43v73Ev();
extern void _ZN6S781C43v74Ev();
extern void _ZN6S781C43v75Ev();
extern void _ZN6S781C43v76Ev();
extern void _ZN6S781C43v77Ev();
extern void _ZN6S781C43v78Ev();
extern void _ZN6S781C43v79Ev();
extern void _ZN6S781C43v80Ev();
extern void _ZN6S781C43v81Ev();
extern void _ZN6S781C43v82Ev();
extern void _ZN6S781C43v83Ev();
extern void _ZN6S781C43v84Ev();
extern void _ZN6S781C43v85Ev();
extern void _ZN6S781C43v86Ev();
extern void _ZN6S781C43v87Ev();
extern void _ZN6S781C43v88Ev();
extern void _ZN6S781C43v89Ev();
extern void _ZN6S781C43v90Ev();
extern void _ZN6S781C43v91Ev();
extern void _ZN6S781C43v92Ev();
extern void _ZN6S781C43v93Ev();
extern void _ZN6S781C43v94Ev();
extern void _ZN6S781C43v95Ev();
extern void _ZN6S781C43v96Ev();
extern void _ZN6S781C43v97Ev();
extern void _ZN6S781C43v98Ev();
extern void _ZN6S781C43v99Ev();
extern void _ZN6S781C44v100Ev();
extern void _ZN6S781C44v101Ev();
extern void _ZN6S781C44v102Ev();
extern void _ZN6S781C44v103Ev();
extern void _ZN6S781C44v104Ev();
extern void _ZN6S781C44v105Ev();
extern void _ZN6S781C44v106Ev();
extern void _ZN6S781C44v107Ev();
extern void _ZN6S781C44v108Ev();
extern void _ZN6S781C44v109Ev();
extern void _ZN6S781C44v110Ev();
extern void _ZN6S781C44v111Ev();
extern void _ZN6S781C44v112Ev();
extern void _ZN6S781C44v113Ev();
extern void _ZN6S781C44v114Ev();
extern void _ZN6S781C44v115Ev();
extern void _ZN6S781C44v116Ev();
extern void _ZN6S781C44v117Ev();
extern void _ZN6S781C44v118Ev();
extern void _ZN6S781C44v119Ev();
extern void _ZN6S781C44v120Ev();
extern void _ZN6S781C44v121Ev();
extern void _ZN6S781C44v122Ev();
extern void _ZN6S781C44v123Ev();
extern void _ZN6S781C44v124Ev();
extern void _ZN6S781C44v125Ev();
extern void _ZN6S781C34v126Ev();
extern void _ZN6S781C34v127Ev();
extern void _ZN6S781C34v128Ev();
extern void _ZN6S781C34v129Ev();
extern void _ZN6S781C34v130Ev();
extern void _ZN6S781C34v131Ev();
extern void _ZN6S781C34v132Ev();
extern void _ZN6S781C34v133Ev();
extern void _ZN6S781C34v134Ev();
extern void _ZN6S781C34v135Ev();
extern void _ZN6S781C34v136Ev();
extern void _ZN6S781C34v137Ev();
extern void _ZN6S781C34v138Ev();
extern void _ZN6S781C34v139Ev();
extern void _ZN6S781C34v140Ev();
extern void _ZN6S781C34v141Ev();
extern void _ZN6S781C34v142Ev();
extern void _ZN6S781C34v143Ev();
extern void _ZN6S781C24v144Ev();
extern void _ZN6S781C24v145Ev();
extern void _ZN6S781C24v146Ev();
extern void _ZN6S781C24v147Ev();
extern void _ZN6S781C24v148Ev();
extern void _ZN6S781C24v149Ev();
static  VTBL_ENTRY vtc_S781C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S781C2[0]),
  (VTBL_ENTRY)&_ZN6S781C2D1Ev,
  (VTBL_ENTRY)&_ZN6S781C2D0Ev,
  (VTBL_ENTRY)&_ZN6S781C42v4Ev,
  (VTBL_ENTRY)&_ZN6S781C42v5Ev,
  (VTBL_ENTRY)&_ZN6S781C42v6Ev,
  (VTBL_ENTRY)&_ZN6S781C42v7Ev,
  (VTBL_ENTRY)&_ZN6S781C42v8Ev,
  (VTBL_ENTRY)&_ZN6S781C42v9Ev,
  (VTBL_ENTRY)&_ZN6S781C43v10Ev,
  (VTBL_ENTRY)&_ZN6S781C43v11Ev,
  (VTBL_ENTRY)&_ZN6S781C43v12Ev,
  (VTBL_ENTRY)&_ZN6S781C43v13Ev,
  (VTBL_ENTRY)&_ZN6S781C43v14Ev,
  (VTBL_ENTRY)&_ZN6S781C43v15Ev,
  (VTBL_ENTRY)&_ZN6S781C43v16Ev,
  (VTBL_ENTRY)&_ZN6S781C43v17Ev,
  (VTBL_ENTRY)&_ZN6S781C43v18Ev,
  (VTBL_ENTRY)&_ZN6S781C43v19Ev,
  (VTBL_ENTRY)&_ZN6S781C43v20Ev,
  (VTBL_ENTRY)&_ZN6S781C43v21Ev,
  (VTBL_ENTRY)&_ZN6S781C43v22Ev,
  (VTBL_ENTRY)&_ZN6S781C43v23Ev,
  (VTBL_ENTRY)&_ZN6S781C43v24Ev,
  (VTBL_ENTRY)&_ZN6S781C43v25Ev,
  (VTBL_ENTRY)&_ZN6S781C43v26Ev,
  (VTBL_ENTRY)&_ZN6S781C43v27Ev,
  (VTBL_ENTRY)&_ZN6S781C43v28Ev,
  (VTBL_ENTRY)&_ZN6S781C43v29Ev,
  (VTBL_ENTRY)&_ZN6S781C43v30Ev,
  (VTBL_ENTRY)&_ZN6S781C43v31Ev,
  (VTBL_ENTRY)&_ZN6S781C43v32Ev,
  (VTBL_ENTRY)&_ZN6S781C43v33Ev,
  (VTBL_ENTRY)&_ZN6S781C43v34Ev,
  (VTBL_ENTRY)&_ZN6S781C43v35Ev,
  (VTBL_ENTRY)&_ZN6S781C43v36Ev,
  (VTBL_ENTRY)&_ZN6S781C43v37Ev,
  (VTBL_ENTRY)&_ZN6S781C43v38Ev,
  (VTBL_ENTRY)&_ZN6S781C43v39Ev,
  (VTBL_ENTRY)&_ZN6S781C43v40Ev,
  (VTBL_ENTRY)&_ZN6S781C43v41Ev,
  (VTBL_ENTRY)&_ZN6S781C43v42Ev,
  (VTBL_ENTRY)&_ZN6S781C43v43Ev,
  (VTBL_ENTRY)&_ZN6S781C43v44Ev,
  (VTBL_ENTRY)&_ZN6S781C43v45Ev,
  (VTBL_ENTRY)&_ZN6S781C43v46Ev,
  (VTBL_ENTRY)&_ZN6S781C43v47Ev,
  (VTBL_ENTRY)&_ZN6S781C43v48Ev,
  (VTBL_ENTRY)&_ZN6S781C43v49Ev,
  (VTBL_ENTRY)&_ZN6S781C43v50Ev,
  (VTBL_ENTRY)&_ZN6S781C43v51Ev,
  (VTBL_ENTRY)&_ZN6S781C43v52Ev,
  (VTBL_ENTRY)&_ZN6S781C43v53Ev,
  (VTBL_ENTRY)&_ZN6S781C43v54Ev,
  (VTBL_ENTRY)&_ZN6S781C43v55Ev,
  (VTBL_ENTRY)&_ZN6S781C43v56Ev,
  (VTBL_ENTRY)&_ZN6S781C43v57Ev,
  (VTBL_ENTRY)&_ZN6S781C43v58Ev,
  (VTBL_ENTRY)&_ZN6S781C43v59Ev,
  (VTBL_ENTRY)&_ZN6S781C43v60Ev,
  (VTBL_ENTRY)&_ZN6S781C43v61Ev,
  (VTBL_ENTRY)&_ZN6S781C43v62Ev,
  (VTBL_ENTRY)&_ZN6S781C43v63Ev,
  (VTBL_ENTRY)&_ZN6S781C43v64Ev,
  (VTBL_ENTRY)&_ZN6S781C43v65Ev,
  (VTBL_ENTRY)&_ZN6S781C43v66Ev,
  (VTBL_ENTRY)&_ZN6S781C43v67Ev,
  (VTBL_ENTRY)&_ZN6S781C43v68Ev,
  (VTBL_ENTRY)&_ZN6S781C43v69Ev,
  (VTBL_ENTRY)&_ZN6S781C43v70Ev,
  (VTBL_ENTRY)&_ZN6S781C43v71Ev,
  (VTBL_ENTRY)&_ZN6S781C43v72Ev,
  (VTBL_ENTRY)&_ZN6S781C43v73Ev,
  (VTBL_ENTRY)&_ZN6S781C43v74Ev,
  (VTBL_ENTRY)&_ZN6S781C43v75Ev,
  (VTBL_ENTRY)&_ZN6S781C43v76Ev,
  (VTBL_ENTRY)&_ZN6S781C43v77Ev,
  (VTBL_ENTRY)&_ZN6S781C43v78Ev,
  (VTBL_ENTRY)&_ZN6S781C43v79Ev,
  (VTBL_ENTRY)&_ZN6S781C43v80Ev,
  (VTBL_ENTRY)&_ZN6S781C43v81Ev,
  (VTBL_ENTRY)&_ZN6S781C43v82Ev,
  (VTBL_ENTRY)&_ZN6S781C43v83Ev,
  (VTBL_ENTRY)&_ZN6S781C43v84Ev,
  (VTBL_ENTRY)&_ZN6S781C43v85Ev,
  (VTBL_ENTRY)&_ZN6S781C43v86Ev,
  (VTBL_ENTRY)&_ZN6S781C43v87Ev,
  (VTBL_ENTRY)&_ZN6S781C43v88Ev,
  (VTBL_ENTRY)&_ZN6S781C43v89Ev,
  (VTBL_ENTRY)&_ZN6S781C43v90Ev,
  (VTBL_ENTRY)&_ZN6S781C43v91Ev,
  (VTBL_ENTRY)&_ZN6S781C43v92Ev,
  (VTBL_ENTRY)&_ZN6S781C43v93Ev,
  (VTBL_ENTRY)&_ZN6S781C43v94Ev,
  (VTBL_ENTRY)&_ZN6S781C43v95Ev,
  (VTBL_ENTRY)&_ZN6S781C43v96Ev,
  (VTBL_ENTRY)&_ZN6S781C43v97Ev,
  (VTBL_ENTRY)&_ZN6S781C43v98Ev,
  (VTBL_ENTRY)&_ZN6S781C43v99Ev,
  (VTBL_ENTRY)&_ZN6S781C44v100Ev,
  (VTBL_ENTRY)&_ZN6S781C44v101Ev,
  (VTBL_ENTRY)&_ZN6S781C44v102Ev,
  (VTBL_ENTRY)&_ZN6S781C44v103Ev,
  (VTBL_ENTRY)&_ZN6S781C44v104Ev,
  (VTBL_ENTRY)&_ZN6S781C44v105Ev,
  (VTBL_ENTRY)&_ZN6S781C44v106Ev,
  (VTBL_ENTRY)&_ZN6S781C44v107Ev,
  (VTBL_ENTRY)&_ZN6S781C44v108Ev,
  (VTBL_ENTRY)&_ZN6S781C44v109Ev,
  (VTBL_ENTRY)&_ZN6S781C44v110Ev,
  (VTBL_ENTRY)&_ZN6S781C44v111Ev,
  (VTBL_ENTRY)&_ZN6S781C44v112Ev,
  (VTBL_ENTRY)&_ZN6S781C44v113Ev,
  (VTBL_ENTRY)&_ZN6S781C44v114Ev,
  (VTBL_ENTRY)&_ZN6S781C44v115Ev,
  (VTBL_ENTRY)&_ZN6S781C44v116Ev,
  (VTBL_ENTRY)&_ZN6S781C44v117Ev,
  (VTBL_ENTRY)&_ZN6S781C44v118Ev,
  (VTBL_ENTRY)&_ZN6S781C44v119Ev,
  (VTBL_ENTRY)&_ZN6S781C44v120Ev,
  (VTBL_ENTRY)&_ZN6S781C44v121Ev,
  (VTBL_ENTRY)&_ZN6S781C44v122Ev,
  (VTBL_ENTRY)&_ZN6S781C44v123Ev,
  (VTBL_ENTRY)&_ZN6S781C44v124Ev,
  (VTBL_ENTRY)&_ZN6S781C44v125Ev,
  (VTBL_ENTRY)&_ZN6S781C34v126Ev,
  (VTBL_ENTRY)&_ZN6S781C34v127Ev,
  (VTBL_ENTRY)&_ZN6S781C34v128Ev,
  (VTBL_ENTRY)&_ZN6S781C34v129Ev,
  (VTBL_ENTRY)&_ZN6S781C34v130Ev,
  (VTBL_ENTRY)&_ZN6S781C34v131Ev,
  (VTBL_ENTRY)&_ZN6S781C34v132Ev,
  (VTBL_ENTRY)&_ZN6S781C34v133Ev,
  (VTBL_ENTRY)&_ZN6S781C34v134Ev,
  (VTBL_ENTRY)&_ZN6S781C34v135Ev,
  (VTBL_ENTRY)&_ZN6S781C34v136Ev,
  (VTBL_ENTRY)&_ZN6S781C34v137Ev,
  (VTBL_ENTRY)&_ZN6S781C34v138Ev,
  (VTBL_ENTRY)&_ZN6S781C34v139Ev,
  (VTBL_ENTRY)&_ZN6S781C34v140Ev,
  (VTBL_ENTRY)&_ZN6S781C34v141Ev,
  (VTBL_ENTRY)&_ZN6S781C34v142Ev,
  (VTBL_ENTRY)&_ZN6S781C34v143Ev,
  (VTBL_ENTRY)&_ZN6S781C24v144Ev,
  (VTBL_ENTRY)&_ZN6S781C24v145Ev,
  (VTBL_ENTRY)&_ZN6S781C24v146Ev,
  (VTBL_ENTRY)&_ZN6S781C24v147Ev,
  (VTBL_ENTRY)&_ZN6S781C24v148Ev,
  (VTBL_ENTRY)&_ZN6S781C24v149Ev,
};
extern VTBL_ENTRY _ZTI6S781C2[];
extern  VTBL_ENTRY _ZTV6S781C2[];
Class_Descriptor cd_S781C2 = {  "S781C2", // class name
  bases_S781C2, 3,
  &(vtc_S781C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S781C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S781C2),150, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S781C1  : S781C2 {
  virtual void  v1(); // _ZN6S781C12v1Ev
  virtual void  v2(); // _ZN6S781C12v2Ev
  virtual void  v3(); // _ZN6S781C12v3Ev
  ~S781C1(); // tgen
  S781C1(); // tgen
};
//SIG(1 S781C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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 v149} v1 v2 v3}


void  S781C1 ::v1(){vfunc_called(this, "_ZN6S781C12v1Ev");}
void  S781C1 ::v2(){vfunc_called(this, "_ZN6S781C12v2Ev");}
void  S781C1 ::v3(){vfunc_called(this, "_ZN6S781C12v3Ev");}
S781C1 ::~S781C1(){ note_dtor("S781C1", this);} // tgen
S781C1 ::S781C1(){ note_ctor("S781C1", this);} // tgen

static void Test_S781C1()
{
  extern Class_Descriptor cd_S781C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S781C1, buf);
    S781C1 *dp, &lv = *(dp=new (buf) S781C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S781C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S781C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S781C4*)(S781C3*)(S781C2*), 0, "S781C1");
    check_base_class_offset(lv, (S781C4*)(S781C3*)(S781C2*), 0, "S781C1");
    check_base_class_offset(lv, (S781C3*)(S781C2*), 0, "S781C1");
    check_base_class_offset(lv, (S781C2*), 0, "S781C1");
    test_class_info(&lv, &cd_S781C1);
    dp->~S781C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS781C1(Test_S781C1, "S781C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S781C1C1Ev();
extern void _ZN6S781C1D1Ev();
Name_Map name_map_S781C1[] = {
  NSPAIR(_ZN6S781C1C1Ev),
  NSPAIR(_ZN6S781C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S781C4;
extern VTBL_ENTRY _ZTI6S781C4[];
extern  VTBL_ENTRY _ZTV6S781C4[];
extern Class_Descriptor cd_S781C3;
extern VTBL_ENTRY _ZTI6S781C3[];
extern  VTBL_ENTRY _ZTV6S781C3[];
extern Class_Descriptor cd_S781C2;
extern VTBL_ENTRY _ZTI6S781C2[];
extern  VTBL_ENTRY _ZTV6S781C2[];
static Base_Class bases_S781C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S781C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S781C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S781C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S781C1[];
extern void _ZN6S781C1D1Ev();
extern void _ZN6S781C1D0Ev();
extern void _ZN6S781C42v4Ev();
extern void _ZN6S781C42v5Ev();
extern void _ZN6S781C42v6Ev();
extern void _ZN6S781C42v7Ev();
extern void _ZN6S781C42v8Ev();
extern void _ZN6S781C42v9Ev();
extern void _ZN6S781C43v10Ev();
extern void _ZN6S781C43v11Ev();
extern void _ZN6S781C43v12Ev();
extern void _ZN6S781C43v13Ev();
extern void _ZN6S781C43v14Ev();
extern void _ZN6S781C43v15Ev();
extern void _ZN6S781C43v16Ev();
extern void _ZN6S781C43v17Ev();
extern void _ZN6S781C43v18Ev();
extern void _ZN6S781C43v19Ev();
extern void _ZN6S781C43v20Ev();
extern void _ZN6S781C43v21Ev();
extern void _ZN6S781C43v22Ev();
extern void _ZN6S781C43v23Ev();
extern void _ZN6S781C43v24Ev();
extern void _ZN6S781C43v25Ev();
extern void _ZN6S781C43v26Ev();
extern void _ZN6S781C43v27Ev();
extern void _ZN6S781C43v28Ev();
extern void _ZN6S781C43v29Ev();
extern void _ZN6S781C43v30Ev();
extern void _ZN6S781C43v31Ev();
extern void _ZN6S781C43v32Ev();
extern void _ZN6S781C43v33Ev();
extern void _ZN6S781C43v34Ev();
extern void _ZN6S781C43v35Ev();
extern void _ZN6S781C43v36Ev();
extern void _ZN6S781C43v37Ev();
extern void _ZN6S781C43v38Ev();
extern void _ZN6S781C43v39Ev();
extern void _ZN6S781C43v40Ev();
extern void _ZN6S781C43v41Ev();
extern void _ZN6S781C43v42Ev();
extern void _ZN6S781C43v43Ev();
extern void _ZN6S781C43v44Ev();
extern void _ZN6S781C43v45Ev();
extern void _ZN6S781C43v46Ev();
extern void _ZN6S781C43v47Ev();
extern void _ZN6S781C43v48Ev();
extern void _ZN6S781C43v49Ev();
extern void _ZN6S781C43v50Ev();
extern void _ZN6S781C43v51Ev();
extern void _ZN6S781C43v52Ev();
extern void _ZN6S781C43v53Ev();
extern void _ZN6S781C43v54Ev();
extern void _ZN6S781C43v55Ev();
extern void _ZN6S781C43v56Ev();
extern void _ZN6S781C43v57Ev();
extern void _ZN6S781C43v58Ev();
extern void _ZN6S781C43v59Ev();
extern void _ZN6S781C43v60Ev();
extern void _ZN6S781C43v61Ev();
extern void _ZN6S781C43v62Ev();
extern void _ZN6S781C43v63Ev();
extern void _ZN6S781C43v64Ev();
extern void _ZN6S781C43v65Ev();
extern void _ZN6S781C43v66Ev();
extern void _ZN6S781C43v67Ev();
extern void _ZN6S781C43v68Ev();
extern void _ZN6S781C43v69Ev();
extern void _ZN6S781C43v70Ev();
extern void _ZN6S781C43v71Ev();
extern void _ZN6S781C43v72Ev();
extern void _ZN6S781C43v73Ev();
extern void _ZN6S781C43v74Ev();
extern void _ZN6S781C43v75Ev();
extern void _ZN6S781C43v76Ev();
extern void _ZN6S781C43v77Ev();
extern void _ZN6S781C43v78Ev();
extern void _ZN6S781C43v79Ev();
extern void _ZN6S781C43v80Ev();
extern void _ZN6S781C43v81Ev();
extern void _ZN6S781C43v82Ev();
extern void _ZN6S781C43v83Ev();
extern void _ZN6S781C43v84Ev();
extern void _ZN6S781C43v85Ev();
extern void _ZN6S781C43v86Ev();
extern void _ZN6S781C43v87Ev();
extern void _ZN6S781C43v88Ev();
extern void _ZN6S781C43v89Ev();
extern void _ZN6S781C43v90Ev();
extern void _ZN6S781C43v91Ev();
extern void _ZN6S781C43v92Ev();
extern void _ZN6S781C43v93Ev();
extern void _ZN6S781C43v94Ev();
extern void _ZN6S781C43v95Ev();
extern void _ZN6S781C43v96Ev();
extern void _ZN6S781C43v97Ev();
extern void _ZN6S781C43v98Ev();
extern void _ZN6S781C43v99Ev();
extern void _ZN6S781C44v100Ev();
extern void _ZN6S781C44v101Ev();
extern void _ZN6S781C44v102Ev();
extern void _ZN6S781C44v103Ev();
extern void _ZN6S781C44v104Ev();
extern void _ZN6S781C44v105Ev();
extern void _ZN6S781C44v106Ev();
extern void _ZN6S781C44v107Ev();
extern void _ZN6S781C44v108Ev();
extern void _ZN6S781C44v109Ev();
extern void _ZN6S781C44v110Ev();
extern void _ZN6S781C44v111Ev();
extern void _ZN6S781C44v112Ev();
extern void _ZN6S781C44v113Ev();
extern void _ZN6S781C44v114Ev();
extern void _ZN6S781C44v115Ev();
extern void _ZN6S781C44v116Ev();
extern void _ZN6S781C44v117Ev();
extern void _ZN6S781C44v118Ev();
extern void _ZN6S781C44v119Ev();
extern void _ZN6S781C44v120Ev();
extern void _ZN6S781C44v121Ev();
extern void _ZN6S781C44v122Ev();
extern void _ZN6S781C44v123Ev();
extern void _ZN6S781C44v124Ev();
extern void _ZN6S781C44v125Ev();
extern void _ZN6S781C34v126Ev();
extern void _ZN6S781C34v127Ev();
extern void _ZN6S781C34v128Ev();
extern void _ZN6S781C34v129Ev();
extern void _ZN6S781C34v130Ev();
extern void _ZN6S781C34v131Ev();
extern void _ZN6S781C34v132Ev();
extern void _ZN6S781C34v133Ev();
extern void _ZN6S781C34v134Ev();
extern void _ZN6S781C34v135Ev();
extern void _ZN6S781C34v136Ev();
extern void _ZN6S781C34v137Ev();
extern void _ZN6S781C34v138Ev();
extern void _ZN6S781C34v139Ev();
extern void _ZN6S781C34v140Ev();
extern void _ZN6S781C34v141Ev();
extern void _ZN6S781C34v142Ev();
extern void _ZN6S781C34v143Ev();
extern void _ZN6S781C24v144Ev();
extern void _ZN6S781C24v145Ev();
extern void _ZN6S781C24v146Ev();
extern void _ZN6S781C24v147Ev();
extern void _ZN6S781C24v148Ev();
extern void _ZN6S781C24v149Ev();
extern void _ZN6S781C12v1Ev();
extern void _ZN6S781C12v2Ev();
extern void _ZN6S781C12v3Ev();
static  VTBL_ENTRY vtc_S781C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S781C1[0]),
  (VTBL_ENTRY)&_ZN6S781C1D1Ev,
  (VTBL_ENTRY)&_ZN6S781C1D0Ev,
  (VTBL_ENTRY)&_ZN6S781C42v4Ev,
  (VTBL_ENTRY)&_ZN6S781C42v5Ev,
  (VTBL_ENTRY)&_ZN6S781C42v6Ev,
  (VTBL_ENTRY)&_ZN6S781C42v7Ev,
  (VTBL_ENTRY)&_ZN6S781C42v8Ev,
  (VTBL_ENTRY)&_ZN6S781C42v9Ev,
  (VTBL_ENTRY)&_ZN6S781C43v10Ev,
  (VTBL_ENTRY)&_ZN6S781C43v11Ev,
  (VTBL_ENTRY)&_ZN6S781C43v12Ev,
  (VTBL_ENTRY)&_ZN6S781C43v13Ev,
  (VTBL_ENTRY)&_ZN6S781C43v14Ev,
  (VTBL_ENTRY)&_ZN6S781C43v15Ev,
  (VTBL_ENTRY)&_ZN6S781C43v16Ev,
  (VTBL_ENTRY)&_ZN6S781C43v17Ev,
  (VTBL_ENTRY)&_ZN6S781C43v18Ev,
  (VTBL_ENTRY)&_ZN6S781C43v19Ev,
  (VTBL_ENTRY)&_ZN6S781C43v20Ev,
  (VTBL_ENTRY)&_ZN6S781C43v21Ev,
  (VTBL_ENTRY)&_ZN6S781C43v22Ev,
  (VTBL_ENTRY)&_ZN6S781C43v23Ev,
  (VTBL_ENTRY)&_ZN6S781C43v24Ev,
  (VTBL_ENTRY)&_ZN6S781C43v25Ev,
  (VTBL_ENTRY)&_ZN6S781C43v26Ev,
  (VTBL_ENTRY)&_ZN6S781C43v27Ev,
  (VTBL_ENTRY)&_ZN6S781C43v28Ev,
  (VTBL_ENTRY)&_ZN6S781C43v29Ev,
  (VTBL_ENTRY)&_ZN6S781C43v30Ev,
  (VTBL_ENTRY)&_ZN6S781C43v31Ev,
  (VTBL_ENTRY)&_ZN6S781C43v32Ev,
  (VTBL_ENTRY)&_ZN6S781C43v33Ev,
  (VTBL_ENTRY)&_ZN6S781C43v34Ev,
  (VTBL_ENTRY)&_ZN6S781C43v35Ev,
  (VTBL_ENTRY)&_ZN6S781C43v36Ev,
  (VTBL_ENTRY)&_ZN6S781C43v37Ev,
  (VTBL_ENTRY)&_ZN6S781C43v38Ev,
  (VTBL_ENTRY)&_ZN6S781C43v39Ev,
  (VTBL_ENTRY)&_ZN6S781C43v40Ev,
  (VTBL_ENTRY)&_ZN6S781C43v41Ev,
  (VTBL_ENTRY)&_ZN6S781C43v42Ev,
  (VTBL_ENTRY)&_ZN6S781C43v43Ev,
  (VTBL_ENTRY)&_ZN6S781C43v44Ev,
  (VTBL_ENTRY)&_ZN6S781C43v45Ev,
  (VTBL_ENTRY)&_ZN6S781C43v46Ev,
  (VTBL_ENTRY)&_ZN6S781C43v47Ev,
  (VTBL_ENTRY)&_ZN6S781C43v48Ev,
  (VTBL_ENTRY)&_ZN6S781C43v49Ev,
  (VTBL_ENTRY)&_ZN6S781C43v50Ev,
  (VTBL_ENTRY)&_ZN6S781C43v51Ev,
  (VTBL_ENTRY)&_ZN6S781C43v52Ev,
  (VTBL_ENTRY)&_ZN6S781C43v53Ev,
  (VTBL_ENTRY)&_ZN6S781C43v54Ev,
  (VTBL_ENTRY)&_ZN6S781C43v55Ev,
  (VTBL_ENTRY)&_ZN6S781C43v56Ev,
  (VTBL_ENTRY)&_ZN6S781C43v57Ev,
  (VTBL_ENTRY)&_ZN6S781C43v58Ev,
  (VTBL_ENTRY)&_ZN6S781C43v59Ev,
  (VTBL_ENTRY)&_ZN6S781C43v60Ev,
  (VTBL_ENTRY)&_ZN6S781C43v61Ev,
  (VTBL_ENTRY)&_ZN6S781C43v62Ev,
  (VTBL_ENTRY)&_ZN6S781C43v63Ev,
  (VTBL_ENTRY)&_ZN6S781C43v64Ev,
  (VTBL_ENTRY)&_ZN6S781C43v65Ev,
  (VTBL_ENTRY)&_ZN6S781C43v66Ev,
  (VTBL_ENTRY)&_ZN6S781C43v67Ev,
  (VTBL_ENTRY)&_ZN6S781C43v68Ev,
  (VTBL_ENTRY)&_ZN6S781C43v69Ev,
  (VTBL_ENTRY)&_ZN6S781C43v70Ev,
  (VTBL_ENTRY)&_ZN6S781C43v71Ev,
  (VTBL_ENTRY)&_ZN6S781C43v72Ev,
  (VTBL_ENTRY)&_ZN6S781C43v73Ev,
  (VTBL_ENTRY)&_ZN6S781C43v74Ev,
  (VTBL_ENTRY)&_ZN6S781C43v75Ev,
  (VTBL_ENTRY)&_ZN6S781C43v76Ev,
  (VTBL_ENTRY)&_ZN6S781C43v77Ev,
  (VTBL_ENTRY)&_ZN6S781C43v78Ev,
  (VTBL_ENTRY)&_ZN6S781C43v79Ev,
  (VTBL_ENTRY)&_ZN6S781C43v80Ev,
  (VTBL_ENTRY)&_ZN6S781C43v81Ev,
  (VTBL_ENTRY)&_ZN6S781C43v82Ev,
  (VTBL_ENTRY)&_ZN6S781C43v83Ev,
  (VTBL_ENTRY)&_ZN6S781C43v84Ev,
  (VTBL_ENTRY)&_ZN6S781C43v85Ev,
  (VTBL_ENTRY)&_ZN6S781C43v86Ev,
  (VTBL_ENTRY)&_ZN6S781C43v87Ev,
  (VTBL_ENTRY)&_ZN6S781C43v88Ev,
  (VTBL_ENTRY)&_ZN6S781C43v89Ev,
  (VTBL_ENTRY)&_ZN6S781C43v90Ev,
  (VTBL_ENTRY)&_ZN6S781C43v91Ev,
  (VTBL_ENTRY)&_ZN6S781C43v92Ev,
  (VTBL_ENTRY)&_ZN6S781C43v93Ev,
  (VTBL_ENTRY)&_ZN6S781C43v94Ev,
  (VTBL_ENTRY)&_ZN6S781C43v95Ev,
  (VTBL_ENTRY)&_ZN6S781C43v96Ev,
  (VTBL_ENTRY)&_ZN6S781C43v97Ev,
  (VTBL_ENTRY)&_ZN6S781C43v98Ev,
  (VTBL_ENTRY)&_ZN6S781C43v99Ev,
  (VTBL_ENTRY)&_ZN6S781C44v100Ev,
  (VTBL_ENTRY)&_ZN6S781C44v101Ev,
  (VTBL_ENTRY)&_ZN6S781C44v102Ev,
  (VTBL_ENTRY)&_ZN6S781C44v103Ev,
  (VTBL_ENTRY)&_ZN6S781C44v104Ev,
  (VTBL_ENTRY)&_ZN6S781C44v105Ev,
  (VTBL_ENTRY)&_ZN6S781C44v106Ev,
  (VTBL_ENTRY)&_ZN6S781C44v107Ev,
  (VTBL_ENTRY)&_ZN6S781C44v108Ev,
  (VTBL_ENTRY)&_ZN6S781C44v109Ev,
  (VTBL_ENTRY)&_ZN6S781C44v110Ev,
  (VTBL_ENTRY)&_ZN6S781C44v111Ev,
  (VTBL_ENTRY)&_ZN6S781C44v112Ev,
  (VTBL_ENTRY)&_ZN6S781C44v113Ev,
  (VTBL_ENTRY)&_ZN6S781C44v114Ev,
  (VTBL_ENTRY)&_ZN6S781C44v115Ev,
  (VTBL_ENTRY)&_ZN6S781C44v116Ev,
  (VTBL_ENTRY)&_ZN6S781C44v117Ev,
  (VTBL_ENTRY)&_ZN6S781C44v118Ev,
  (VTBL_ENTRY)&_ZN6S781C44v119Ev,
  (VTBL_ENTRY)&_ZN6S781C44v120Ev,
  (VTBL_ENTRY)&_ZN6S781C44v121Ev,
  (VTBL_ENTRY)&_ZN6S781C44v122Ev,
  (VTBL_ENTRY)&_ZN6S781C44v123Ev,
  (VTBL_ENTRY)&_ZN6S781C44v124Ev,
  (VTBL_ENTRY)&_ZN6S781C44v125Ev,
  (VTBL_ENTRY)&_ZN6S781C34v126Ev,
  (VTBL_ENTRY)&_ZN6S781C34v127Ev,
  (VTBL_ENTRY)&_ZN6S781C34v128Ev,
  (VTBL_ENTRY)&_ZN6S781C34v129Ev,
  (VTBL_ENTRY)&_ZN6S781C34v130Ev,
  (VTBL_ENTRY)&_ZN6S781C34v131Ev,
  (VTBL_ENTRY)&_ZN6S781C34v132Ev,
  (VTBL_ENTRY)&_ZN6S781C34v133Ev,
  (VTBL_ENTRY)&_ZN6S781C34v134Ev,
  (VTBL_ENTRY)&_ZN6S781C34v135Ev,
  (VTBL_ENTRY)&_ZN6S781C34v136Ev,
  (VTBL_ENTRY)&_ZN6S781C34v137Ev,
  (VTBL_ENTRY)&_ZN6S781C34v138Ev,
  (VTBL_ENTRY)&_ZN6S781C34v139Ev,
  (VTBL_ENTRY)&_ZN6S781C34v140Ev,
  (VTBL_ENTRY)&_ZN6S781C34v141Ev,
  (VTBL_ENTRY)&_ZN6S781C34v142Ev,
  (VTBL_ENTRY)&_ZN6S781C34v143Ev,
  (VTBL_ENTRY)&_ZN6S781C24v144Ev,
  (VTBL_ENTRY)&_ZN6S781C24v145Ev,
  (VTBL_ENTRY)&_ZN6S781C24v146Ev,
  (VTBL_ENTRY)&_ZN6S781C24v147Ev,
  (VTBL_ENTRY)&_ZN6S781C24v148Ev,
  (VTBL_ENTRY)&_ZN6S781C24v149Ev,
  (VTBL_ENTRY)&_ZN6S781C12v1Ev,
  (VTBL_ENTRY)&_ZN6S781C12v2Ev,
  (VTBL_ENTRY)&_ZN6S781C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S781C1[];
extern  VTBL_ENTRY _ZTV6S781C1[];
Class_Descriptor cd_S781C1 = {  "S781C1", // class name
  bases_S781C1, 4,
  &(vtc_S781C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S781C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S781C1),153, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S788C4  : S785C5_nt {
  virtual void  v9(); // _ZN6S788C42v9Ev
  virtual void  v10(); // _ZN6S788C43v10Ev
  virtual void  v11(); // _ZN6S788C43v11Ev
  virtual void  v12(); // _ZN6S788C43v12Ev
  virtual void  v13(); // _ZN6S788C43v13Ev
  virtual void  v14(); // _ZN6S788C43v14Ev
  virtual void  v15(); // _ZN6S788C43v15Ev
  virtual void  v16(); // _ZN6S788C43v16Ev
  virtual void  v17(); // _ZN6S788C43v17Ev
  virtual void  v18(); // _ZN6S788C43v18Ev
  virtual void  v19(); // _ZN6S788C43v19Ev
  virtual void  v20(); // _ZN6S788C43v20Ev
  virtual void  v21(); // _ZN6S788C43v21Ev
  virtual void  v22(); // _ZN6S788C43v22Ev
  virtual void  v23(); // _ZN6S788C43v23Ev
  virtual void  v24(); // _ZN6S788C43v24Ev
  virtual void  v25(); // _ZN6S788C43v25Ev
  virtual void  v26(); // _ZN6S788C43v26Ev
  virtual void  v27(); // _ZN6S788C43v27Ev
  virtual void  v28(); // _ZN6S788C43v28Ev
  virtual void  v29(); // _ZN6S788C43v29Ev
  virtual void  v30(); // _ZN6S788C43v30Ev
  virtual void  v31(); // _ZN6S788C43v31Ev
  virtual void  v32(); // _ZN6S788C43v32Ev
  virtual void  v33(); // _ZN6S788C43v33Ev
  virtual void  v34(); // _ZN6S788C43v34Ev
  virtual void  v35(); // _ZN6S788C43v35Ev
  virtual void  v36(); // _ZN6S788C43v36Ev
  virtual void  v37(); // _ZN6S788C43v37Ev
  virtual void  v38(); // _ZN6S788C43v38Ev
  virtual void  v39(); // _ZN6S788C43v39Ev
  virtual void  v40(); // _ZN6S788C43v40Ev
  virtual void  v41(); // _ZN6S788C43v41Ev
  virtual void  v42(); // _ZN6S788C43v42Ev
  virtual void  v43(); // _ZN6S788C43v43Ev
  virtual void  v44(); // _ZN6S788C43v44Ev
  virtual void  v45(); // _ZN6S788C43v45Ev
  virtual void  v46(); // _ZN6S788C43v46Ev
  virtual void  v47(); // _ZN6S788C43v47Ev
  virtual void  v48(); // _ZN6S788C43v48Ev
  virtual void  v49(); // _ZN6S788C43v49Ev
  virtual void  v50(); // _ZN6S788C43v50Ev
  virtual void  v51(); // _ZN6S788C43v51Ev
  virtual void  v52(); // _ZN6S788C43v52Ev
  virtual void  v53(); // _ZN6S788C43v53Ev
  virtual void  v54(); // _ZN6S788C43v54Ev
  virtual void  v55(); // _ZN6S788C43v55Ev
  virtual void  v56(); // _ZN6S788C43v56Ev
  virtual void  v57(); // _ZN6S788C43v57Ev
  virtual void  v58(); // _ZN6S788C43v58Ev
  virtual void  v59(); // _ZN6S788C43v59Ev
  virtual void  v60(); // _ZN6S788C43v60Ev
  virtual void  v61(); // _ZN6S788C43v61Ev
  virtual void  v62(); // _ZN6S788C43v62Ev
  virtual void  v63(); // _ZN6S788C43v63Ev
  virtual void  v64(); // _ZN6S788C43v64Ev
  virtual void  v65(); // _ZN6S788C43v65Ev
  virtual void  v66(); // _ZN6S788C43v66Ev
  virtual void  v67(); // _ZN6S788C43v67Ev
  virtual void  v68(); // _ZN6S788C43v68Ev
  virtual void  v69(); // _ZN6S788C43v69Ev
  virtual void  v70(); // _ZN6S788C43v70Ev
  virtual void  v71(); // _ZN6S788C43v71Ev
  virtual void  v72(); // _ZN6S788C43v72Ev
  virtual void  v73(); // _ZN6S788C43v73Ev
  virtual void  v74(); // _ZN6S788C43v74Ev
  virtual void  v75(); // _ZN6S788C43v75Ev
  virtual void  v76(); // _ZN6S788C43v76Ev
  virtual void  v77(); // _ZN6S788C43v77Ev
  virtual void  v78(); // _ZN6S788C43v78Ev
  virtual void  v79(); // _ZN6S788C43v79Ev
  virtual void  v80(); // _ZN6S788C43v80Ev
  virtual void  v81(); // _ZN6S788C43v81Ev
  virtual void  v82(); // _ZN6S788C43v82Ev
  virtual void  v83(); // _ZN6S788C43v83Ev
  virtual void  v84(); // _ZN6S788C43v84Ev
  virtual void  v85(); // _ZN6S788C43v85Ev
  virtual void  v86(); // _ZN6S788C43v86Ev
  virtual void  v87(); // _ZN6S788C43v87Ev
  virtual void  v88(); // _ZN6S788C43v88Ev
  virtual void  v89(); // _ZN6S788C43v89Ev
  virtual void  v90(); // _ZN6S788C43v90Ev
  virtual void  v91(); // _ZN6S788C43v91Ev
  virtual void  v92(); // _ZN6S788C43v92Ev
  virtual void  v93(); // _ZN6S788C43v93Ev
  virtual void  v94(); // _ZN6S788C43v94Ev
  virtual void  v95(); // _ZN6S788C43v95Ev
  virtual void  v96(); // _ZN6S788C43v96Ev
  virtual void  v97(); // _ZN6S788C43v97Ev
  virtual void  v98(); // _ZN6S788C43v98Ev
  virtual void  v99(); // _ZN6S788C43v99Ev
  virtual void  v100(); // _ZN6S788C44v100Ev
  virtual void  v101(); // _ZN6S788C44v101Ev
  virtual void  v102(); // _ZN6S788C44v102Ev
  virtual void  v103(); // _ZN6S788C44v103Ev
  virtual void  v104(); // _ZN6S788C44v104Ev
  virtual void  v105(); // _ZN6S788C44v105Ev
  virtual void  v106(); // _ZN6S788C44v106Ev
  virtual void  v107(); // _ZN6S788C44v107Ev
  virtual void  v108(); // _ZN6S788C44v108Ev
  virtual void  v109(); // _ZN6S788C44v109Ev
  virtual void  v110(); // _ZN6S788C44v110Ev
  virtual void  v111(); // _ZN6S788C44v111Ev
  virtual void  v112(); // _ZN6S788C44v112Ev
  virtual void  v113(); // _ZN6S788C44v113Ev
  virtual void  v114(); // _ZN6S788C44v114Ev
  virtual void  v115(); // _ZN6S788C44v115Ev
  virtual void  v116(); // _ZN6S788C44v116Ev
  virtual void  v117(); // _ZN6S788C44v117Ev
  virtual void  v118(); // _ZN6S788C44v118Ev
  virtual void  v119(); // _ZN6S788C44v119Ev
  virtual void  v120(); // _ZN6S788C44v120Ev
  virtual void  v121(); // _ZN6S788C44v121Ev
  virtual void  v122(); // _ZN6S788C44v122Ev
  virtual void  v123(); // _ZN6S788C44v123Ev
  virtual void  v124(); // _ZN6S788C44v124Ev
  virtual void  v125(); // _ZN6S788C44v125Ev
  virtual void  v126(); // _ZN6S788C44v126Ev
  virtual void  v127(); // _ZN6S788C44v127Ev
  virtual void  v128(); // _ZN6S788C44v128Ev
  virtual void  v129(); // _ZN6S788C44v129Ev
  virtual void  v130(); // _ZN6S788C44v130Ev
  ~S788C4(); // tgen
  S788C4(); // tgen
};
//SIG(-1 S788C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S788C4 ::v9(){vfunc_called(this, "_ZN6S788C42v9Ev");}
void  S788C4 ::v10(){vfunc_called(this, "_ZN6S788C43v10Ev");}
void  S788C4 ::v11(){vfunc_called(this, "_ZN6S788C43v11Ev");}
void  S788C4 ::v12(){vfunc_called(this, "_ZN6S788C43v12Ev");}
void  S788C4 ::v13(){vfunc_called(this, "_ZN6S788C43v13Ev");}
void  S788C4 ::v14(){vfunc_called(this, "_ZN6S788C43v14Ev");}
void  S788C4 ::v15(){vfunc_called(this, "_ZN6S788C43v15Ev");}
void  S788C4 ::v16(){vfunc_called(this, "_ZN6S788C43v16Ev");}
void  S788C4 ::v17(){vfunc_called(this, "_ZN6S788C43v17Ev");}
void  S788C4 ::v18(){vfunc_called(this, "_ZN6S788C43v18Ev");}
void  S788C4 ::v19(){vfunc_called(this, "_ZN6S788C43v19Ev");}
void  S788C4 ::v20(){vfunc_called(this, "_ZN6S788C43v20Ev");}
void  S788C4 ::v21(){vfunc_called(this, "_ZN6S788C43v21Ev");}
void  S788C4 ::v22(){vfunc_called(this, "_ZN6S788C43v22Ev");}
void  S788C4 ::v23(){vfunc_called(this, "_ZN6S788C43v23Ev");}
void  S788C4 ::v24(){vfunc_called(this, "_ZN6S788C43v24Ev");}
void  S788C4 ::v25(){vfunc_called(this, "_ZN6S788C43v25Ev");}
void  S788C4 ::v26(){vfunc_called(this, "_ZN6S788C43v26Ev");}
void  S788C4 ::v27(){vfunc_called(this, "_ZN6S788C43v27Ev");}
void  S788C4 ::v28(){vfunc_called(this, "_ZN6S788C43v28Ev");}
void  S788C4 ::v29(){vfunc_called(this, "_ZN6S788C43v29Ev");}
void  S788C4 ::v30(){vfunc_called(this, "_ZN6S788C43v30Ev");}
void  S788C4 ::v31(){vfunc_called(this, "_ZN6S788C43v31Ev");}
void  S788C4 ::v32(){vfunc_called(this, "_ZN6S788C43v32Ev");}
void  S788C4 ::v33(){vfunc_called(this, "_ZN6S788C43v33Ev");}
void  S788C4 ::v34(){vfunc_called(this, "_ZN6S788C43v34Ev");}
void  S788C4 ::v35(){vfunc_called(this, "_ZN6S788C43v35Ev");}
void  S788C4 ::v36(){vfunc_called(this, "_ZN6S788C43v36Ev");}
void  S788C4 ::v37(){vfunc_called(this, "_ZN6S788C43v37Ev");}
void  S788C4 ::v38(){vfunc_called(this, "_ZN6S788C43v38Ev");}
void  S788C4 ::v39(){vfunc_called(this, "_ZN6S788C43v39Ev");}
void  S788C4 ::v40(){vfunc_called(this, "_ZN6S788C43v40Ev");}
void  S788C4 ::v41(){vfunc_called(this, "_ZN6S788C43v41Ev");}
void  S788C4 ::v42(){vfunc_called(this, "_ZN6S788C43v42Ev");}
void  S788C4 ::v43(){vfunc_called(this, "_ZN6S788C43v43Ev");}
void  S788C4 ::v44(){vfunc_called(this, "_ZN6S788C43v44Ev");}
void  S788C4 ::v45(){vfunc_called(this, "_ZN6S788C43v45Ev");}
void  S788C4 ::v46(){vfunc_called(this, "_ZN6S788C43v46Ev");}
void  S788C4 ::v47(){vfunc_called(this, "_ZN6S788C43v47Ev");}
void  S788C4 ::v48(){vfunc_called(this, "_ZN6S788C43v48Ev");}
void  S788C4 ::v49(){vfunc_called(this, "_ZN6S788C43v49Ev");}
void  S788C4 ::v50(){vfunc_called(this, "_ZN6S788C43v50Ev");}
void  S788C4 ::v51(){vfunc_called(this, "_ZN6S788C43v51Ev");}
void  S788C4 ::v52(){vfunc_called(this, "_ZN6S788C43v52Ev");}
void  S788C4 ::v53(){vfunc_called(this, "_ZN6S788C43v53Ev");}
void  S788C4 ::v54(){vfunc_called(this, "_ZN6S788C43v54Ev");}
void  S788C4 ::v55(){vfunc_called(this, "_ZN6S788C43v55Ev");}
void  S788C4 ::v56(){vfunc_called(this, "_ZN6S788C43v56Ev");}
void  S788C4 ::v57(){vfunc_called(this, "_ZN6S788C43v57Ev");}
void  S788C4 ::v58(){vfunc_called(this, "_ZN6S788C43v58Ev");}
void  S788C4 ::v59(){vfunc_called(this, "_ZN6S788C43v59Ev");}
void  S788C4 ::v60(){vfunc_called(this, "_ZN6S788C43v60Ev");}
void  S788C4 ::v61(){vfunc_called(this, "_ZN6S788C43v61Ev");}
void  S788C4 ::v62(){vfunc_called(this, "_ZN6S788C43v62Ev");}
void  S788C4 ::v63(){vfunc_called(this, "_ZN6S788C43v63Ev");}
void  S788C4 ::v64(){vfunc_called(this, "_ZN6S788C43v64Ev");}
void  S788C4 ::v65(){vfunc_called(this, "_ZN6S788C43v65Ev");}
void  S788C4 ::v66(){vfunc_called(this, "_ZN6S788C43v66Ev");}
void  S788C4 ::v67(){vfunc_called(this, "_ZN6S788C43v67Ev");}
void  S788C4 ::v68(){vfunc_called(this, "_ZN6S788C43v68Ev");}
void  S788C4 ::v69(){vfunc_called(this, "_ZN6S788C43v69Ev");}
void  S788C4 ::v70(){vfunc_called(this, "_ZN6S788C43v70Ev");}
void  S788C4 ::v71(){vfunc_called(this, "_ZN6S788C43v71Ev");}
void  S788C4 ::v72(){vfunc_called(this, "_ZN6S788C43v72Ev");}
void  S788C4 ::v73(){vfunc_called(this, "_ZN6S788C43v73Ev");}
void  S788C4 ::v74(){vfunc_called(this, "_ZN6S788C43v74Ev");}
void  S788C4 ::v75(){vfunc_called(this, "_ZN6S788C43v75Ev");}
void  S788C4 ::v76(){vfunc_called(this, "_ZN6S788C43v76Ev");}
void  S788C4 ::v77(){vfunc_called(this, "_ZN6S788C43v77Ev");}
void  S788C4 ::v78(){vfunc_called(this, "_ZN6S788C43v78Ev");}
void  S788C4 ::v79(){vfunc_called(this, "_ZN6S788C43v79Ev");}
void  S788C4 ::v80(){vfunc_called(this, "_ZN6S788C43v80Ev");}
void  S788C4 ::v81(){vfunc_called(this, "_ZN6S788C43v81Ev");}
void  S788C4 ::v82(){vfunc_called(this, "_ZN6S788C43v82Ev");}
void  S788C4 ::v83(){vfunc_called(this, "_ZN6S788C43v83Ev");}
void  S788C4 ::v84(){vfunc_called(this, "_ZN6S788C43v84Ev");}
void  S788C4 ::v85(){vfunc_called(this, "_ZN6S788C43v85Ev");}
void  S788C4 ::v86(){vfunc_called(this, "_ZN6S788C43v86Ev");}
void  S788C4 ::v87(){vfunc_called(this, "_ZN6S788C43v87Ev");}
void  S788C4 ::v88(){vfunc_called(this, "_ZN6S788C43v88Ev");}
void  S788C4 ::v89(){vfunc_called(this, "_ZN6S788C43v89Ev");}
void  S788C4 ::v90(){vfunc_called(this, "_ZN6S788C43v90Ev");}
void  S788C4 ::v91(){vfunc_called(this, "_ZN6S788C43v91Ev");}
void  S788C4 ::v92(){vfunc_called(this, "_ZN6S788C43v92Ev");}
void  S788C4 ::v93(){vfunc_called(this, "_ZN6S788C43v93Ev");}
void  S788C4 ::v94(){vfunc_called(this, "_ZN6S788C43v94Ev");}
void  S788C4 ::v95(){vfunc_called(this, "_ZN6S788C43v95Ev");}
void  S788C4 ::v96(){vfunc_called(this, "_ZN6S788C43v96Ev");}
void  S788C4 ::v97(){vfunc_called(this, "_ZN6S788C43v97Ev");}
void  S788C4 ::v98(){vfunc_called(this, "_ZN6S788C43v98Ev");}
void  S788C4 ::v99(){vfunc_called(this, "_ZN6S788C43v99Ev");}
void  S788C4 ::v100(){vfunc_called(this, "_ZN6S788C44v100Ev");}
void  S788C4 ::v101(){vfunc_called(this, "_ZN6S788C44v101Ev");}
void  S788C4 ::v102(){vfunc_called(this, "_ZN6S788C44v102Ev");}
void  S788C4 ::v103(){vfunc_called(this, "_ZN6S788C44v103Ev");}
void  S788C4 ::v104(){vfunc_called(this, "_ZN6S788C44v104Ev");}
void  S788C4 ::v105(){vfunc_called(this, "_ZN6S788C44v105Ev");}
void  S788C4 ::v106(){vfunc_called(this, "_ZN6S788C44v106Ev");}
void  S788C4 ::v107(){vfunc_called(this, "_ZN6S788C44v107Ev");}
void  S788C4 ::v108(){vfunc_called(this, "_ZN6S788C44v108Ev");}
void  S788C4 ::v109(){vfunc_called(this, "_ZN6S788C44v109Ev");}
void  S788C4 ::v110(){vfunc_called(this, "_ZN6S788C44v110Ev");}
void  S788C4 ::v111(){vfunc_called(this, "_ZN6S788C44v111Ev");}
void  S788C4 ::v112(){vfunc_called(this, "_ZN6S788C44v112Ev");}
void  S788C4 ::v113(){vfunc_called(this, "_ZN6S788C44v113Ev");}
void  S788C4 ::v114(){vfunc_called(this, "_ZN6S788C44v114Ev");}
void  S788C4 ::v115(){vfunc_called(this, "_ZN6S788C44v115Ev");}
void  S788C4 ::v116(){vfunc_called(this, "_ZN6S788C44v116Ev");}
void  S788C4 ::v117(){vfunc_called(this, "_ZN6S788C44v117Ev");}
void  S788C4 ::v118(){vfunc_called(this, "_ZN6S788C44v118Ev");}
void  S788C4 ::v119(){vfunc_called(this, "_ZN6S788C44v119Ev");}
void  S788C4 ::v120(){vfunc_called(this, "_ZN6S788C44v120Ev");}
void  S788C4 ::v121(){vfunc_called(this, "_ZN6S788C44v121Ev");}
void  S788C4 ::v122(){vfunc_called(this, "_ZN6S788C44v122Ev");}
void  S788C4 ::v123(){vfunc_called(this, "_ZN6S788C44v123Ev");}
void  S788C4 ::v124(){vfunc_called(this, "_ZN6S788C44v124Ev");}
void  S788C4 ::v125(){vfunc_called(this, "_ZN6S788C44v125Ev");}
void  S788C4 ::v126(){vfunc_called(this, "_ZN6S788C44v126Ev");}
void  S788C4 ::v127(){vfunc_called(this, "_ZN6S788C44v127Ev");}
void  S788C4 ::v128(){vfunc_called(this, "_ZN6S788C44v128Ev");}
void  S788C4 ::v129(){vfunc_called(this, "_ZN6S788C44v129Ev");}
void  S788C4 ::v130(){vfunc_called(this, "_ZN6S788C44v130Ev");}
S788C4 ::~S788C4(){ note_dtor("S788C4", this);} // tgen
S788C4 ::S788C4(){ note_ctor("S788C4", this);} // tgen

static void Test_S788C4()
{
  extern Class_Descriptor cd_S788C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S788C4, buf);
    S788C4 *dp, &lv = *(dp=new (buf) S788C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S788C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S788C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S788C4");
    test_class_info(&lv, &cd_S788C4);
    dp->~S788C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS788C4(Test_S788C4, "S788C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S788C4C1Ev();
extern void _ZN6S788C4D1Ev();
Name_Map name_map_S788C4[] = {
  NSPAIR(_ZN6S788C4C1Ev),
  NSPAIR(_ZN6S788C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S788C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S788C4[];
extern void _ZN6S788C4D1Ev();
extern void _ZN6S788C4D0Ev();
extern void _ZN6S788C42v9Ev();
extern void _ZN6S788C43v10Ev();
extern void _ZN6S788C43v11Ev();
extern void _ZN6S788C43v12Ev();
extern void _ZN6S788C43v13Ev();
extern void _ZN6S788C43v14Ev();
extern void _ZN6S788C43v15Ev();
extern void _ZN6S788C43v16Ev();
extern void _ZN6S788C43v17Ev();
extern void _ZN6S788C43v18Ev();
extern void _ZN6S788C43v19Ev();
extern void _ZN6S788C43v20Ev();
extern void _ZN6S788C43v21Ev();
extern void _ZN6S788C43v22Ev();
extern void _ZN6S788C43v23Ev();
extern void _ZN6S788C43v24Ev();
extern void _ZN6S788C43v25Ev();
extern void _ZN6S788C43v26Ev();
extern void _ZN6S788C43v27Ev();
extern void _ZN6S788C43v28Ev();
extern void _ZN6S788C43v29Ev();
extern void _ZN6S788C43v30Ev();
extern void _ZN6S788C43v31Ev();
extern void _ZN6S788C43v32Ev();
extern void _ZN6S788C43v33Ev();
extern void _ZN6S788C43v34Ev();
extern void _ZN6S788C43v35Ev();
extern void _ZN6S788C43v36Ev();
extern void _ZN6S788C43v37Ev();
extern void _ZN6S788C43v38Ev();
extern void _ZN6S788C43v39Ev();
extern void _ZN6S788C43v40Ev();
extern void _ZN6S788C43v41Ev();
extern void _ZN6S788C43v42Ev();
extern void _ZN6S788C43v43Ev();
extern void _ZN6S788C43v44Ev();
extern void _ZN6S788C43v45Ev();
extern void _ZN6S788C43v46Ev();
extern void _ZN6S788C43v47Ev();
extern void _ZN6S788C43v48Ev();
extern void _ZN6S788C43v49Ev();
extern void _ZN6S788C43v50Ev();
extern void _ZN6S788C43v51Ev();
extern void _ZN6S788C43v52Ev();
extern void _ZN6S788C43v53Ev();
extern void _ZN6S788C43v54Ev();
extern void _ZN6S788C43v55Ev();
extern void _ZN6S788C43v56Ev();
extern void _ZN6S788C43v57Ev();
extern void _ZN6S788C43v58Ev();
extern void _ZN6S788C43v59Ev();
extern void _ZN6S788C43v60Ev();
extern void _ZN6S788C43v61Ev();
extern void _ZN6S788C43v62Ev();
extern void _ZN6S788C43v63Ev();
extern void _ZN6S788C43v64Ev();
extern void _ZN6S788C43v65Ev();
extern void _ZN6S788C43v66Ev();
extern void _ZN6S788C43v67Ev();
extern void _ZN6S788C43v68Ev();
extern void _ZN6S788C43v69Ev();
extern void _ZN6S788C43v70Ev();
extern void _ZN6S788C43v71Ev();
extern void _ZN6S788C43v72Ev();
extern void _ZN6S788C43v73Ev();
extern void _ZN6S788C43v74Ev();
extern void _ZN6S788C43v75Ev();
extern void _ZN6S788C43v76Ev();
extern void _ZN6S788C43v77Ev();
extern void _ZN6S788C43v78Ev();
extern void _ZN6S788C43v79Ev();
extern void _ZN6S788C43v80Ev();
extern void _ZN6S788C43v81Ev();
extern void _ZN6S788C43v82Ev();
extern void _ZN6S788C43v83Ev();
extern void _ZN6S788C43v84Ev();
extern void _ZN6S788C43v85Ev();
extern void _ZN6S788C43v86Ev();
extern void _ZN6S788C43v87Ev();
extern void _ZN6S788C43v88Ev();
extern void _ZN6S788C43v89Ev();
extern void _ZN6S788C43v90Ev();
extern void _ZN6S788C43v91Ev();
extern void _ZN6S788C43v92Ev();
extern void _ZN6S788C43v93Ev();
extern void _ZN6S788C43v94Ev();
extern void _ZN6S788C43v95Ev();
extern void _ZN6S788C43v96Ev();
extern void _ZN6S788C43v97Ev();
extern void _ZN6S788C43v98Ev();
extern void _ZN6S788C43v99Ev();
extern void _ZN6S788C44v100Ev();
extern void _ZN6S788C44v101Ev();
extern void _ZN6S788C44v102Ev();
extern void _ZN6S788C44v103Ev();
extern void _ZN6S788C44v104Ev();
extern void _ZN6S788C44v105Ev();
extern void _ZN6S788C44v106Ev();
extern void _ZN6S788C44v107Ev();
extern void _ZN6S788C44v108Ev();
extern void _ZN6S788C44v109Ev();
extern void _ZN6S788C44v110Ev();
extern void _ZN6S788C44v111Ev();
extern void _ZN6S788C44v112Ev();
extern void _ZN6S788C44v113Ev();
extern void _ZN6S788C44v114Ev();
extern void _ZN6S788C44v115Ev();
extern void _ZN6S788C44v116Ev();
extern void _ZN6S788C44v117Ev();
extern void _ZN6S788C44v118Ev();
extern void _ZN6S788C44v119Ev();
extern void _ZN6S788C44v120Ev();
extern void _ZN6S788C44v121Ev();
extern void _ZN6S788C44v122Ev();
extern void _ZN6S788C44v123Ev();
extern void _ZN6S788C44v124Ev();
extern void _ZN6S788C44v125Ev();
extern void _ZN6S788C44v126Ev();
extern void _ZN6S788C44v127Ev();
extern void _ZN6S788C44v128Ev();
extern void _ZN6S788C44v129Ev();
extern void _ZN6S788C44v130Ev();
static  VTBL_ENTRY vtc_S788C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S788C4[0]),
  (VTBL_ENTRY)&_ZN6S788C4D1Ev,
  (VTBL_ENTRY)&_ZN6S788C4D0Ev,
  (VTBL_ENTRY)&_ZN6S788C42v9Ev,
  (VTBL_ENTRY)&_ZN6S788C43v10Ev,
  (VTBL_ENTRY)&_ZN6S788C43v11Ev,
  (VTBL_ENTRY)&_ZN6S788C43v12Ev,
  (VTBL_ENTRY)&_ZN6S788C43v13Ev,
  (VTBL_ENTRY)&_ZN6S788C43v14Ev,
  (VTBL_ENTRY)&_ZN6S788C43v15Ev,
  (VTBL_ENTRY)&_ZN6S788C43v16Ev,
  (VTBL_ENTRY)&_ZN6S788C43v17Ev,
  (VTBL_ENTRY)&_ZN6S788C43v18Ev,
  (VTBL_ENTRY)&_ZN6S788C43v19Ev,
  (VTBL_ENTRY)&_ZN6S788C43v20Ev,
  (VTBL_ENTRY)&_ZN6S788C43v21Ev,
  (VTBL_ENTRY)&_ZN6S788C43v22Ev,
  (VTBL_ENTRY)&_ZN6S788C43v23Ev,
  (VTBL_ENTRY)&_ZN6S788C43v24Ev,
  (VTBL_ENTRY)&_ZN6S788C43v25Ev,
  (VTBL_ENTRY)&_ZN6S788C43v26Ev,
  (VTBL_ENTRY)&_ZN6S788C43v27Ev,
  (VTBL_ENTRY)&_ZN6S788C43v28Ev,
  (VTBL_ENTRY)&_ZN6S788C43v29Ev,
  (VTBL_ENTRY)&_ZN6S788C43v30Ev,
  (VTBL_ENTRY)&_ZN6S788C43v31Ev,
  (VTBL_ENTRY)&_ZN6S788C43v32Ev,
  (VTBL_ENTRY)&_ZN6S788C43v33Ev,
  (VTBL_ENTRY)&_ZN6S788C43v34Ev,
  (VTBL_ENTRY)&_ZN6S788C43v35Ev,
  (VTBL_ENTRY)&_ZN6S788C43v36Ev,
  (VTBL_ENTRY)&_ZN6S788C43v37Ev,
  (VTBL_ENTRY)&_ZN6S788C43v38Ev,
  (VTBL_ENTRY)&_ZN6S788C43v39Ev,
  (VTBL_ENTRY)&_ZN6S788C43v40Ev,
  (VTBL_ENTRY)&_ZN6S788C43v41Ev,
  (VTBL_ENTRY)&_ZN6S788C43v42Ev,
  (VTBL_ENTRY)&_ZN6S788C43v43Ev,
  (VTBL_ENTRY)&_ZN6S788C43v44Ev,
  (VTBL_ENTRY)&_ZN6S788C43v45Ev,
  (VTBL_ENTRY)&_ZN6S788C43v46Ev,
  (VTBL_ENTRY)&_ZN6S788C43v47Ev,
  (VTBL_ENTRY)&_ZN6S788C43v48Ev,
  (VTBL_ENTRY)&_ZN6S788C43v49Ev,
  (VTBL_ENTRY)&_ZN6S788C43v50Ev,
  (VTBL_ENTRY)&_ZN6S788C43v51Ev,
  (VTBL_ENTRY)&_ZN6S788C43v52Ev,
  (VTBL_ENTRY)&_ZN6S788C43v53Ev,
  (VTBL_ENTRY)&_ZN6S788C43v54Ev,
  (VTBL_ENTRY)&_ZN6S788C43v55Ev,
  (VTBL_ENTRY)&_ZN6S788C43v56Ev,
  (VTBL_ENTRY)&_ZN6S788C43v57Ev,
  (VTBL_ENTRY)&_ZN6S788C43v58Ev,
  (VTBL_ENTRY)&_ZN6S788C43v59Ev,
  (VTBL_ENTRY)&_ZN6S788C43v60Ev,
  (VTBL_ENTRY)&_ZN6S788C43v61Ev,
  (VTBL_ENTRY)&_ZN6S788C43v62Ev,
  (VTBL_ENTRY)&_ZN6S788C43v63Ev,
  (VTBL_ENTRY)&_ZN6S788C43v64Ev,
  (VTBL_ENTRY)&_ZN6S788C43v65Ev,
  (VTBL_ENTRY)&_ZN6S788C43v66Ev,
  (VTBL_ENTRY)&_ZN6S788C43v67Ev,
  (VTBL_ENTRY)&_ZN6S788C43v68Ev,
  (VTBL_ENTRY)&_ZN6S788C43v69Ev,
  (VTBL_ENTRY)&_ZN6S788C43v70Ev,
  (VTBL_ENTRY)&_ZN6S788C43v71Ev,
  (VTBL_ENTRY)&_ZN6S788C43v72Ev,
  (VTBL_ENTRY)&_ZN6S788C43v73Ev,
  (VTBL_ENTRY)&_ZN6S788C43v74Ev,
  (VTBL_ENTRY)&_ZN6S788C43v75Ev,
  (VTBL_ENTRY)&_ZN6S788C43v76Ev,
  (VTBL_ENTRY)&_ZN6S788C43v77Ev,
  (VTBL_ENTRY)&_ZN6S788C43v78Ev,
  (VTBL_ENTRY)&_ZN6S788C43v79Ev,
  (VTBL_ENTRY)&_ZN6S788C43v80Ev,
  (VTBL_ENTRY)&_ZN6S788C43v81Ev,
  (VTBL_ENTRY)&_ZN6S788C43v82Ev,
  (VTBL_ENTRY)&_ZN6S788C43v83Ev,
  (VTBL_ENTRY)&_ZN6S788C43v84Ev,
  (VTBL_ENTRY)&_ZN6S788C43v85Ev,
  (VTBL_ENTRY)&_ZN6S788C43v86Ev,
  (VTBL_ENTRY)&_ZN6S788C43v87Ev,
  (VTBL_ENTRY)&_ZN6S788C43v88Ev,
  (VTBL_ENTRY)&_ZN6S788C43v89Ev,
  (VTBL_ENTRY)&_ZN6S788C43v90Ev,
  (VTBL_ENTRY)&_ZN6S788C43v91Ev,
  (VTBL_ENTRY)&_ZN6S788C43v92Ev,
  (VTBL_ENTRY)&_ZN6S788C43v93Ev,
  (VTBL_ENTRY)&_ZN6S788C43v94Ev,
  (VTBL_ENTRY)&_ZN6S788C43v95Ev,
  (VTBL_ENTRY)&_ZN6S788C43v96Ev,
  (VTBL_ENTRY)&_ZN6S788C43v97Ev,
  (VTBL_ENTRY)&_ZN6S788C43v98Ev,
  (VTBL_ENTRY)&_ZN6S788C43v99Ev,
  (VTBL_ENTRY)&_ZN6S788C44v100Ev,
  (VTBL_ENTRY)&_ZN6S788C44v101Ev,
  (VTBL_ENTRY)&_ZN6S788C44v102Ev,
  (VTBL_ENTRY)&_ZN6S788C44v103Ev,
  (VTBL_ENTRY)&_ZN6S788C44v104Ev,
  (VTBL_ENTRY)&_ZN6S788C44v105Ev,
  (VTBL_ENTRY)&_ZN6S788C44v106Ev,
  (VTBL_ENTRY)&_ZN6S788C44v107Ev,
  (VTBL_ENTRY)&_ZN6S788C44v108Ev,
  (VTBL_ENTRY)&_ZN6S788C44v109Ev,
  (VTBL_ENTRY)&_ZN6S788C44v110Ev,
  (VTBL_ENTRY)&_ZN6S788C44v111Ev,
  (VTBL_ENTRY)&_ZN6S788C44v112Ev,
  (VTBL_ENTRY)&_ZN6S788C44v113Ev,
  (VTBL_ENTRY)&_ZN6S788C44v114Ev,
  (VTBL_ENTRY)&_ZN6S788C44v115Ev,
  (VTBL_ENTRY)&_ZN6S788C44v116Ev,
  (VTBL_ENTRY)&_ZN6S788C44v117Ev,
  (VTBL_ENTRY)&_ZN6S788C44v118Ev,
  (VTBL_ENTRY)&_ZN6S788C44v119Ev,
  (VTBL_ENTRY)&_ZN6S788C44v120Ev,
  (VTBL_ENTRY)&_ZN6S788C44v121Ev,
  (VTBL_ENTRY)&_ZN6S788C44v122Ev,
  (VTBL_ENTRY)&_ZN6S788C44v123Ev,
  (VTBL_ENTRY)&_ZN6S788C44v124Ev,
  (VTBL_ENTRY)&_ZN6S788C44v125Ev,
  (VTBL_ENTRY)&_ZN6S788C44v126Ev,
  (VTBL_ENTRY)&_ZN6S788C44v127Ev,
  (VTBL_ENTRY)&_ZN6S788C44v128Ev,
  (VTBL_ENTRY)&_ZN6S788C44v129Ev,
  (VTBL_ENTRY)&_ZN6S788C44v130Ev,
};
extern VTBL_ENTRY _ZTI6S788C4[];
extern  VTBL_ENTRY _ZTV6S788C4[];
Class_Descriptor cd_S788C4 = {  "S788C4", // class name
  bases_S788C4, 1,
  &(vtc_S788C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S788C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S788C4),126, //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  S788C3  : S788C4 {
  virtual void  v131(); // _ZN6S788C34v131Ev
  virtual void  v132(); // _ZN6S788C34v132Ev
  virtual void  v133(); // _ZN6S788C34v133Ev
  virtual void  v134(); // _ZN6S788C34v134Ev
  virtual void  v135(); // _ZN6S788C34v135Ev
  virtual void  v136(); // _ZN6S788C34v136Ev
  virtual void  v137(); // _ZN6S788C34v137Ev
  virtual void  v138(); // _ZN6S788C34v138Ev
  virtual void  v139(); // _ZN6S788C34v139Ev
  virtual void  v140(); // _ZN6S788C34v140Ev
  virtual void  v141(); // _ZN6S788C34v141Ev
  virtual void  v142(); // _ZN6S788C34v142Ev
  virtual void  v143(); // _ZN6S788C34v143Ev
  virtual void  v144(); // _ZN6S788C34v144Ev
  virtual void  v145(); // _ZN6S788C34v145Ev
  virtual void  v146(); // _ZN6S788C34v146Ev
  virtual void  v147(); // _ZN6S788C34v147Ev
  virtual void  v148(); // _ZN6S788C34v148Ev
  ~S788C3(); // tgen
  S788C3(); // tgen
};
//SIG(-1 S788C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S788C3 ::v131(){vfunc_called(this, "_ZN6S788C34v131Ev");}
void  S788C3 ::v132(){vfunc_called(this, "_ZN6S788C34v132Ev");}
void  S788C3 ::v133(){vfunc_called(this, "_ZN6S788C34v133Ev");}
void  S788C3 ::v134(){vfunc_called(this, "_ZN6S788C34v134Ev");}
void  S788C3 ::v135(){vfunc_called(this, "_ZN6S788C34v135Ev");}
void  S788C3 ::v136(){vfunc_called(this, "_ZN6S788C34v136Ev");}
void  S788C3 ::v137(){vfunc_called(this, "_ZN6S788C34v137Ev");}
void  S788C3 ::v138(){vfunc_called(this, "_ZN6S788C34v138Ev");}
void  S788C3 ::v139(){vfunc_called(this, "_ZN6S788C34v139Ev");}
void  S788C3 ::v140(){vfunc_called(this, "_ZN6S788C34v140Ev");}
void  S788C3 ::v141(){vfunc_called(this, "_ZN6S788C34v141Ev");}
void  S788C3 ::v142(){vfunc_called(this, "_ZN6S788C34v142Ev");}
void  S788C3 ::v143(){vfunc_called(this, "_ZN6S788C34v143Ev");}
void  S788C3 ::v144(){vfunc_called(this, "_ZN6S788C34v144Ev");}
void  S788C3 ::v145(){vfunc_called(this, "_ZN6S788C34v145Ev");}
void  S788C3 ::v146(){vfunc_called(this, "_ZN6S788C34v146Ev");}
void  S788C3 ::v147(){vfunc_called(this, "_ZN6S788C34v147Ev");}
void  S788C3 ::v148(){vfunc_called(this, "_ZN6S788C34v148Ev");}
S788C3 ::~S788C3(){ note_dtor("S788C3", this);} // tgen
S788C3 ::S788C3(){ note_ctor("S788C3", this);} // tgen

static void Test_S788C3()
{
  extern Class_Descriptor cd_S788C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S788C3, buf);
    S788C3 *dp, &lv = *(dp=new (buf) S788C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S788C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S788C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S788C4*), 0, "S788C3");
    check_base_class_offset(lv, (S788C4*), 0, "S788C3");
    test_class_info(&lv, &cd_S788C3);
    dp->~S788C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS788C3(Test_S788C3, "S788C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S788C3C1Ev();
extern void _ZN6S788C3D1Ev();
Name_Map name_map_S788C3[] = {
  NSPAIR(_ZN6S788C3C1Ev),
  NSPAIR(_ZN6S788C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S788C4;
extern VTBL_ENTRY _ZTI6S788C4[];
extern  VTBL_ENTRY _ZTV6S788C4[];
static Base_Class bases_S788C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S788C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S788C3[];
extern void _ZN6S788C3D1Ev();
extern void _ZN6S788C3D0Ev();
extern void _ZN6S788C42v9Ev();
extern void _ZN6S788C43v10Ev();
extern void _ZN6S788C43v11Ev();
extern void _ZN6S788C43v12Ev();
extern void _ZN6S788C43v13Ev();
extern void _ZN6S788C43v14Ev();
extern void _ZN6S788C43v15Ev();
extern void _ZN6S788C43v16Ev();
extern void _ZN6S788C43v17Ev();
extern void _ZN6S788C43v18Ev();
extern void _ZN6S788C43v19Ev();
extern void _ZN6S788C43v20Ev();
extern void _ZN6S788C43v21Ev();
extern void _ZN6S788C43v22Ev();
extern void _ZN6S788C43v23Ev();
extern void _ZN6S788C43v24Ev();
extern void _ZN6S788C43v25Ev();
extern void _ZN6S788C43v26Ev();
extern void _ZN6S788C43v27Ev();
extern void _ZN6S788C43v28Ev();
extern void _ZN6S788C43v29Ev();
extern void _ZN6S788C43v30Ev();
extern void _ZN6S788C43v31Ev();
extern void _ZN6S788C43v32Ev();
extern void _ZN6S788C43v33Ev();
extern void _ZN6S788C43v34Ev();
extern void _ZN6S788C43v35Ev();
extern void _ZN6S788C43v36Ev();
extern void _ZN6S788C43v37Ev();
extern void _ZN6S788C43v38Ev();
extern void _ZN6S788C43v39Ev();
extern void _ZN6S788C43v40Ev();
extern void _ZN6S788C43v41Ev();
extern void _ZN6S788C43v42Ev();
extern void _ZN6S788C43v43Ev();
extern void _ZN6S788C43v44Ev();
extern void _ZN6S788C43v45Ev();
extern void _ZN6S788C43v46Ev();
extern void _ZN6S788C43v47Ev();
extern void _ZN6S788C43v48Ev();
extern void _ZN6S788C43v49Ev();
extern void _ZN6S788C43v50Ev();
extern void _ZN6S788C43v51Ev();
extern void _ZN6S788C43v52Ev();
extern void _ZN6S788C43v53Ev();
extern void _ZN6S788C43v54Ev();
extern void _ZN6S788C43v55Ev();
extern void _ZN6S788C43v56Ev();
extern void _ZN6S788C43v57Ev();
extern void _ZN6S788C43v58Ev();
extern void _ZN6S788C43v59Ev();
extern void _ZN6S788C43v60Ev();
extern void _ZN6S788C43v61Ev();
extern void _ZN6S788C43v62Ev();
extern void _ZN6S788C43v63Ev();
extern void _ZN6S788C43v64Ev();
extern void _ZN6S788C43v65Ev();
extern void _ZN6S788C43v66Ev();
extern void _ZN6S788C43v67Ev();
extern void _ZN6S788C43v68Ev();
extern void _ZN6S788C43v69Ev();
extern void _ZN6S788C43v70Ev();
extern void _ZN6S788C43v71Ev();
extern void _ZN6S788C43v72Ev();
extern void _ZN6S788C43v73Ev();
extern void _ZN6S788C43v74Ev();
extern void _ZN6S788C43v75Ev();
extern void _ZN6S788C43v76Ev();
extern void _ZN6S788C43v77Ev();
extern void _ZN6S788C43v78Ev();
extern void _ZN6S788C43v79Ev();
extern void _ZN6S788C43v80Ev();
extern void _ZN6S788C43v81Ev();
extern void _ZN6S788C43v82Ev();
extern void _ZN6S788C43v83Ev();
extern void _ZN6S788C43v84Ev();
extern void _ZN6S788C43v85Ev();
extern void _ZN6S788C43v86Ev();
extern void _ZN6S788C43v87Ev();
extern void _ZN6S788C43v88Ev();
extern void _ZN6S788C43v89Ev();
extern void _ZN6S788C43v90Ev();
extern void _ZN6S788C43v91Ev();
extern void _ZN6S788C43v92Ev();
extern void _ZN6S788C43v93Ev();
extern void _ZN6S788C43v94Ev();
extern void _ZN6S788C43v95Ev();
extern void _ZN6S788C43v96Ev();
extern void _ZN6S788C43v97Ev();
extern void _ZN6S788C43v98Ev();
extern void _ZN6S788C43v99Ev();
extern void _ZN6S788C44v100Ev();
extern void _ZN6S788C44v101Ev();
extern void _ZN6S788C44v102Ev();
extern void _ZN6S788C44v103Ev();
extern void _ZN6S788C44v104Ev();
extern void _ZN6S788C44v105Ev();
extern void _ZN6S788C44v106Ev();
extern void _ZN6S788C44v107Ev();
extern void _ZN6S788C44v108Ev();
extern void _ZN6S788C44v109Ev();
extern void _ZN6S788C44v110Ev();
extern void _ZN6S788C44v111Ev();
extern void _ZN6S788C44v112Ev();
extern void _ZN6S788C44v113Ev();
extern void _ZN6S788C44v114Ev();
extern void _ZN6S788C44v115Ev();
extern void _ZN6S788C44v116Ev();
extern void _ZN6S788C44v117Ev();
extern void _ZN6S788C44v118Ev();
extern void _ZN6S788C44v119Ev();
extern void _ZN6S788C44v120Ev();
extern void _ZN6S788C44v121Ev();
extern void _ZN6S788C44v122Ev();
extern void _ZN6S788C44v123Ev();
extern void _ZN6S788C44v124Ev();
extern void _ZN6S788C44v125Ev();
extern void _ZN6S788C44v126Ev();
extern void _ZN6S788C44v127Ev();
extern void _ZN6S788C44v128Ev();
extern void _ZN6S788C44v129Ev();
extern void _ZN6S788C44v130Ev();
extern void _ZN6S788C34v131Ev();
extern void _ZN6S788C34v132Ev();
extern void _ZN6S788C34v133Ev();
extern void _ZN6S788C34v134Ev();
extern void _ZN6S788C34v135Ev();
extern void _ZN6S788C34v136Ev();
extern void _ZN6S788C34v137Ev();
extern void _ZN6S788C34v138Ev();
extern void _ZN6S788C34v139Ev();
extern void _ZN6S788C34v140Ev();
extern void _ZN6S788C34v141Ev();
extern void _ZN6S788C34v142Ev();
extern void _ZN6S788C34v143Ev();
extern void _ZN6S788C34v144Ev();
extern void _ZN6S788C34v145Ev();
extern void _ZN6S788C34v146Ev();
extern void _ZN6S788C34v147Ev();
extern void _ZN6S788C34v148Ev();
static  VTBL_ENTRY vtc_S788C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S788C3[0]),
  (VTBL_ENTRY)&_ZN6S788C3D1Ev,
  (VTBL_ENTRY)&_ZN6S788C3D0Ev,
  (VTBL_ENTRY)&_ZN6S788C42v9Ev,
  (VTBL_ENTRY)&_ZN6S788C43v10Ev,
  (VTBL_ENTRY)&_ZN6S788C43v11Ev,
  (VTBL_ENTRY)&_ZN6S788C43v12Ev,
  (VTBL_ENTRY)&_ZN6S788C43v13Ev,
  (VTBL_ENTRY)&_ZN6S788C43v14Ev,
  (VTBL_ENTRY)&_ZN6S788C43v15Ev,
  (VTBL_ENTRY)&_ZN6S788C43v16Ev,
  (VTBL_ENTRY)&_ZN6S788C43v17Ev,
  (VTBL_ENTRY)&_ZN6S788C43v18Ev,
  (VTBL_ENTRY)&_ZN6S788C43v19Ev,
  (VTBL_ENTRY)&_ZN6S788C43v20Ev,
  (VTBL_ENTRY)&_ZN6S788C43v21Ev,
  (VTBL_ENTRY)&_ZN6S788C43v22Ev,
  (VTBL_ENTRY)&_ZN6S788C43v23Ev,
  (VTBL_ENTRY)&_ZN6S788C43v24Ev,
  (VTBL_ENTRY)&_ZN6S788C43v25Ev,
  (VTBL_ENTRY)&_ZN6S788C43v26Ev,
  (VTBL_ENTRY)&_ZN6S788C43v27Ev,
  (VTBL_ENTRY)&_ZN6S788C43v28Ev,
  (VTBL_ENTRY)&_ZN6S788C43v29Ev,
  (VTBL_ENTRY)&_ZN6S788C43v30Ev,
  (VTBL_ENTRY)&_ZN6S788C43v31Ev,
  (VTBL_ENTRY)&_ZN6S788C43v32Ev,
  (VTBL_ENTRY)&_ZN6S788C43v33Ev,
  (VTBL_ENTRY)&_ZN6S788C43v34Ev,
  (VTBL_ENTRY)&_ZN6S788C43v35Ev,
  (VTBL_ENTRY)&_ZN6S788C43v36Ev,
  (VTBL_ENTRY)&_ZN6S788C43v37Ev,
  (VTBL_ENTRY)&_ZN6S788C43v38Ev,
  (VTBL_ENTRY)&_ZN6S788C43v39Ev,
  (VTBL_ENTRY)&_ZN6S788C43v40Ev,
  (VTBL_ENTRY)&_ZN6S788C43v41Ev,
  (VTBL_ENTRY)&_ZN6S788C43v42Ev,
  (VTBL_ENTRY)&_ZN6S788C43v43Ev,
  (VTBL_ENTRY)&_ZN6S788C43v44Ev,
  (VTBL_ENTRY)&_ZN6S788C43v45Ev,
  (VTBL_ENTRY)&_ZN6S788C43v46Ev,
  (VTBL_ENTRY)&_ZN6S788C43v47Ev,
  (VTBL_ENTRY)&_ZN6S788C43v48Ev,
  (VTBL_ENTRY)&_ZN6S788C43v49Ev,
  (VTBL_ENTRY)&_ZN6S788C43v50Ev,
  (VTBL_ENTRY)&_ZN6S788C43v51Ev,
  (VTBL_ENTRY)&_ZN6S788C43v52Ev,
  (VTBL_ENTRY)&_ZN6S788C43v53Ev,
  (VTBL_ENTRY)&_ZN6S788C43v54Ev,
  (VTBL_ENTRY)&_ZN6S788C43v55Ev,
  (VTBL_ENTRY)&_ZN6S788C43v56Ev,
  (VTBL_ENTRY)&_ZN6S788C43v57Ev,
  (VTBL_ENTRY)&_ZN6S788C43v58Ev,
  (VTBL_ENTRY)&_ZN6S788C43v59Ev,
  (VTBL_ENTRY)&_ZN6S788C43v60Ev,
  (VTBL_ENTRY)&_ZN6S788C43v61Ev,
  (VTBL_ENTRY)&_ZN6S788C43v62Ev,
  (VTBL_ENTRY)&_ZN6S788C43v63Ev,
  (VTBL_ENTRY)&_ZN6S788C43v64Ev,
  (VTBL_ENTRY)&_ZN6S788C43v65Ev,
  (VTBL_ENTRY)&_ZN6S788C43v66Ev,
  (VTBL_ENTRY)&_ZN6S788C43v67Ev,
  (VTBL_ENTRY)&_ZN6S788C43v68Ev,
  (VTBL_ENTRY)&_ZN6S788C43v69Ev,
  (VTBL_ENTRY)&_ZN6S788C43v70Ev,
  (VTBL_ENTRY)&_ZN6S788C43v71Ev,
  (VTBL_ENTRY)&_ZN6S788C43v72Ev,
  (VTBL_ENTRY)&_ZN6S788C43v73Ev,
  (VTBL_ENTRY)&_ZN6S788C43v74Ev,
  (VTBL_ENTRY)&_ZN6S788C43v75Ev,
  (VTBL_ENTRY)&_ZN6S788C43v76Ev,
  (VTBL_ENTRY)&_ZN6S788C43v77Ev,
  (VTBL_ENTRY)&_ZN6S788C43v78Ev,
  (VTBL_ENTRY)&_ZN6S788C43v79Ev,
  (VTBL_ENTRY)&_ZN6S788C43v80Ev,
  (VTBL_ENTRY)&_ZN6S788C43v81Ev,
  (VTBL_ENTRY)&_ZN6S788C43v82Ev,
  (VTBL_ENTRY)&_ZN6S788C43v83Ev,
  (VTBL_ENTRY)&_ZN6S788C43v84Ev,
  (VTBL_ENTRY)&_ZN6S788C43v85Ev,
  (VTBL_ENTRY)&_ZN6S788C43v86Ev,
  (VTBL_ENTRY)&_ZN6S788C43v87Ev,
  (VTBL_ENTRY)&_ZN6S788C43v88Ev,
  (VTBL_ENTRY)&_ZN6S788C43v89Ev,
  (VTBL_ENTRY)&_ZN6S788C43v90Ev,
  (VTBL_ENTRY)&_ZN6S788C43v91Ev,
  (VTBL_ENTRY)&_ZN6S788C43v92Ev,
  (VTBL_ENTRY)&_ZN6S788C43v93Ev,
  (VTBL_ENTRY)&_ZN6S788C43v94Ev,
  (VTBL_ENTRY)&_ZN6S788C43v95Ev,
  (VTBL_ENTRY)&_ZN6S788C43v96Ev,
  (VTBL_ENTRY)&_ZN6S788C43v97Ev,
  (VTBL_ENTRY)&_ZN6S788C43v98Ev,
  (VTBL_ENTRY)&_ZN6S788C43v99Ev,
  (VTBL_ENTRY)&_ZN6S788C44v100Ev,
  (VTBL_ENTRY)&_ZN6S788C44v101Ev,
  (VTBL_ENTRY)&_ZN6S788C44v102Ev,
  (VTBL_ENTRY)&_ZN6S788C44v103Ev,
  (VTBL_ENTRY)&_ZN6S788C44v104Ev,
  (VTBL_ENTRY)&_ZN6S788C44v105Ev,
  (VTBL_ENTRY)&_ZN6S788C44v106Ev,
  (VTBL_ENTRY)&_ZN6S788C44v107Ev,
  (VTBL_ENTRY)&_ZN6S788C44v108Ev,
  (VTBL_ENTRY)&_ZN6S788C44v109Ev,
  (VTBL_ENTRY)&_ZN6S788C44v110Ev,
  (VTBL_ENTRY)&_ZN6S788C44v111Ev,
  (VTBL_ENTRY)&_ZN6S788C44v112Ev,
  (VTBL_ENTRY)&_ZN6S788C44v113Ev,
  (VTBL_ENTRY)&_ZN6S788C44v114Ev,
  (VTBL_ENTRY)&_ZN6S788C44v115Ev,
  (VTBL_ENTRY)&_ZN6S788C44v116Ev,
  (VTBL_ENTRY)&_ZN6S788C44v117Ev,
  (VTBL_ENTRY)&_ZN6S788C44v118Ev,
  (VTBL_ENTRY)&_ZN6S788C44v119Ev,
  (VTBL_ENTRY)&_ZN6S788C44v120Ev,
  (VTBL_ENTRY)&_ZN6S788C44v121Ev,
  (VTBL_ENTRY)&_ZN6S788C44v122Ev,
  (VTBL_ENTRY)&_ZN6S788C44v123Ev,
  (VTBL_ENTRY)&_ZN6S788C44v124Ev,
  (VTBL_ENTRY)&_ZN6S788C44v125Ev,
  (VTBL_ENTRY)&_ZN6S788C44v126Ev,
  (VTBL_ENTRY)&_ZN6S788C44v127Ev,
  (VTBL_ENTRY)&_ZN6S788C44v128Ev,
  (VTBL_ENTRY)&_ZN6S788C44v129Ev,
  (VTBL_ENTRY)&_ZN6S788C44v130Ev,
  (VTBL_ENTRY)&_ZN6S788C34v131Ev,
  (VTBL_ENTRY)&_ZN6S788C34v132Ev,
  (VTBL_ENTRY)&_ZN6S788C34v133Ev,
  (VTBL_ENTRY)&_ZN6S788C34v134Ev,
  (VTBL_ENTRY)&_ZN6S788C34v135Ev,
  (VTBL_ENTRY)&_ZN6S788C34v136Ev,
  (VTBL_ENTRY)&_ZN6S788C34v137Ev,
  (VTBL_ENTRY)&_ZN6S788C34v138Ev,
  (VTBL_ENTRY)&_ZN6S788C34v139Ev,
  (VTBL_ENTRY)&_ZN6S788C34v140Ev,
  (VTBL_ENTRY)&_ZN6S788C34v141Ev,
  (VTBL_ENTRY)&_ZN6S788C34v142Ev,
  (VTBL_ENTRY)&_ZN6S788C34v143Ev,
  (VTBL_ENTRY)&_ZN6S788C34v144Ev,
  (VTBL_ENTRY)&_ZN6S788C34v145Ev,
  (VTBL_ENTRY)&_ZN6S788C34v146Ev,
  (VTBL_ENTRY)&_ZN6S788C34v147Ev,
  (VTBL_ENTRY)&_ZN6S788C34v148Ev,
};
extern VTBL_ENTRY _ZTI6S788C3[];
extern  VTBL_ENTRY _ZTV6S788C3[];
Class_Descriptor cd_S788C3 = {  "S788C3", // class name
  bases_S788C3, 2,
  &(vtc_S788C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S788C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S788C3),144, //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  S788C2  : S788C3 {
  virtual void  v149(); // _ZN6S788C24v149Ev
  ~S788C2(); // tgen
  S788C2(); // tgen
};
//SIG(-1 S788C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S788C2 ::v149(){vfunc_called(this, "_ZN6S788C24v149Ev");}
S788C2 ::~S788C2(){ note_dtor("S788C2", this);} // tgen
S788C2 ::S788C2(){ note_ctor("S788C2", this);} // tgen

static void Test_S788C2()
{
  extern Class_Descriptor cd_S788C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S788C2, buf);
    S788C2 *dp, &lv = *(dp=new (buf) S788C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S788C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S788C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S788C4*)(S788C3*), 0, "S788C2");
    check_base_class_offset(lv, (S788C4*)(S788C3*), 0, "S788C2");
    check_base_class_offset(lv, (S788C3*), 0, "S788C2");
    test_class_info(&lv, &cd_S788C2);
    dp->~S788C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS788C2(Test_S788C2, "S788C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S788C2C1Ev();
extern void _ZN6S788C2D1Ev();
Name_Map name_map_S788C2[] = {
  NSPAIR(_ZN6S788C2C1Ev),
  NSPAIR(_ZN6S788C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S788C4;
extern VTBL_ENTRY _ZTI6S788C4[];
extern  VTBL_ENTRY _ZTV6S788C4[];
extern Class_Descriptor cd_S788C3;
extern VTBL_ENTRY _ZTI6S788C3[];
extern  VTBL_ENTRY _ZTV6S788C3[];
static Base_Class bases_S788C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S788C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S788C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S788C2[];
extern void _ZN6S788C2D1Ev();
extern void _ZN6S788C2D0Ev();
extern void _ZN6S788C42v9Ev();
extern void _ZN6S788C43v10Ev();
extern void _ZN6S788C43v11Ev();
extern void _ZN6S788C43v12Ev();
extern void _ZN6S788C43v13Ev();
extern void _ZN6S788C43v14Ev();
extern void _ZN6S788C43v15Ev();
extern void _ZN6S788C43v16Ev();
extern void _ZN6S788C43v17Ev();
extern void _ZN6S788C43v18Ev();
extern void _ZN6S788C43v19Ev();
extern void _ZN6S788C43v20Ev();
extern void _ZN6S788C43v21Ev();
extern void _ZN6S788C43v22Ev();
extern void _ZN6S788C43v23Ev();
extern void _ZN6S788C43v24Ev();
extern void _ZN6S788C43v25Ev();
extern void _ZN6S788C43v26Ev();
extern void _ZN6S788C43v27Ev();
extern void _ZN6S788C43v28Ev();
extern void _ZN6S788C43v29Ev();
extern void _ZN6S788C43v30Ev();
extern void _ZN6S788C43v31Ev();
extern void _ZN6S788C43v32Ev();
extern void _ZN6S788C43v33Ev();
extern void _ZN6S788C43v34Ev();
extern void _ZN6S788C43v35Ev();
extern void _ZN6S788C43v36Ev();
extern void _ZN6S788C43v37Ev();
extern void _ZN6S788C43v38Ev();
extern void _ZN6S788C43v39Ev();
extern void _ZN6S788C43v40Ev();
extern void _ZN6S788C43v41Ev();
extern void _ZN6S788C43v42Ev();
extern void _ZN6S788C43v43Ev();
extern void _ZN6S788C43v44Ev();
extern void _ZN6S788C43v45Ev();
extern void _ZN6S788C43v46Ev();
extern void _ZN6S788C43v47Ev();
extern void _ZN6S788C43v48Ev();
extern void _ZN6S788C43v49Ev();
extern void _ZN6S788C43v50Ev();
extern void _ZN6S788C43v51Ev();
extern void _ZN6S788C43v52Ev();
extern void _ZN6S788C43v53Ev();
extern void _ZN6S788C43v54Ev();
extern void _ZN6S788C43v55Ev();
extern void _ZN6S788C43v56Ev();
extern void _ZN6S788C43v57Ev();
extern void _ZN6S788C43v58Ev();
extern void _ZN6S788C43v59Ev();
extern void _ZN6S788C43v60Ev();
extern void _ZN6S788C43v61Ev();
extern void _ZN6S788C43v62Ev();
extern void _ZN6S788C43v63Ev();
extern void _ZN6S788C43v64Ev();
extern void _ZN6S788C43v65Ev();
extern void _ZN6S788C43v66Ev();
extern void _ZN6S788C43v67Ev();
extern void _ZN6S788C43v68Ev();
extern void _ZN6S788C43v69Ev();
extern void _ZN6S788C43v70Ev();
extern void _ZN6S788C43v71Ev();
extern void _ZN6S788C43v72Ev();
extern void _ZN6S788C43v73Ev();
extern void _ZN6S788C43v74Ev();
extern void _ZN6S788C43v75Ev();
extern void _ZN6S788C43v76Ev();
extern void _ZN6S788C43v77Ev();
extern void _ZN6S788C43v78Ev();
extern void _ZN6S788C43v79Ev();
extern void _ZN6S788C43v80Ev();
extern void _ZN6S788C43v81Ev();
extern void _ZN6S788C43v82Ev();
extern void _ZN6S788C43v83Ev();
extern void _ZN6S788C43v84Ev();
extern void _ZN6S788C43v85Ev();
extern void _ZN6S788C43v86Ev();
extern void _ZN6S788C43v87Ev();
extern void _ZN6S788C43v88Ev();
extern void _ZN6S788C43v89Ev();
extern void _ZN6S788C43v90Ev();
extern void _ZN6S788C43v91Ev();
extern void _ZN6S788C43v92Ev();
extern void _ZN6S788C43v93Ev();
extern void _ZN6S788C43v94Ev();
extern void _ZN6S788C43v95Ev();
extern void _ZN6S788C43v96Ev();
extern void _ZN6S788C43v97Ev();
extern void _ZN6S788C43v98Ev();
extern void _ZN6S788C43v99Ev();
extern void _ZN6S788C44v100Ev();
extern void _ZN6S788C44v101Ev();
extern void _ZN6S788C44v102Ev();
extern void _ZN6S788C44v103Ev();
extern void _ZN6S788C44v104Ev();
extern void _ZN6S788C44v105Ev();
extern void _ZN6S788C44v106Ev();
extern void _ZN6S788C44v107Ev();
extern void _ZN6S788C44v108Ev();
extern void _ZN6S788C44v109Ev();
extern void _ZN6S788C44v110Ev();
extern void _ZN6S788C44v111Ev();
extern void _ZN6S788C44v112Ev();
extern void _ZN6S788C44v113Ev();
extern void _ZN6S788C44v114Ev();
extern void _ZN6S788C44v115Ev();
extern void _ZN6S788C44v116Ev();
extern void _ZN6S788C44v117Ev();
extern void _ZN6S788C44v118Ev();
extern void _ZN6S788C44v119Ev();
extern void _ZN6S788C44v120Ev();
extern void _ZN6S788C44v121Ev();
extern void _ZN6S788C44v122Ev();
extern void _ZN6S788C44v123Ev();
extern void _ZN6S788C44v124Ev();
extern void _ZN6S788C44v125Ev();
extern void _ZN6S788C44v126Ev();
extern void _ZN6S788C44v127Ev();
extern void _ZN6S788C44v128Ev();
extern void _ZN6S788C44v129Ev();
extern void _ZN6S788C44v130Ev();
extern void _ZN6S788C34v131Ev();
extern void _ZN6S788C34v132Ev();
extern void _ZN6S788C34v133Ev();
extern void _ZN6S788C34v134Ev();
extern void _ZN6S788C34v135Ev();
extern void _ZN6S788C34v136Ev();
extern void _ZN6S788C34v137Ev();
extern void _ZN6S788C34v138Ev();
extern void _ZN6S788C34v139Ev();
extern void _ZN6S788C34v140Ev();
extern void _ZN6S788C34v141Ev();
extern void _ZN6S788C34v142Ev();
extern void _ZN6S788C34v143Ev();
extern void _ZN6S788C34v144Ev();
extern void _ZN6S788C34v145Ev();
extern void _ZN6S788C34v146Ev();
extern void _ZN6S788C34v147Ev();
extern void _ZN6S788C34v148Ev();
extern void _ZN6S788C24v149Ev();
static  VTBL_ENTRY vtc_S788C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S788C2[0]),
  (VTBL_ENTRY)&_ZN6S788C2D1Ev,
  (VTBL_ENTRY)&_ZN6S788C2D0Ev,
  (VTBL_ENTRY)&_ZN6S788C42v9Ev,
  (VTBL_ENTRY)&_ZN6S788C43v10Ev,
  (VTBL_ENTRY)&_ZN6S788C43v11Ev,
  (VTBL_ENTRY)&_ZN6S788C43v12Ev,
  (VTBL_ENTRY)&_ZN6S788C43v13Ev,
  (VTBL_ENTRY)&_ZN6S788C43v14Ev,
  (VTBL_ENTRY)&_ZN6S788C43v15Ev,
  (VTBL_ENTRY)&_ZN6S788C43v16Ev,
  (VTBL_ENTRY)&_ZN6S788C43v17Ev,
  (VTBL_ENTRY)&_ZN6S788C43v18Ev,
  (VTBL_ENTRY)&_ZN6S788C43v19Ev,
  (VTBL_ENTRY)&_ZN6S788C43v20Ev,
  (VTBL_ENTRY)&_ZN6S788C43v21Ev,
  (VTBL_ENTRY)&_ZN6S788C43v22Ev,
  (VTBL_ENTRY)&_ZN6S788C43v23Ev,
  (VTBL_ENTRY)&_ZN6S788C43v24Ev,
  (VTBL_ENTRY)&_ZN6S788C43v25Ev,
  (VTBL_ENTRY)&_ZN6S788C43v26Ev,
  (VTBL_ENTRY)&_ZN6S788C43v27Ev,
  (VTBL_ENTRY)&_ZN6S788C43v28Ev,
  (VTBL_ENTRY)&_ZN6S788C43v29Ev,
  (VTBL_ENTRY)&_ZN6S788C43v30Ev,
  (VTBL_ENTRY)&_ZN6S788C43v31Ev,
  (VTBL_ENTRY)&_ZN6S788C43v32Ev,
  (VTBL_ENTRY)&_ZN6S788C43v33Ev,
  (VTBL_ENTRY)&_ZN6S788C43v34Ev,
  (VTBL_ENTRY)&_ZN6S788C43v35Ev,
  (VTBL_ENTRY)&_ZN6S788C43v36Ev,
  (VTBL_ENTRY)&_ZN6S788C43v37Ev,
  (VTBL_ENTRY)&_ZN6S788C43v38Ev,
  (VTBL_ENTRY)&_ZN6S788C43v39Ev,
  (VTBL_ENTRY)&_ZN6S788C43v40Ev,
  (VTBL_ENTRY)&_ZN6S788C43v41Ev,
  (VTBL_ENTRY)&_ZN6S788C43v42Ev,
  (VTBL_ENTRY)&_ZN6S788C43v43Ev,
  (VTBL_ENTRY)&_ZN6S788C43v44Ev,
  (VTBL_ENTRY)&_ZN6S788C43v45Ev,
  (VTBL_ENTRY)&_ZN6S788C43v46Ev,
  (VTBL_ENTRY)&_ZN6S788C43v47Ev,
  (VTBL_ENTRY)&_ZN6S788C43v48Ev,
  (VTBL_ENTRY)&_ZN6S788C43v49Ev,
  (VTBL_ENTRY)&_ZN6S788C43v50Ev,
  (VTBL_ENTRY)&_ZN6S788C43v51Ev,
  (VTBL_ENTRY)&_ZN6S788C43v52Ev,
  (VTBL_ENTRY)&_ZN6S788C43v53Ev,
  (VTBL_ENTRY)&_ZN6S788C43v54Ev,
  (VTBL_ENTRY)&_ZN6S788C43v55Ev,
  (VTBL_ENTRY)&_ZN6S788C43v56Ev,
  (VTBL_ENTRY)&_ZN6S788C43v57Ev,
  (VTBL_ENTRY)&_ZN6S788C43v58Ev,
  (VTBL_ENTRY)&_ZN6S788C43v59Ev,
  (VTBL_ENTRY)&_ZN6S788C43v60Ev,
  (VTBL_ENTRY)&_ZN6S788C43v61Ev,
  (VTBL_ENTRY)&_ZN6S788C43v62Ev,
  (VTBL_ENTRY)&_ZN6S788C43v63Ev,
  (VTBL_ENTRY)&_ZN6S788C43v64Ev,
  (VTBL_ENTRY)&_ZN6S788C43v65Ev,
  (VTBL_ENTRY)&_ZN6S788C43v66Ev,
  (VTBL_ENTRY)&_ZN6S788C43v67Ev,
  (VTBL_ENTRY)&_ZN6S788C43v68Ev,
  (VTBL_ENTRY)&_ZN6S788C43v69Ev,
  (VTBL_ENTRY)&_ZN6S788C43v70Ev,
  (VTBL_ENTRY)&_ZN6S788C43v71Ev,
  (VTBL_ENTRY)&_ZN6S788C43v72Ev,
  (VTBL_ENTRY)&_ZN6S788C43v73Ev,
  (VTBL_ENTRY)&_ZN6S788C43v74Ev,
  (VTBL_ENTRY)&_ZN6S788C43v75Ev,
  (VTBL_ENTRY)&_ZN6S788C43v76Ev,
  (VTBL_ENTRY)&_ZN6S788C43v77Ev,
  (VTBL_ENTRY)&_ZN6S788C43v78Ev,
  (VTBL_ENTRY)&_ZN6S788C43v79Ev,
  (VTBL_ENTRY)&_ZN6S788C43v80Ev,
  (VTBL_ENTRY)&_ZN6S788C43v81Ev,
  (VTBL_ENTRY)&_ZN6S788C43v82Ev,
  (VTBL_ENTRY)&_ZN6S788C43v83Ev,
  (VTBL_ENTRY)&_ZN6S788C43v84Ev,
  (VTBL_ENTRY)&_ZN6S788C43v85Ev,
  (VTBL_ENTRY)&_ZN6S788C43v86Ev,
  (VTBL_ENTRY)&_ZN6S788C43v87Ev,
  (VTBL_ENTRY)&_ZN6S788C43v88Ev,
  (VTBL_ENTRY)&_ZN6S788C43v89Ev,
  (VTBL_ENTRY)&_ZN6S788C43v90Ev,
  (VTBL_ENTRY)&_ZN6S788C43v91Ev,
  (VTBL_ENTRY)&_ZN6S788C43v92Ev,
  (VTBL_ENTRY)&_ZN6S788C43v93Ev,
  (VTBL_ENTRY)&_ZN6S788C43v94Ev,
  (VTBL_ENTRY)&_ZN6S788C43v95Ev,
  (VTBL_ENTRY)&_ZN6S788C43v96Ev,
  (VTBL_ENTRY)&_ZN6S788C43v97Ev,
  (VTBL_ENTRY)&_ZN6S788C43v98Ev,
  (VTBL_ENTRY)&_ZN6S788C43v99Ev,
  (VTBL_ENTRY)&_ZN6S788C44v100Ev,
  (VTBL_ENTRY)&_ZN6S788C44v101Ev,
  (VTBL_ENTRY)&_ZN6S788C44v102Ev,
  (VTBL_ENTRY)&_ZN6S788C44v103Ev,
  (VTBL_ENTRY)&_ZN6S788C44v104Ev,
  (VTBL_ENTRY)&_ZN6S788C44v105Ev,
  (VTBL_ENTRY)&_ZN6S788C44v106Ev,
  (VTBL_ENTRY)&_ZN6S788C44v107Ev,
  (VTBL_ENTRY)&_ZN6S788C44v108Ev,
  (VTBL_ENTRY)&_ZN6S788C44v109Ev,
  (VTBL_ENTRY)&_ZN6S788C44v110Ev,
  (VTBL_ENTRY)&_ZN6S788C44v111Ev,
  (VTBL_ENTRY)&_ZN6S788C44v112Ev,
  (VTBL_ENTRY)&_ZN6S788C44v113Ev,
  (VTBL_ENTRY)&_ZN6S788C44v114Ev,
  (VTBL_ENTRY)&_ZN6S788C44v115Ev,
  (VTBL_ENTRY)&_ZN6S788C44v116Ev,
  (VTBL_ENTRY)&_ZN6S788C44v117Ev,
  (VTBL_ENTRY)&_ZN6S788C44v118Ev,
  (VTBL_ENTRY)&_ZN6S788C44v119Ev,
  (VTBL_ENTRY)&_ZN6S788C44v120Ev,
  (VTBL_ENTRY)&_ZN6S788C44v121Ev,
  (VTBL_ENTRY)&_ZN6S788C44v122Ev,
  (VTBL_ENTRY)&_ZN6S788C44v123Ev,
  (VTBL_ENTRY)&_ZN6S788C44v124Ev,
  (VTBL_ENTRY)&_ZN6S788C44v125Ev,
  (VTBL_ENTRY)&_ZN6S788C44v126Ev,
  (VTBL_ENTRY)&_ZN6S788C44v127Ev,
  (VTBL_ENTRY)&_ZN6S788C44v128Ev,
  (VTBL_ENTRY)&_ZN6S788C44v129Ev,
  (VTBL_ENTRY)&_ZN6S788C44v130Ev,
  (VTBL_ENTRY)&_ZN6S788C34v131Ev,
  (VTBL_ENTRY)&_ZN6S788C34v132Ev,
  (VTBL_ENTRY)&_ZN6S788C34v133Ev,
  (VTBL_ENTRY)&_ZN6S788C34v134Ev,
  (VTBL_ENTRY)&_ZN6S788C34v135Ev,
  (VTBL_ENTRY)&_ZN6S788C34v136Ev,
  (VTBL_ENTRY)&_ZN6S788C34v137Ev,
  (VTBL_ENTRY)&_ZN6S788C34v138Ev,
  (VTBL_ENTRY)&_ZN6S788C34v139Ev,
  (VTBL_ENTRY)&_ZN6S788C34v140Ev,
  (VTBL_ENTRY)&_ZN6S788C34v141Ev,
  (VTBL_ENTRY)&_ZN6S788C34v142Ev,
  (VTBL_ENTRY)&_ZN6S788C34v143Ev,
  (VTBL_ENTRY)&_ZN6S788C34v144Ev,
  (VTBL_ENTRY)&_ZN6S788C34v145Ev,
  (VTBL_ENTRY)&_ZN6S788C34v146Ev,
  (VTBL_ENTRY)&_ZN6S788C34v147Ev,
  (VTBL_ENTRY)&_ZN6S788C34v148Ev,
  (VTBL_ENTRY)&_ZN6S788C24v149Ev,
};
extern VTBL_ENTRY _ZTI6S788C2[];
extern  VTBL_ENTRY _ZTV6S788C2[];
Class_Descriptor cd_S788C2 = {  "S788C2", // class name
  bases_S788C2, 3,
  &(vtc_S788C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S788C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S788C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S788C1  : S788C2 {
  virtual void  v1(); // _ZN6S788C12v1Ev
  virtual void  v2(); // _ZN6S788C12v2Ev
  virtual void  v3(); // _ZN6S788C12v3Ev
  virtual void  v4(); // _ZN6S788C12v4Ev
  virtual void  v5(); // _ZN6S788C12v5Ev
  virtual void  v6(); // _ZN6S788C12v6Ev
  virtual void  v7(); // _ZN6S788C12v7Ev
  virtual void  v8(); // _ZN6S788C12v8Ev
  ~S788C1(); // tgen
  S788C1(); // tgen
};
//SIG(1 S788C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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} v149} v1 v2 v3 v4 v5 v6 v7 v8}


void  S788C1 ::v1(){vfunc_called(this, "_ZN6S788C12v1Ev");}
void  S788C1 ::v2(){vfunc_called(this, "_ZN6S788C12v2Ev");}
void  S788C1 ::v3(){vfunc_called(this, "_ZN6S788C12v3Ev");}
void  S788C1 ::v4(){vfunc_called(this, "_ZN6S788C12v4Ev");}
void  S788C1 ::v5(){vfunc_called(this, "_ZN6S788C12v5Ev");}
void  S788C1 ::v6(){vfunc_called(this, "_ZN6S788C12v6Ev");}
void  S788C1 ::v7(){vfunc_called(this, "_ZN6S788C12v7Ev");}
void  S788C1 ::v8(){vfunc_called(this, "_ZN6S788C12v8Ev");}
S788C1 ::~S788C1(){ note_dtor("S788C1", this);} // tgen
S788C1 ::S788C1(){ note_ctor("S788C1", this);} // tgen

static void Test_S788C1()
{
  extern Class_Descriptor cd_S788C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S788C1, buf);
    S788C1 *dp, &lv = *(dp=new (buf) S788C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S788C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S788C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S788C4*)(S788C3*)(S788C2*), 0, "S788C1");
    check_base_class_offset(lv, (S788C4*)(S788C3*)(S788C2*), 0, "S788C1");
    check_base_class_offset(lv, (S788C3*)(S788C2*), 0, "S788C1");
    check_base_class_offset(lv, (S788C2*), 0, "S788C1");
    test_class_info(&lv, &cd_S788C1);
    dp->~S788C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS788C1(Test_S788C1, "S788C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S788C1C1Ev();
extern void _ZN6S788C1D1Ev();
Name_Map name_map_S788C1[] = {
  NSPAIR(_ZN6S788C1C1Ev),
  NSPAIR(_ZN6S788C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S788C4;
extern VTBL_ENTRY _ZTI6S788C4[];
extern  VTBL_ENTRY _ZTV6S788C4[];
extern Class_Descriptor cd_S788C3;
extern VTBL_ENTRY _ZTI6S788C3[];
extern  VTBL_ENTRY _ZTV6S788C3[];
extern Class_Descriptor cd_S788C2;
extern VTBL_ENTRY _ZTI6S788C2[];
extern  VTBL_ENTRY _ZTV6S788C2[];
static Base_Class bases_S788C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S788C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S788C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S788C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S788C1[];
extern void _ZN6S788C1D1Ev();
extern void _ZN6S788C1D0Ev();
extern void _ZN6S788C42v9Ev();
extern void _ZN6S788C43v10Ev();
extern void _ZN6S788C43v11Ev();
extern void _ZN6S788C43v12Ev();
extern void _ZN6S788C43v13Ev();
extern void _ZN6S788C43v14Ev();
extern void _ZN6S788C43v15Ev();
extern void _ZN6S788C43v16Ev();
extern void _ZN6S788C43v17Ev();
extern void _ZN6S788C43v18Ev();
extern void _ZN6S788C43v19Ev();
extern void _ZN6S788C43v20Ev();
extern void _ZN6S788C43v21Ev();
extern void _ZN6S788C43v22Ev();
extern void _ZN6S788C43v23Ev();
extern void _ZN6S788C43v24Ev();
extern void _ZN6S788C43v25Ev();
extern void _ZN6S788C43v26Ev();
extern void _ZN6S788C43v27Ev();
extern void _ZN6S788C43v28Ev();
extern void _ZN6S788C43v29Ev();
extern void _ZN6S788C43v30Ev();
extern void _ZN6S788C43v31Ev();
extern void _ZN6S788C43v32Ev();
extern void _ZN6S788C43v33Ev();
extern void _ZN6S788C43v34Ev();
extern void _ZN6S788C43v35Ev();
extern void _ZN6S788C43v36Ev();
extern void _ZN6S788C43v37Ev();
extern void _ZN6S788C43v38Ev();
extern void _ZN6S788C43v39Ev();
extern void _ZN6S788C43v40Ev();
extern void _ZN6S788C43v41Ev();
extern void _ZN6S788C43v42Ev();
extern void _ZN6S788C43v43Ev();
extern void _ZN6S788C43v44Ev();
extern void _ZN6S788C43v45Ev();
extern void _ZN6S788C43v46Ev();
extern void _ZN6S788C43v47Ev();
extern void _ZN6S788C43v48Ev();
extern void _ZN6S788C43v49Ev();
extern void _ZN6S788C43v50Ev();
extern void _ZN6S788C43v51Ev();
extern void _ZN6S788C43v52Ev();
extern void _ZN6S788C43v53Ev();
extern void _ZN6S788C43v54Ev();
extern void _ZN6S788C43v55Ev();
extern void _ZN6S788C43v56Ev();
extern void _ZN6S788C43v57Ev();
extern void _ZN6S788C43v58Ev();
extern void _ZN6S788C43v59Ev();
extern void _ZN6S788C43v60Ev();
extern void _ZN6S788C43v61Ev();
extern void _ZN6S788C43v62Ev();
extern void _ZN6S788C43v63Ev();
extern void _ZN6S788C43v64Ev();
extern void _ZN6S788C43v65Ev();
extern void _ZN6S788C43v66Ev();
extern void _ZN6S788C43v67Ev();
extern void _ZN6S788C43v68Ev();
extern void _ZN6S788C43v69Ev();
extern void _ZN6S788C43v70Ev();
extern void _ZN6S788C43v71Ev();
extern void _ZN6S788C43v72Ev();
extern void _ZN6S788C43v73Ev();
extern void _ZN6S788C43v74Ev();
extern void _ZN6S788C43v75Ev();
extern void _ZN6S788C43v76Ev();
extern void _ZN6S788C43v77Ev();
extern void _ZN6S788C43v78Ev();
extern void _ZN6S788C43v79Ev();
extern void _ZN6S788C43v80Ev();
extern void _ZN6S788C43v81Ev();
extern void _ZN6S788C43v82Ev();
extern void _ZN6S788C43v83Ev();
extern void _ZN6S788C43v84Ev();
extern void _ZN6S788C43v85Ev();
extern void _ZN6S788C43v86Ev();
extern void _ZN6S788C43v87Ev();
extern void _ZN6S788C43v88Ev();
extern void _ZN6S788C43v89Ev();
extern void _ZN6S788C43v90Ev();
extern void _ZN6S788C43v91Ev();
extern void _ZN6S788C43v92Ev();
extern void _ZN6S788C43v93Ev();
extern void _ZN6S788C43v94Ev();
extern void _ZN6S788C43v95Ev();
extern void _ZN6S788C43v96Ev();
extern void _ZN6S788C43v97Ev();
extern void _ZN6S788C43v98Ev();
extern void _ZN6S788C43v99Ev();
extern void _ZN6S788C44v100Ev();
extern void _ZN6S788C44v101Ev();
extern void _ZN6S788C44v102Ev();
extern void _ZN6S788C44v103Ev();
extern void _ZN6S788C44v104Ev();
extern void _ZN6S788C44v105Ev();
extern void _ZN6S788C44v106Ev();
extern void _ZN6S788C44v107Ev();
extern void _ZN6S788C44v108Ev();
extern void _ZN6S788C44v109Ev();
extern void _ZN6S788C44v110Ev();
extern void _ZN6S788C44v111Ev();
extern void _ZN6S788C44v112Ev();
extern void _ZN6S788C44v113Ev();
extern void _ZN6S788C44v114Ev();
extern void _ZN6S788C44v115Ev();
extern void _ZN6S788C44v116Ev();
extern void _ZN6S788C44v117Ev();
extern void _ZN6S788C44v118Ev();
extern void _ZN6S788C44v119Ev();
extern void _ZN6S788C44v120Ev();
extern void _ZN6S788C44v121Ev();
extern void _ZN6S788C44v122Ev();
extern void _ZN6S788C44v123Ev();
extern void _ZN6S788C44v124Ev();
extern void _ZN6S788C44v125Ev();
extern void _ZN6S788C44v126Ev();
extern void _ZN6S788C44v127Ev();
extern void _ZN6S788C44v128Ev();
extern void _ZN6S788C44v129Ev();
extern void _ZN6S788C44v130Ev();
extern void _ZN6S788C34v131Ev();
extern void _ZN6S788C34v132Ev();
extern void _ZN6S788C34v133Ev();
extern void _ZN6S788C34v134Ev();
extern void _ZN6S788C34v135Ev();
extern void _ZN6S788C34v136Ev();
extern void _ZN6S788C34v137Ev();
extern void _ZN6S788C34v138Ev();
extern void _ZN6S788C34v139Ev();
extern void _ZN6S788C34v140Ev();
extern void _ZN6S788C34v141Ev();
extern void _ZN6S788C34v142Ev();
extern void _ZN6S788C34v143Ev();
extern void _ZN6S788C34v144Ev();
extern void _ZN6S788C34v145Ev();
extern void _ZN6S788C34v146Ev();
extern void _ZN6S788C34v147Ev();
extern void _ZN6S788C34v148Ev();
extern void _ZN6S788C24v149Ev();
extern void _ZN6S788C12v1Ev();
extern void _ZN6S788C12v2Ev();
extern void _ZN6S788C12v3Ev();
extern void _ZN6S788C12v4Ev();
extern void _ZN6S788C12v5Ev();
extern void _ZN6S788C12v6Ev();
extern void _ZN6S788C12v7Ev();
extern void _ZN6S788C12v8Ev();
static  VTBL_ENTRY vtc_S788C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S788C1[0]),
  (VTBL_ENTRY)&_ZN6S788C1D1Ev,
  (VTBL_ENTRY)&_ZN6S788C1D0Ev,
  (VTBL_ENTRY)&_ZN6S788C42v9Ev,
  (VTBL_ENTRY)&_ZN6S788C43v10Ev,
  (VTBL_ENTRY)&_ZN6S788C43v11Ev,
  (VTBL_ENTRY)&_ZN6S788C43v12Ev,
  (VTBL_ENTRY)&_ZN6S788C43v13Ev,
  (VTBL_ENTRY)&_ZN6S788C43v14Ev,
  (VTBL_ENTRY)&_ZN6S788C43v15Ev,
  (VTBL_ENTRY)&_ZN6S788C43v16Ev,
  (VTBL_ENTRY)&_ZN6S788C43v17Ev,
  (VTBL_ENTRY)&_ZN6S788C43v18Ev,
  (VTBL_ENTRY)&_ZN6S788C43v19Ev,
  (VTBL_ENTRY)&_ZN6S788C43v20Ev,
  (VTBL_ENTRY)&_ZN6S788C43v21Ev,
  (VTBL_ENTRY)&_ZN6S788C43v22Ev,
  (VTBL_ENTRY)&_ZN6S788C43v23Ev,
  (VTBL_ENTRY)&_ZN6S788C43v24Ev,
  (VTBL_ENTRY)&_ZN6S788C43v25Ev,
  (VTBL_ENTRY)&_ZN6S788C43v26Ev,
  (VTBL_ENTRY)&_ZN6S788C43v27Ev,
  (VTBL_ENTRY)&_ZN6S788C43v28Ev,
  (VTBL_ENTRY)&_ZN6S788C43v29Ev,
  (VTBL_ENTRY)&_ZN6S788C43v30Ev,
  (VTBL_ENTRY)&_ZN6S788C43v31Ev,
  (VTBL_ENTRY)&_ZN6S788C43v32Ev,
  (VTBL_ENTRY)&_ZN6S788C43v33Ev,
  (VTBL_ENTRY)&_ZN6S788C43v34Ev,
  (VTBL_ENTRY)&_ZN6S788C43v35Ev,
  (VTBL_ENTRY)&_ZN6S788C43v36Ev,
  (VTBL_ENTRY)&_ZN6S788C43v37Ev,
  (VTBL_ENTRY)&_ZN6S788C43v38Ev,
  (VTBL_ENTRY)&_ZN6S788C43v39Ev,
  (VTBL_ENTRY)&_ZN6S788C43v40Ev,
  (VTBL_ENTRY)&_ZN6S788C43v41Ev,
  (VTBL_ENTRY)&_ZN6S788C43v42Ev,
  (VTBL_ENTRY)&_ZN6S788C43v43Ev,
  (VTBL_ENTRY)&_ZN6S788C43v44Ev,
  (VTBL_ENTRY)&_ZN6S788C43v45Ev,
  (VTBL_ENTRY)&_ZN6S788C43v46Ev,
  (VTBL_ENTRY)&_ZN6S788C43v47Ev,
  (VTBL_ENTRY)&_ZN6S788C43v48Ev,
  (VTBL_ENTRY)&_ZN6S788C43v49Ev,
  (VTBL_ENTRY)&_ZN6S788C43v50Ev,
  (VTBL_ENTRY)&_ZN6S788C43v51Ev,
  (VTBL_ENTRY)&_ZN6S788C43v52Ev,
  (VTBL_ENTRY)&_ZN6S788C43v53Ev,
  (VTBL_ENTRY)&_ZN6S788C43v54Ev,
  (VTBL_ENTRY)&_ZN6S788C43v55Ev,
  (VTBL_ENTRY)&_ZN6S788C43v56Ev,
  (VTBL_ENTRY)&_ZN6S788C43v57Ev,
  (VTBL_ENTRY)&_ZN6S788C43v58Ev,
  (VTBL_ENTRY)&_ZN6S788C43v59Ev,
  (VTBL_ENTRY)&_ZN6S788C43v60Ev,
  (VTBL_ENTRY)&_ZN6S788C43v61Ev,
  (VTBL_ENTRY)&_ZN6S788C43v62Ev,
  (VTBL_ENTRY)&_ZN6S788C43v63Ev,
  (VTBL_ENTRY)&_ZN6S788C43v64Ev,
  (VTBL_ENTRY)&_ZN6S788C43v65Ev,
  (VTBL_ENTRY)&_ZN6S788C43v66Ev,
  (VTBL_ENTRY)&_ZN6S788C43v67Ev,
  (VTBL_ENTRY)&_ZN6S788C43v68Ev,
  (VTBL_ENTRY)&_ZN6S788C43v69Ev,
  (VTBL_ENTRY)&_ZN6S788C43v70Ev,
  (VTBL_ENTRY)&_ZN6S788C43v71Ev,
  (VTBL_ENTRY)&_ZN6S788C43v72Ev,
  (VTBL_ENTRY)&_ZN6S788C43v73Ev,
  (VTBL_ENTRY)&_ZN6S788C43v74Ev,
  (VTBL_ENTRY)&_ZN6S788C43v75Ev,
  (VTBL_ENTRY)&_ZN6S788C43v76Ev,
  (VTBL_ENTRY)&_ZN6S788C43v77Ev,
  (VTBL_ENTRY)&_ZN6S788C43v78Ev,
  (VTBL_ENTRY)&_ZN6S788C43v79Ev,
  (VTBL_ENTRY)&_ZN6S788C43v80Ev,
  (VTBL_ENTRY)&_ZN6S788C43v81Ev,
  (VTBL_ENTRY)&_ZN6S788C43v82Ev,
  (VTBL_ENTRY)&_ZN6S788C43v83Ev,
  (VTBL_ENTRY)&_ZN6S788C43v84Ev,
  (VTBL_ENTRY)&_ZN6S788C43v85Ev,
  (VTBL_ENTRY)&_ZN6S788C43v86Ev,
  (VTBL_ENTRY)&_ZN6S788C43v87Ev,
  (VTBL_ENTRY)&_ZN6S788C43v88Ev,
  (VTBL_ENTRY)&_ZN6S788C43v89Ev,
  (VTBL_ENTRY)&_ZN6S788C43v90Ev,
  (VTBL_ENTRY)&_ZN6S788C43v91Ev,
  (VTBL_ENTRY)&_ZN6S788C43v92Ev,
  (VTBL_ENTRY)&_ZN6S788C43v93Ev,
  (VTBL_ENTRY)&_ZN6S788C43v94Ev,
  (VTBL_ENTRY)&_ZN6S788C43v95Ev,
  (VTBL_ENTRY)&_ZN6S788C43v96Ev,
  (VTBL_ENTRY)&_ZN6S788C43v97Ev,
  (VTBL_ENTRY)&_ZN6S788C43v98Ev,
  (VTBL_ENTRY)&_ZN6S788C43v99Ev,
  (VTBL_ENTRY)&_ZN6S788C44v100Ev,
  (VTBL_ENTRY)&_ZN6S788C44v101Ev,
  (VTBL_ENTRY)&_ZN6S788C44v102Ev,
  (VTBL_ENTRY)&_ZN6S788C44v103Ev,
  (VTBL_ENTRY)&_ZN6S788C44v104Ev,
  (VTBL_ENTRY)&_ZN6S788C44v105Ev,
  (VTBL_ENTRY)&_ZN6S788C44v106Ev,
  (VTBL_ENTRY)&_ZN6S788C44v107Ev,
  (VTBL_ENTRY)&_ZN6S788C44v108Ev,
  (VTBL_ENTRY)&_ZN6S788C44v109Ev,
  (VTBL_ENTRY)&_ZN6S788C44v110Ev,
  (VTBL_ENTRY)&_ZN6S788C44v111Ev,
  (VTBL_ENTRY)&_ZN6S788C44v112Ev,
  (VTBL_ENTRY)&_ZN6S788C44v113Ev,
  (VTBL_ENTRY)&_ZN6S788C44v114Ev,
  (VTBL_ENTRY)&_ZN6S788C44v115Ev,
  (VTBL_ENTRY)&_ZN6S788C44v116Ev,
  (VTBL_ENTRY)&_ZN6S788C44v117Ev,
  (VTBL_ENTRY)&_ZN6S788C44v118Ev,
  (VTBL_ENTRY)&_ZN6S788C44v119Ev,
  (VTBL_ENTRY)&_ZN6S788C44v120Ev,
  (VTBL_ENTRY)&_ZN6S788C44v121Ev,
  (VTBL_ENTRY)&_ZN6S788C44v122Ev,
  (VTBL_ENTRY)&_ZN6S788C44v123Ev,
  (VTBL_ENTRY)&_ZN6S788C44v124Ev,
  (VTBL_ENTRY)&_ZN6S788C44v125Ev,
  (VTBL_ENTRY)&_ZN6S788C44v126Ev,
  (VTBL_ENTRY)&_ZN6S788C44v127Ev,
  (VTBL_ENTRY)&_ZN6S788C44v128Ev,
  (VTBL_ENTRY)&_ZN6S788C44v129Ev,
  (VTBL_ENTRY)&_ZN6S788C44v130Ev,
  (VTBL_ENTRY)&_ZN6S788C34v131Ev,
  (VTBL_ENTRY)&_ZN6S788C34v132Ev,
  (VTBL_ENTRY)&_ZN6S788C34v133Ev,
  (VTBL_ENTRY)&_ZN6S788C34v134Ev,
  (VTBL_ENTRY)&_ZN6S788C34v135Ev,
  (VTBL_ENTRY)&_ZN6S788C34v136Ev,
  (VTBL_ENTRY)&_ZN6S788C34v137Ev,
  (VTBL_ENTRY)&_ZN6S788C34v138Ev,
  (VTBL_ENTRY)&_ZN6S788C34v139Ev,
  (VTBL_ENTRY)&_ZN6S788C34v140Ev,
  (VTBL_ENTRY)&_ZN6S788C34v141Ev,
  (VTBL_ENTRY)&_ZN6S788C34v142Ev,
  (VTBL_ENTRY)&_ZN6S788C34v143Ev,
  (VTBL_ENTRY)&_ZN6S788C34v144Ev,
  (VTBL_ENTRY)&_ZN6S788C34v145Ev,
  (VTBL_ENTRY)&_ZN6S788C34v146Ev,
  (VTBL_ENTRY)&_ZN6S788C34v147Ev,
  (VTBL_ENTRY)&_ZN6S788C34v148Ev,
  (VTBL_ENTRY)&_ZN6S788C24v149Ev,
  (VTBL_ENTRY)&_ZN6S788C12v1Ev,
  (VTBL_ENTRY)&_ZN6S788C12v2Ev,
  (VTBL_ENTRY)&_ZN6S788C12v3Ev,
  (VTBL_ENTRY)&_ZN6S788C12v4Ev,
  (VTBL_ENTRY)&_ZN6S788C12v5Ev,
  (VTBL_ENTRY)&_ZN6S788C12v6Ev,
  (VTBL_ENTRY)&_ZN6S788C12v7Ev,
  (VTBL_ENTRY)&_ZN6S788C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S788C1[];
extern  VTBL_ENTRY _ZTV6S788C1[];
Class_Descriptor cd_S788C1 = {  "S788C1", // class name
  bases_S788C1, 4,
  &(vtc_S788C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S788C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S788C1),153, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1770C3  : S785C5_nt {
  virtual void  v10(); // _ZN7S1770C33v10Ev
  virtual void  v11(); // _ZN7S1770C33v11Ev
  virtual void  v12(); // _ZN7S1770C33v12Ev
  virtual void  v13(); // _ZN7S1770C33v13Ev
  virtual void  v14(); // _ZN7S1770C33v14Ev
  virtual void  v15(); // _ZN7S1770C33v15Ev
  virtual void  v16(); // _ZN7S1770C33v16Ev
  virtual void  v17(); // _ZN7S1770C33v17Ev
  virtual void  v18(); // _ZN7S1770C33v18Ev
  virtual void  v19(); // _ZN7S1770C33v19Ev
  virtual void  v20(); // _ZN7S1770C33v20Ev
  virtual void  v21(); // _ZN7S1770C33v21Ev
  virtual void  v22(); // _ZN7S1770C33v22Ev
  virtual void  v23(); // _ZN7S1770C33v23Ev
  virtual void  v24(); // _ZN7S1770C33v24Ev
  virtual void  v25(); // _ZN7S1770C33v25Ev
  virtual void  v26(); // _ZN7S1770C33v26Ev
  virtual void  v27(); // _ZN7S1770C33v27Ev
  virtual void  v28(); // _ZN7S1770C33v28Ev
  virtual void  v29(); // _ZN7S1770C33v29Ev
  virtual void  v30(); // _ZN7S1770C33v30Ev
  virtual void  v31(); // _ZN7S1770C33v31Ev
  virtual void  v32(); // _ZN7S1770C33v32Ev
  virtual void  v33(); // _ZN7S1770C33v33Ev
  virtual void  v34(); // _ZN7S1770C33v34Ev
  virtual void  v35(); // _ZN7S1770C33v35Ev
  virtual void  v36(); // _ZN7S1770C33v36Ev
  virtual void  v37(); // _ZN7S1770C33v37Ev
  virtual void  v38(); // _ZN7S1770C33v38Ev
  virtual void  v39(); // _ZN7S1770C33v39Ev
  virtual void  v40(); // _ZN7S1770C33v40Ev
  virtual void  v41(); // _ZN7S1770C33v41Ev
  virtual void  v42(); // _ZN7S1770C33v42Ev
  virtual void  v43(); // _ZN7S1770C33v43Ev
  virtual void  v44(); // _ZN7S1770C33v44Ev
  virtual void  v45(); // _ZN7S1770C33v45Ev
  virtual void  v46(); // _ZN7S1770C33v46Ev
  virtual void  v47(); // _ZN7S1770C33v47Ev
  virtual void  v48(); // _ZN7S1770C33v48Ev
  virtual void  v49(); // _ZN7S1770C33v49Ev
  virtual void  v50(); // _ZN7S1770C33v50Ev
  virtual void  v51(); // _ZN7S1770C33v51Ev
  virtual void  v52(); // _ZN7S1770C33v52Ev
  virtual void  v53(); // _ZN7S1770C33v53Ev
  virtual void  v54(); // _ZN7S1770C33v54Ev
  virtual void  v55(); // _ZN7S1770C33v55Ev
  virtual void  v56(); // _ZN7S1770C33v56Ev
  virtual void  v57(); // _ZN7S1770C33v57Ev
  virtual void  v58(); // _ZN7S1770C33v58Ev
  virtual void  v59(); // _ZN7S1770C33v59Ev
  virtual void  v60(); // _ZN7S1770C33v60Ev
  virtual void  v61(); // _ZN7S1770C33v61Ev
  virtual void  v62(); // _ZN7S1770C33v62Ev
  virtual void  v63(); // _ZN7S1770C33v63Ev
  virtual void  v64(); // _ZN7S1770C33v64Ev
  virtual void  v65(); // _ZN7S1770C33v65Ev
  virtual void  v66(); // _ZN7S1770C33v66Ev
  virtual void  v67(); // _ZN7S1770C33v67Ev
  virtual void  v68(); // _ZN7S1770C33v68Ev
  virtual void  v69(); // _ZN7S1770C33v69Ev
  virtual void  v70(); // _ZN7S1770C33v70Ev
  virtual void  v71(); // _ZN7S1770C33v71Ev
  virtual void  v72(); // _ZN7S1770C33v72Ev
  virtual void  v73(); // _ZN7S1770C33v73Ev
  virtual void  v74(); // _ZN7S1770C33v74Ev
  virtual void  v75(); // _ZN7S1770C33v75Ev
  virtual void  v76(); // _ZN7S1770C33v76Ev
  virtual void  v77(); // _ZN7S1770C33v77Ev
  virtual void  v78(); // _ZN7S1770C33v78Ev
  virtual void  v79(); // _ZN7S1770C33v79Ev
  virtual void  v80(); // _ZN7S1770C33v80Ev
  virtual void  v81(); // _ZN7S1770C33v81Ev
  virtual void  v82(); // _ZN7S1770C33v82Ev
  virtual void  v83(); // _ZN7S1770C33v83Ev
  virtual void  v84(); // _ZN7S1770C33v84Ev
  virtual void  v85(); // _ZN7S1770C33v85Ev
  virtual void  v86(); // _ZN7S1770C33v86Ev
  virtual void  v87(); // _ZN7S1770C33v87Ev
  virtual void  v88(); // _ZN7S1770C33v88Ev
  virtual void  v89(); // _ZN7S1770C33v89Ev
  virtual void  v90(); // _ZN7S1770C33v90Ev
  virtual void  v91(); // _ZN7S1770C33v91Ev
  virtual void  v92(); // _ZN7S1770C33v92Ev
  virtual void  v93(); // _ZN7S1770C33v93Ev
  virtual void  v94(); // _ZN7S1770C33v94Ev
  virtual void  v95(); // _ZN7S1770C33v95Ev
  virtual void  v96(); // _ZN7S1770C33v96Ev
  virtual void  v97(); // _ZN7S1770C33v97Ev
  virtual void  v98(); // _ZN7S1770C33v98Ev
  virtual void  v99(); // _ZN7S1770C33v99Ev
  virtual void  v100(); // _ZN7S1770C34v100Ev
  virtual void  v101(); // _ZN7S1770C34v101Ev
  virtual void  v102(); // _ZN7S1770C34v102Ev
  virtual void  v103(); // _ZN7S1770C34v103Ev
  virtual void  v104(); // _ZN7S1770C34v104Ev
  virtual void  v105(); // _ZN7S1770C34v105Ev
  virtual void  v106(); // _ZN7S1770C34v106Ev
  virtual void  v107(); // _ZN7S1770C34v107Ev
  virtual void  v108(); // _ZN7S1770C34v108Ev
  virtual void  v109(); // _ZN7S1770C34v109Ev
  virtual void  v110(); // _ZN7S1770C34v110Ev
  virtual void  v111(); // _ZN7S1770C34v111Ev
  virtual void  v112(); // _ZN7S1770C34v112Ev
  virtual void  v113(); // _ZN7S1770C34v113Ev
  virtual void  v114(); // _ZN7S1770C34v114Ev
  virtual void  v115(); // _ZN7S1770C34v115Ev
  virtual void  v116(); // _ZN7S1770C34v116Ev
  virtual void  v117(); // _ZN7S1770C34v117Ev
  virtual void  v118(); // _ZN7S1770C34v118Ev
  virtual void  v119(); // _ZN7S1770C34v119Ev
  virtual void  v120(); // _ZN7S1770C34v120Ev
  virtual void  v121(); // _ZN7S1770C34v121Ev
  virtual void  v122(); // _ZN7S1770C34v122Ev
  virtual void  v123(); // _ZN7S1770C34v123Ev
  virtual void  v124(); // _ZN7S1770C34v124Ev
  virtual void  v125(); // _ZN7S1770C34v125Ev
  virtual void  v126(); // _ZN7S1770C34v126Ev
  virtual void  v127(); // _ZN7S1770C34v127Ev
  virtual void  v128(); // _ZN7S1770C34v128Ev
  virtual void  v129(); // _ZN7S1770C34v129Ev
  virtual void  v130(); // _ZN7S1770C34v130Ev
  virtual void  v131(); // _ZN7S1770C34v131Ev
  ~S1770C3(); // tgen
  S1770C3(); // tgen
};
//SIG(-1 S1770C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1770C3 ::v10(){vfunc_called(this, "_ZN7S1770C33v10Ev");}
void  S1770C3 ::v11(){vfunc_called(this, "_ZN7S1770C33v11Ev");}
void  S1770C3 ::v12(){vfunc_called(this, "_ZN7S1770C33v12Ev");}
void  S1770C3 ::v13(){vfunc_called(this, "_ZN7S1770C33v13Ev");}
void  S1770C3 ::v14(){vfunc_called(this, "_ZN7S1770C33v14Ev");}
void  S1770C3 ::v15(){vfunc_called(this, "_ZN7S1770C33v15Ev");}
void  S1770C3 ::v16(){vfunc_called(this, "_ZN7S1770C33v16Ev");}
void  S1770C3 ::v17(){vfunc_called(this, "_ZN7S1770C33v17Ev");}
void  S1770C3 ::v18(){vfunc_called(this, "_ZN7S1770C33v18Ev");}
void  S1770C3 ::v19(){vfunc_called(this, "_ZN7S1770C33v19Ev");}
void  S1770C3 ::v20(){vfunc_called(this, "_ZN7S1770C33v20Ev");}
void  S1770C3 ::v21(){vfunc_called(this, "_ZN7S1770C33v21Ev");}
void  S1770C3 ::v22(){vfunc_called(this, "_ZN7S1770C33v22Ev");}
void  S1770C3 ::v23(){vfunc_called(this, "_ZN7S1770C33v23Ev");}
void  S1770C3 ::v24(){vfunc_called(this, "_ZN7S1770C33v24Ev");}
void  S1770C3 ::v25(){vfunc_called(this, "_ZN7S1770C33v25Ev");}
void  S1770C3 ::v26(){vfunc_called(this, "_ZN7S1770C33v26Ev");}
void  S1770C3 ::v27(){vfunc_called(this, "_ZN7S1770C33v27Ev");}
void  S1770C3 ::v28(){vfunc_called(this, "_ZN7S1770C33v28Ev");}
void  S1770C3 ::v29(){vfunc_called(this, "_ZN7S1770C33v29Ev");}
void  S1770C3 ::v30(){vfunc_called(this, "_ZN7S1770C33v30Ev");}
void  S1770C3 ::v31(){vfunc_called(this, "_ZN7S1770C33v31Ev");}
void  S1770C3 ::v32(){vfunc_called(this, "_ZN7S1770C33v32Ev");}
void  S1770C3 ::v33(){vfunc_called(this, "_ZN7S1770C33v33Ev");}
void  S1770C3 ::v34(){vfunc_called(this, "_ZN7S1770C33v34Ev");}
void  S1770C3 ::v35(){vfunc_called(this, "_ZN7S1770C33v35Ev");}
void  S1770C3 ::v36(){vfunc_called(this, "_ZN7S1770C33v36Ev");}
void  S1770C3 ::v37(){vfunc_called(this, "_ZN7S1770C33v37Ev");}
void  S1770C3 ::v38(){vfunc_called(this, "_ZN7S1770C33v38Ev");}
void  S1770C3 ::v39(){vfunc_called(this, "_ZN7S1770C33v39Ev");}
void  S1770C3 ::v40(){vfunc_called(this, "_ZN7S1770C33v40Ev");}
void  S1770C3 ::v41(){vfunc_called(this, "_ZN7S1770C33v41Ev");}
void  S1770C3 ::v42(){vfunc_called(this, "_ZN7S1770C33v42Ev");}
void  S1770C3 ::v43(){vfunc_called(this, "_ZN7S1770C33v43Ev");}
void  S1770C3 ::v44(){vfunc_called(this, "_ZN7S1770C33v44Ev");}
void  S1770C3 ::v45(){vfunc_called(this, "_ZN7S1770C33v45Ev");}
void  S1770C3 ::v46(){vfunc_called(this, "_ZN7S1770C33v46Ev");}
void  S1770C3 ::v47(){vfunc_called(this, "_ZN7S1770C33v47Ev");}
void  S1770C3 ::v48(){vfunc_called(this, "_ZN7S1770C33v48Ev");}
void  S1770C3 ::v49(){vfunc_called(this, "_ZN7S1770C33v49Ev");}
void  S1770C3 ::v50(){vfunc_called(this, "_ZN7S1770C33v50Ev");}
void  S1770C3 ::v51(){vfunc_called(this, "_ZN7S1770C33v51Ev");}
void  S1770C3 ::v52(){vfunc_called(this, "_ZN7S1770C33v52Ev");}
void  S1770C3 ::v53(){vfunc_called(this, "_ZN7S1770C33v53Ev");}
void  S1770C3 ::v54(){vfunc_called(this, "_ZN7S1770C33v54Ev");}
void  S1770C3 ::v55(){vfunc_called(this, "_ZN7S1770C33v55Ev");}
void  S1770C3 ::v56(){vfunc_called(this, "_ZN7S1770C33v56Ev");}
void  S1770C3 ::v57(){vfunc_called(this, "_ZN7S1770C33v57Ev");}
void  S1770C3 ::v58(){vfunc_called(this, "_ZN7S1770C33v58Ev");}
void  S1770C3 ::v59(){vfunc_called(this, "_ZN7S1770C33v59Ev");}
void  S1770C3 ::v60(){vfunc_called(this, "_ZN7S1770C33v60Ev");}
void  S1770C3 ::v61(){vfunc_called(this, "_ZN7S1770C33v61Ev");}
void  S1770C3 ::v62(){vfunc_called(this, "_ZN7S1770C33v62Ev");}
void  S1770C3 ::v63(){vfunc_called(this, "_ZN7S1770C33v63Ev");}
void  S1770C3 ::v64(){vfunc_called(this, "_ZN7S1770C33v64Ev");}
void  S1770C3 ::v65(){vfunc_called(this, "_ZN7S1770C33v65Ev");}
void  S1770C3 ::v66(){vfunc_called(this, "_ZN7S1770C33v66Ev");}
void  S1770C3 ::v67(){vfunc_called(this, "_ZN7S1770C33v67Ev");}
void  S1770C3 ::v68(){vfunc_called(this, "_ZN7S1770C33v68Ev");}
void  S1770C3 ::v69(){vfunc_called(this, "_ZN7S1770C33v69Ev");}
void  S1770C3 ::v70(){vfunc_called(this, "_ZN7S1770C33v70Ev");}
void  S1770C3 ::v71(){vfunc_called(this, "_ZN7S1770C33v71Ev");}
void  S1770C3 ::v72(){vfunc_called(this, "_ZN7S1770C33v72Ev");}
void  S1770C3 ::v73(){vfunc_called(this, "_ZN7S1770C33v73Ev");}
void  S1770C3 ::v74(){vfunc_called(this, "_ZN7S1770C33v74Ev");}
void  S1770C3 ::v75(){vfunc_called(this, "_ZN7S1770C33v75Ev");}
void  S1770C3 ::v76(){vfunc_called(this, "_ZN7S1770C33v76Ev");}
void  S1770C3 ::v77(){vfunc_called(this, "_ZN7S1770C33v77Ev");}
void  S1770C3 ::v78(){vfunc_called(this, "_ZN7S1770C33v78Ev");}
void  S1770C3 ::v79(){vfunc_called(this, "_ZN7S1770C33v79Ev");}
void  S1770C3 ::v80(){vfunc_called(this, "_ZN7S1770C33v80Ev");}
void  S1770C3 ::v81(){vfunc_called(this, "_ZN7S1770C33v81Ev");}
void  S1770C3 ::v82(){vfunc_called(this, "_ZN7S1770C33v82Ev");}
void  S1770C3 ::v83(){vfunc_called(this, "_ZN7S1770C33v83Ev");}
void  S1770C3 ::v84(){vfunc_called(this, "_ZN7S1770C33v84Ev");}
void  S1770C3 ::v85(){vfunc_called(this, "_ZN7S1770C33v85Ev");}
void  S1770C3 ::v86(){vfunc_called(this, "_ZN7S1770C33v86Ev");}
void  S1770C3 ::v87(){vfunc_called(this, "_ZN7S1770C33v87Ev");}
void  S1770C3 ::v88(){vfunc_called(this, "_ZN7S1770C33v88Ev");}
void  S1770C3 ::v89(){vfunc_called(this, "_ZN7S1770C33v89Ev");}
void  S1770C3 ::v90(){vfunc_called(this, "_ZN7S1770C33v90Ev");}
void  S1770C3 ::v91(){vfunc_called(this, "_ZN7S1770C33v91Ev");}
void  S1770C3 ::v92(){vfunc_called(this, "_ZN7S1770C33v92Ev");}
void  S1770C3 ::v93(){vfunc_called(this, "_ZN7S1770C33v93Ev");}
void  S1770C3 ::v94(){vfunc_called(this, "_ZN7S1770C33v94Ev");}
void  S1770C3 ::v95(){vfunc_called(this, "_ZN7S1770C33v95Ev");}
void  S1770C3 ::v96(){vfunc_called(this, "_ZN7S1770C33v96Ev");}
void  S1770C3 ::v97(){vfunc_called(this, "_ZN7S1770C33v97Ev");}
void  S1770C3 ::v98(){vfunc_called(this, "_ZN7S1770C33v98Ev");}
void  S1770C3 ::v99(){vfunc_called(this, "_ZN7S1770C33v99Ev");}
void  S1770C3 ::v100(){vfunc_called(this, "_ZN7S1770C34v100Ev");}
void  S1770C3 ::v101(){vfunc_called(this, "_ZN7S1770C34v101Ev");}
void  S1770C3 ::v102(){vfunc_called(this, "_ZN7S1770C34v102Ev");}
void  S1770C3 ::v103(){vfunc_called(this, "_ZN7S1770C34v103Ev");}
void  S1770C3 ::v104(){vfunc_called(this, "_ZN7S1770C34v104Ev");}
void  S1770C3 ::v105(){vfunc_called(this, "_ZN7S1770C34v105Ev");}
void  S1770C3 ::v106(){vfunc_called(this, "_ZN7S1770C34v106Ev");}
void  S1770C3 ::v107(){vfunc_called(this, "_ZN7S1770C34v107Ev");}
void  S1770C3 ::v108(){vfunc_called(this, "_ZN7S1770C34v108Ev");}
void  S1770C3 ::v109(){vfunc_called(this, "_ZN7S1770C34v109Ev");}
void  S1770C3 ::v110(){vfunc_called(this, "_ZN7S1770C34v110Ev");}
void  S1770C3 ::v111(){vfunc_called(this, "_ZN7S1770C34v111Ev");}
void  S1770C3 ::v112(){vfunc_called(this, "_ZN7S1770C34v112Ev");}
void  S1770C3 ::v113(){vfunc_called(this, "_ZN7S1770C34v113Ev");}
void  S1770C3 ::v114(){vfunc_called(this, "_ZN7S1770C34v114Ev");}
void  S1770C3 ::v115(){vfunc_called(this, "_ZN7S1770C34v115Ev");}
void  S1770C3 ::v116(){vfunc_called(this, "_ZN7S1770C34v116Ev");}
void  S1770C3 ::v117(){vfunc_called(this, "_ZN7S1770C34v117Ev");}
void  S1770C3 ::v118(){vfunc_called(this, "_ZN7S1770C34v118Ev");}
void  S1770C3 ::v119(){vfunc_called(this, "_ZN7S1770C34v119Ev");}
void  S1770C3 ::v120(){vfunc_called(this, "_ZN7S1770C34v120Ev");}
void  S1770C3 ::v121(){vfunc_called(this, "_ZN7S1770C34v121Ev");}
void  S1770C3 ::v122(){vfunc_called(this, "_ZN7S1770C34v122Ev");}
void  S1770C3 ::v123(){vfunc_called(this, "_ZN7S1770C34v123Ev");}
void  S1770C3 ::v124(){vfunc_called(this, "_ZN7S1770C34v124Ev");}
void  S1770C3 ::v125(){vfunc_called(this, "_ZN7S1770C34v125Ev");}
void  S1770C3 ::v126(){vfunc_called(this, "_ZN7S1770C34v126Ev");}
void  S1770C3 ::v127(){vfunc_called(this, "_ZN7S1770C34v127Ev");}
void  S1770C3 ::v128(){vfunc_called(this, "_ZN7S1770C34v128Ev");}
void  S1770C3 ::v129(){vfunc_called(this, "_ZN7S1770C34v129Ev");}
void  S1770C3 ::v130(){vfunc_called(this, "_ZN7S1770C34v130Ev");}
void  S1770C3 ::v131(){vfunc_called(this, "_ZN7S1770C34v131Ev");}
S1770C3 ::~S1770C3(){ note_dtor("S1770C3", this);} // tgen
S1770C3 ::S1770C3(){ note_ctor("S1770C3", this);} // tgen

static void Test_S1770C3()
{
  extern Class_Descriptor cd_S1770C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1770C3, buf);
    S1770C3 *dp, &lv = *(dp=new (buf) S1770C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1770C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1770C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1770C3");
    test_class_info(&lv, &cd_S1770C3);
    dp->~S1770C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1770C3(Test_S1770C3, "S1770C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1770C3C1Ev();
extern void _ZN7S1770C3D1Ev();
Name_Map name_map_S1770C3[] = {
  NSPAIR(_ZN7S1770C3C1Ev),
  NSPAIR(_ZN7S1770C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1770C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1770C3[];
extern void _ZN7S1770C3D1Ev();
extern void _ZN7S1770C3D0Ev();
extern void _ZN7S1770C33v10Ev();
extern void _ZN7S1770C33v11Ev();
extern void _ZN7S1770C33v12Ev();
extern void _ZN7S1770C33v13Ev();
extern void _ZN7S1770C33v14Ev();
extern void _ZN7S1770C33v15Ev();
extern void _ZN7S1770C33v16Ev();
extern void _ZN7S1770C33v17Ev();
extern void _ZN7S1770C33v18Ev();
extern void _ZN7S1770C33v19Ev();
extern void _ZN7S1770C33v20Ev();
extern void _ZN7S1770C33v21Ev();
extern void _ZN7S1770C33v22Ev();
extern void _ZN7S1770C33v23Ev();
extern void _ZN7S1770C33v24Ev();
extern void _ZN7S1770C33v25Ev();
extern void _ZN7S1770C33v26Ev();
extern void _ZN7S1770C33v27Ev();
extern void _ZN7S1770C33v28Ev();
extern void _ZN7S1770C33v29Ev();
extern void _ZN7S1770C33v30Ev();
extern void _ZN7S1770C33v31Ev();
extern void _ZN7S1770C33v32Ev();
extern void _ZN7S1770C33v33Ev();
extern void _ZN7S1770C33v34Ev();
extern void _ZN7S1770C33v35Ev();
extern void _ZN7S1770C33v36Ev();
extern void _ZN7S1770C33v37Ev();
extern void _ZN7S1770C33v38Ev();
extern void _ZN7S1770C33v39Ev();
extern void _ZN7S1770C33v40Ev();
extern void _ZN7S1770C33v41Ev();
extern void _ZN7S1770C33v42Ev();
extern void _ZN7S1770C33v43Ev();
extern void _ZN7S1770C33v44Ev();
extern void _ZN7S1770C33v45Ev();
extern void _ZN7S1770C33v46Ev();
extern void _ZN7S1770C33v47Ev();
extern void _ZN7S1770C33v48Ev();
extern void _ZN7S1770C33v49Ev();
extern void _ZN7S1770C33v50Ev();
extern void _ZN7S1770C33v51Ev();
extern void _ZN7S1770C33v52Ev();
extern void _ZN7S1770C33v53Ev();
extern void _ZN7S1770C33v54Ev();
extern void _ZN7S1770C33v55Ev();
extern void _ZN7S1770C33v56Ev();
extern void _ZN7S1770C33v57Ev();
extern void _ZN7S1770C33v58Ev();
extern void _ZN7S1770C33v59Ev();
extern void _ZN7S1770C33v60Ev();
extern void _ZN7S1770C33v61Ev();
extern void _ZN7S1770C33v62Ev();
extern void _ZN7S1770C33v63Ev();
extern void _ZN7S1770C33v64Ev();
extern void _ZN7S1770C33v65Ev();
extern void _ZN7S1770C33v66Ev();
extern void _ZN7S1770C33v67Ev();
extern void _ZN7S1770C33v68Ev();
extern void _ZN7S1770C33v69Ev();
extern void _ZN7S1770C33v70Ev();
extern void _ZN7S1770C33v71Ev();
extern void _ZN7S1770C33v72Ev();
extern void _ZN7S1770C33v73Ev();
extern void _ZN7S1770C33v74Ev();
extern void _ZN7S1770C33v75Ev();
extern void _ZN7S1770C33v76Ev();
extern void _ZN7S1770C33v77Ev();
extern void _ZN7S1770C33v78Ev();
extern void _ZN7S1770C33v79Ev();
extern void _ZN7S1770C33v80Ev();
extern void _ZN7S1770C33v81Ev();
extern void _ZN7S1770C33v82Ev();
extern void _ZN7S1770C33v83Ev();
extern void _ZN7S1770C33v84Ev();
extern void _ZN7S1770C33v85Ev();
extern void _ZN7S1770C33v86Ev();
extern void _ZN7S1770C33v87Ev();
extern void _ZN7S1770C33v88Ev();
extern void _ZN7S1770C33v89Ev();
extern void _ZN7S1770C33v90Ev();
extern void _ZN7S1770C33v91Ev();
extern void _ZN7S1770C33v92Ev();
extern void _ZN7S1770C33v93Ev();
extern void _ZN7S1770C33v94Ev();
extern void _ZN7S1770C33v95Ev();
extern void _ZN7S1770C33v96Ev();
extern void _ZN7S1770C33v97Ev();
extern void _ZN7S1770C33v98Ev();
extern void _ZN7S1770C33v99Ev();
extern void _ZN7S1770C34v100Ev();
extern void _ZN7S1770C34v101Ev();
extern void _ZN7S1770C34v102Ev();
extern void _ZN7S1770C34v103Ev();
extern void _ZN7S1770C34v104Ev();
extern void _ZN7S1770C34v105Ev();
extern void _ZN7S1770C34v106Ev();
extern void _ZN7S1770C34v107Ev();
extern void _ZN7S1770C34v108Ev();
extern void _ZN7S1770C34v109Ev();
extern void _ZN7S1770C34v110Ev();
extern void _ZN7S1770C34v111Ev();
extern void _ZN7S1770C34v112Ev();
extern void _ZN7S1770C34v113Ev();
extern void _ZN7S1770C34v114Ev();
extern void _ZN7S1770C34v115Ev();
extern void _ZN7S1770C34v116Ev();
extern void _ZN7S1770C34v117Ev();
extern void _ZN7S1770C34v118Ev();
extern void _ZN7S1770C34v119Ev();
extern void _ZN7S1770C34v120Ev();
extern void _ZN7S1770C34v121Ev();
extern void _ZN7S1770C34v122Ev();
extern void _ZN7S1770C34v123Ev();
extern void _ZN7S1770C34v124Ev();
extern void _ZN7S1770C34v125Ev();
extern void _ZN7S1770C34v126Ev();
extern void _ZN7S1770C34v127Ev();
extern void _ZN7S1770C34v128Ev();
extern void _ZN7S1770C34v129Ev();
extern void _ZN7S1770C34v130Ev();
extern void _ZN7S1770C34v131Ev();
static  VTBL_ENTRY vtc_S1770C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1770C3[0]),
  (VTBL_ENTRY)&_ZN7S1770C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1770C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v131Ev,
};
extern VTBL_ENTRY _ZTI7S1770C3[];
extern  VTBL_ENTRY _ZTV7S1770C3[];
Class_Descriptor cd_S1770C3 = {  "S1770C3", // class name
  bases_S1770C3, 1,
  &(vtc_S1770C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1770C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1770C3),126, //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  S1770C2  : S1770C3 {
  virtual void  v132(); // _ZN7S1770C24v132Ev
  virtual void  v133(); // _ZN7S1770C24v133Ev
  virtual void  v134(); // _ZN7S1770C24v134Ev
  virtual void  v135(); // _ZN7S1770C24v135Ev
  virtual void  v136(); // _ZN7S1770C24v136Ev
  virtual void  v137(); // _ZN7S1770C24v137Ev
  virtual void  v138(); // _ZN7S1770C24v138Ev
  virtual void  v139(); // _ZN7S1770C24v139Ev
  virtual void  v140(); // _ZN7S1770C24v140Ev
  virtual void  v141(); // _ZN7S1770C24v141Ev
  virtual void  v142(); // _ZN7S1770C24v142Ev
  virtual void  v143(); // _ZN7S1770C24v143Ev
  virtual void  v144(); // _ZN7S1770C24v144Ev
  virtual void  v145(); // _ZN7S1770C24v145Ev
  virtual void  v146(); // _ZN7S1770C24v146Ev
  virtual void  v147(); // _ZN7S1770C24v147Ev
  virtual void  v148(); // _ZN7S1770C24v148Ev
  virtual void  v149(); // _ZN7S1770C24v149Ev
  ~S1770C2(); // tgen
  S1770C2(); // tgen
};
//SIG(-1 S1770C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1770C2 ::v132(){vfunc_called(this, "_ZN7S1770C24v132Ev");}
void  S1770C2 ::v133(){vfunc_called(this, "_ZN7S1770C24v133Ev");}
void  S1770C2 ::v134(){vfunc_called(this, "_ZN7S1770C24v134Ev");}
void  S1770C2 ::v135(){vfunc_called(this, "_ZN7S1770C24v135Ev");}
void  S1770C2 ::v136(){vfunc_called(this, "_ZN7S1770C24v136Ev");}
void  S1770C2 ::v137(){vfunc_called(this, "_ZN7S1770C24v137Ev");}
void  S1770C2 ::v138(){vfunc_called(this, "_ZN7S1770C24v138Ev");}
void  S1770C2 ::v139(){vfunc_called(this, "_ZN7S1770C24v139Ev");}
void  S1770C2 ::v140(){vfunc_called(this, "_ZN7S1770C24v140Ev");}
void  S1770C2 ::v141(){vfunc_called(this, "_ZN7S1770C24v141Ev");}
void  S1770C2 ::v142(){vfunc_called(this, "_ZN7S1770C24v142Ev");}
void  S1770C2 ::v143(){vfunc_called(this, "_ZN7S1770C24v143Ev");}
void  S1770C2 ::v144(){vfunc_called(this, "_ZN7S1770C24v144Ev");}
void  S1770C2 ::v145(){vfunc_called(this, "_ZN7S1770C24v145Ev");}
void  S1770C2 ::v146(){vfunc_called(this, "_ZN7S1770C24v146Ev");}
void  S1770C2 ::v147(){vfunc_called(this, "_ZN7S1770C24v147Ev");}
void  S1770C2 ::v148(){vfunc_called(this, "_ZN7S1770C24v148Ev");}
void  S1770C2 ::v149(){vfunc_called(this, "_ZN7S1770C24v149Ev");}
S1770C2 ::~S1770C2(){ note_dtor("S1770C2", this);} // tgen
S1770C2 ::S1770C2(){ note_ctor("S1770C2", this);} // tgen

static void Test_S1770C2()
{
  extern Class_Descriptor cd_S1770C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1770C2, buf);
    S1770C2 *dp, &lv = *(dp=new (buf) S1770C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1770C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1770C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1770C3*), 0, "S1770C2");
    check_base_class_offset(lv, (S1770C3*), 0, "S1770C2");
    test_class_info(&lv, &cd_S1770C2);
    dp->~S1770C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1770C2(Test_S1770C2, "S1770C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1770C2C1Ev();
extern void _ZN7S1770C2D1Ev();
Name_Map name_map_S1770C2[] = {
  NSPAIR(_ZN7S1770C2C1Ev),
  NSPAIR(_ZN7S1770C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1770C3;
extern VTBL_ENTRY _ZTI7S1770C3[];
extern  VTBL_ENTRY _ZTV7S1770C3[];
static Base_Class bases_S1770C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1770C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1770C2[];
extern void _ZN7S1770C2D1Ev();
extern void _ZN7S1770C2D0Ev();
extern void _ZN7S1770C33v10Ev();
extern void _ZN7S1770C33v11Ev();
extern void _ZN7S1770C33v12Ev();
extern void _ZN7S1770C33v13Ev();
extern void _ZN7S1770C33v14Ev();
extern void _ZN7S1770C33v15Ev();
extern void _ZN7S1770C33v16Ev();
extern void _ZN7S1770C33v17Ev();
extern void _ZN7S1770C33v18Ev();
extern void _ZN7S1770C33v19Ev();
extern void _ZN7S1770C33v20Ev();
extern void _ZN7S1770C33v21Ev();
extern void _ZN7S1770C33v22Ev();
extern void _ZN7S1770C33v23Ev();
extern void _ZN7S1770C33v24Ev();
extern void _ZN7S1770C33v25Ev();
extern void _ZN7S1770C33v26Ev();
extern void _ZN7S1770C33v27Ev();
extern void _ZN7S1770C33v28Ev();
extern void _ZN7S1770C33v29Ev();
extern void _ZN7S1770C33v30Ev();
extern void _ZN7S1770C33v31Ev();
extern void _ZN7S1770C33v32Ev();
extern void _ZN7S1770C33v33Ev();
extern void _ZN7S1770C33v34Ev();
extern void _ZN7S1770C33v35Ev();
extern void _ZN7S1770C33v36Ev();
extern void _ZN7S1770C33v37Ev();
extern void _ZN7S1770C33v38Ev();
extern void _ZN7S1770C33v39Ev();
extern void _ZN7S1770C33v40Ev();
extern void _ZN7S1770C33v41Ev();
extern void _ZN7S1770C33v42Ev();
extern void _ZN7S1770C33v43Ev();
extern void _ZN7S1770C33v44Ev();
extern void _ZN7S1770C33v45Ev();
extern void _ZN7S1770C33v46Ev();
extern void _ZN7S1770C33v47Ev();
extern void _ZN7S1770C33v48Ev();
extern void _ZN7S1770C33v49Ev();
extern void _ZN7S1770C33v50Ev();
extern void _ZN7S1770C33v51Ev();
extern void _ZN7S1770C33v52Ev();
extern void _ZN7S1770C33v53Ev();
extern void _ZN7S1770C33v54Ev();
extern void _ZN7S1770C33v55Ev();
extern void _ZN7S1770C33v56Ev();
extern void _ZN7S1770C33v57Ev();
extern void _ZN7S1770C33v58Ev();
extern void _ZN7S1770C33v59Ev();
extern void _ZN7S1770C33v60Ev();
extern void _ZN7S1770C33v61Ev();
extern void _ZN7S1770C33v62Ev();
extern void _ZN7S1770C33v63Ev();
extern void _ZN7S1770C33v64Ev();
extern void _ZN7S1770C33v65Ev();
extern void _ZN7S1770C33v66Ev();
extern void _ZN7S1770C33v67Ev();
extern void _ZN7S1770C33v68Ev();
extern void _ZN7S1770C33v69Ev();
extern void _ZN7S1770C33v70Ev();
extern void _ZN7S1770C33v71Ev();
extern void _ZN7S1770C33v72Ev();
extern void _ZN7S1770C33v73Ev();
extern void _ZN7S1770C33v74Ev();
extern void _ZN7S1770C33v75Ev();
extern void _ZN7S1770C33v76Ev();
extern void _ZN7S1770C33v77Ev();
extern void _ZN7S1770C33v78Ev();
extern void _ZN7S1770C33v79Ev();
extern void _ZN7S1770C33v80Ev();
extern void _ZN7S1770C33v81Ev();
extern void _ZN7S1770C33v82Ev();
extern void _ZN7S1770C33v83Ev();
extern void _ZN7S1770C33v84Ev();
extern void _ZN7S1770C33v85Ev();
extern void _ZN7S1770C33v86Ev();
extern void _ZN7S1770C33v87Ev();
extern void _ZN7S1770C33v88Ev();
extern void _ZN7S1770C33v89Ev();
extern void _ZN7S1770C33v90Ev();
extern void _ZN7S1770C33v91Ev();
extern void _ZN7S1770C33v92Ev();
extern void _ZN7S1770C33v93Ev();
extern void _ZN7S1770C33v94Ev();
extern void _ZN7S1770C33v95Ev();
extern void _ZN7S1770C33v96Ev();
extern void _ZN7S1770C33v97Ev();
extern void _ZN7S1770C33v98Ev();
extern void _ZN7S1770C33v99Ev();
extern void _ZN7S1770C34v100Ev();
extern void _ZN7S1770C34v101Ev();
extern void _ZN7S1770C34v102Ev();
extern void _ZN7S1770C34v103Ev();
extern void _ZN7S1770C34v104Ev();
extern void _ZN7S1770C34v105Ev();
extern void _ZN7S1770C34v106Ev();
extern void _ZN7S1770C34v107Ev();
extern void _ZN7S1770C34v108Ev();
extern void _ZN7S1770C34v109Ev();
extern void _ZN7S1770C34v110Ev();
extern void _ZN7S1770C34v111Ev();
extern void _ZN7S1770C34v112Ev();
extern void _ZN7S1770C34v113Ev();
extern void _ZN7S1770C34v114Ev();
extern void _ZN7S1770C34v115Ev();
extern void _ZN7S1770C34v116Ev();
extern void _ZN7S1770C34v117Ev();
extern void _ZN7S1770C34v118Ev();
extern void _ZN7S1770C34v119Ev();
extern void _ZN7S1770C34v120Ev();
extern void _ZN7S1770C34v121Ev();
extern void _ZN7S1770C34v122Ev();
extern void _ZN7S1770C34v123Ev();
extern void _ZN7S1770C34v124Ev();
extern void _ZN7S1770C34v125Ev();
extern void _ZN7S1770C34v126Ev();
extern void _ZN7S1770C34v127Ev();
extern void _ZN7S1770C34v128Ev();
extern void _ZN7S1770C34v129Ev();
extern void _ZN7S1770C34v130Ev();
extern void _ZN7S1770C34v131Ev();
extern void _ZN7S1770C24v132Ev();
extern void _ZN7S1770C24v133Ev();
extern void _ZN7S1770C24v134Ev();
extern void _ZN7S1770C24v135Ev();
extern void _ZN7S1770C24v136Ev();
extern void _ZN7S1770C24v137Ev();
extern void _ZN7S1770C24v138Ev();
extern void _ZN7S1770C24v139Ev();
extern void _ZN7S1770C24v140Ev();
extern void _ZN7S1770C24v141Ev();
extern void _ZN7S1770C24v142Ev();
extern void _ZN7S1770C24v143Ev();
extern void _ZN7S1770C24v144Ev();
extern void _ZN7S1770C24v145Ev();
extern void _ZN7S1770C24v146Ev();
extern void _ZN7S1770C24v147Ev();
extern void _ZN7S1770C24v148Ev();
extern void _ZN7S1770C24v149Ev();
static  VTBL_ENTRY vtc_S1770C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1770C2[0]),
  (VTBL_ENTRY)&_ZN7S1770C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1770C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v149Ev,
};
extern VTBL_ENTRY _ZTI7S1770C2[];
extern  VTBL_ENTRY _ZTV7S1770C2[];
Class_Descriptor cd_S1770C2 = {  "S1770C2", // class name
  bases_S1770C2, 2,
  &(vtc_S1770C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1770C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1770C2),144, //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  S1770C1  : S1770C2 {
  virtual void  v1(); // _ZN7S1770C12v1Ev
  virtual void  v2(); // _ZN7S1770C12v2Ev
  virtual void  v3(); // _ZN7S1770C12v3Ev
  virtual void  v4(); // _ZN7S1770C12v4Ev
  virtual void  v5(); // _ZN7S1770C12v5Ev
  virtual void  v6(); // _ZN7S1770C12v6Ev
  virtual void  v7(); // _ZN7S1770C12v7Ev
  virtual void  v8(); // _ZN7S1770C12v8Ev
  virtual void  v9(); // _ZN7S1770C12v9Ev
  ~S1770C1(); // tgen
  S1770C1(); // tgen
};
//SIG(1 S1770C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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 v149} v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1770C1 ::v1(){vfunc_called(this, "_ZN7S1770C12v1Ev");}
void  S1770C1 ::v2(){vfunc_called(this, "_ZN7S1770C12v2Ev");}
void  S1770C1 ::v3(){vfunc_called(this, "_ZN7S1770C12v3Ev");}
void  S1770C1 ::v4(){vfunc_called(this, "_ZN7S1770C12v4Ev");}
void  S1770C1 ::v5(){vfunc_called(this, "_ZN7S1770C12v5Ev");}
void  S1770C1 ::v6(){vfunc_called(this, "_ZN7S1770C12v6Ev");}
void  S1770C1 ::v7(){vfunc_called(this, "_ZN7S1770C12v7Ev");}
void  S1770C1 ::v8(){vfunc_called(this, "_ZN7S1770C12v8Ev");}
void  S1770C1 ::v9(){vfunc_called(this, "_ZN7S1770C12v9Ev");}
S1770C1 ::~S1770C1(){ note_dtor("S1770C1", this);} // tgen
S1770C1 ::S1770C1(){ note_ctor("S1770C1", this);} // tgen

static void Test_S1770C1()
{
  extern Class_Descriptor cd_S1770C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1770C1, buf);
    S1770C1 *dp, &lv = *(dp=new (buf) S1770C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1770C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1770C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1770C3*)(S1770C2*), 0, "S1770C1");
    check_base_class_offset(lv, (S1770C3*)(S1770C2*), 0, "S1770C1");
    check_base_class_offset(lv, (S1770C2*), 0, "S1770C1");
    test_class_info(&lv, &cd_S1770C1);
    dp->~S1770C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1770C1(Test_S1770C1, "S1770C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1770C1C1Ev();
extern void _ZN7S1770C1D1Ev();
Name_Map name_map_S1770C1[] = {
  NSPAIR(_ZN7S1770C1C1Ev),
  NSPAIR(_ZN7S1770C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1770C3;
extern VTBL_ENTRY _ZTI7S1770C3[];
extern  VTBL_ENTRY _ZTV7S1770C3[];
extern Class_Descriptor cd_S1770C2;
extern VTBL_ENTRY _ZTI7S1770C2[];
extern  VTBL_ENTRY _ZTV7S1770C2[];
static Base_Class bases_S1770C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1770C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1770C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1770C1[];
extern void _ZN7S1770C1D1Ev();
extern void _ZN7S1770C1D0Ev();
extern void _ZN7S1770C33v10Ev();
extern void _ZN7S1770C33v11Ev();
extern void _ZN7S1770C33v12Ev();
extern void _ZN7S1770C33v13Ev();
extern void _ZN7S1770C33v14Ev();
extern void _ZN7S1770C33v15Ev();
extern void _ZN7S1770C33v16Ev();
extern void _ZN7S1770C33v17Ev();
extern void _ZN7S1770C33v18Ev();
extern void _ZN7S1770C33v19Ev();
extern void _ZN7S1770C33v20Ev();
extern void _ZN7S1770C33v21Ev();
extern void _ZN7S1770C33v22Ev();
extern void _ZN7S1770C33v23Ev();
extern void _ZN7S1770C33v24Ev();
extern void _ZN7S1770C33v25Ev();
extern void _ZN7S1770C33v26Ev();
extern void _ZN7S1770C33v27Ev();
extern void _ZN7S1770C33v28Ev();
extern void _ZN7S1770C33v29Ev();
extern void _ZN7S1770C33v30Ev();
extern void _ZN7S1770C33v31Ev();
extern void _ZN7S1770C33v32Ev();
extern void _ZN7S1770C33v33Ev();
extern void _ZN7S1770C33v34Ev();
extern void _ZN7S1770C33v35Ev();
extern void _ZN7S1770C33v36Ev();
extern void _ZN7S1770C33v37Ev();
extern void _ZN7S1770C33v38Ev();
extern void _ZN7S1770C33v39Ev();
extern void _ZN7S1770C33v40Ev();
extern void _ZN7S1770C33v41Ev();
extern void _ZN7S1770C33v42Ev();
extern void _ZN7S1770C33v43Ev();
extern void _ZN7S1770C33v44Ev();
extern void _ZN7S1770C33v45Ev();
extern void _ZN7S1770C33v46Ev();
extern void _ZN7S1770C33v47Ev();
extern void _ZN7S1770C33v48Ev();
extern void _ZN7S1770C33v49Ev();
extern void _ZN7S1770C33v50Ev();
extern void _ZN7S1770C33v51Ev();
extern void _ZN7S1770C33v52Ev();
extern void _ZN7S1770C33v53Ev();
extern void _ZN7S1770C33v54Ev();
extern void _ZN7S1770C33v55Ev();
extern void _ZN7S1770C33v56Ev();
extern void _ZN7S1770C33v57Ev();
extern void _ZN7S1770C33v58Ev();
extern void _ZN7S1770C33v59Ev();
extern void _ZN7S1770C33v60Ev();
extern void _ZN7S1770C33v61Ev();
extern void _ZN7S1770C33v62Ev();
extern void _ZN7S1770C33v63Ev();
extern void _ZN7S1770C33v64Ev();
extern void _ZN7S1770C33v65Ev();
extern void _ZN7S1770C33v66Ev();
extern void _ZN7S1770C33v67Ev();
extern void _ZN7S1770C33v68Ev();
extern void _ZN7S1770C33v69Ev();
extern void _ZN7S1770C33v70Ev();
extern void _ZN7S1770C33v71Ev();
extern void _ZN7S1770C33v72Ev();
extern void _ZN7S1770C33v73Ev();
extern void _ZN7S1770C33v74Ev();
extern void _ZN7S1770C33v75Ev();
extern void _ZN7S1770C33v76Ev();
extern void _ZN7S1770C33v77Ev();
extern void _ZN7S1770C33v78Ev();
extern void _ZN7S1770C33v79Ev();
extern void _ZN7S1770C33v80Ev();
extern void _ZN7S1770C33v81Ev();
extern void _ZN7S1770C33v82Ev();
extern void _ZN7S1770C33v83Ev();
extern void _ZN7S1770C33v84Ev();
extern void _ZN7S1770C33v85Ev();
extern void _ZN7S1770C33v86Ev();
extern void _ZN7S1770C33v87Ev();
extern void _ZN7S1770C33v88Ev();
extern void _ZN7S1770C33v89Ev();
extern void _ZN7S1770C33v90Ev();
extern void _ZN7S1770C33v91Ev();
extern void _ZN7S1770C33v92Ev();
extern void _ZN7S1770C33v93Ev();
extern void _ZN7S1770C33v94Ev();
extern void _ZN7S1770C33v95Ev();
extern void _ZN7S1770C33v96Ev();
extern void _ZN7S1770C33v97Ev();
extern void _ZN7S1770C33v98Ev();
extern void _ZN7S1770C33v99Ev();
extern void _ZN7S1770C34v100Ev();
extern void _ZN7S1770C34v101Ev();
extern void _ZN7S1770C34v102Ev();
extern void _ZN7S1770C34v103Ev();
extern void _ZN7S1770C34v104Ev();
extern void _ZN7S1770C34v105Ev();
extern void _ZN7S1770C34v106Ev();
extern void _ZN7S1770C34v107Ev();
extern void _ZN7S1770C34v108Ev();
extern void _ZN7S1770C34v109Ev();
extern void _ZN7S1770C34v110Ev();
extern void _ZN7S1770C34v111Ev();
extern void _ZN7S1770C34v112Ev();
extern void _ZN7S1770C34v113Ev();
extern void _ZN7S1770C34v114Ev();
extern void _ZN7S1770C34v115Ev();
extern void _ZN7S1770C34v116Ev();
extern void _ZN7S1770C34v117Ev();
extern void _ZN7S1770C34v118Ev();
extern void _ZN7S1770C34v119Ev();
extern void _ZN7S1770C34v120Ev();
extern void _ZN7S1770C34v121Ev();
extern void _ZN7S1770C34v122Ev();
extern void _ZN7S1770C34v123Ev();
extern void _ZN7S1770C34v124Ev();
extern void _ZN7S1770C34v125Ev();
extern void _ZN7S1770C34v126Ev();
extern void _ZN7S1770C34v127Ev();
extern void _ZN7S1770C34v128Ev();
extern void _ZN7S1770C34v129Ev();
extern void _ZN7S1770C34v130Ev();
extern void _ZN7S1770C34v131Ev();
extern void _ZN7S1770C24v132Ev();
extern void _ZN7S1770C24v133Ev();
extern void _ZN7S1770C24v134Ev();
extern void _ZN7S1770C24v135Ev();
extern void _ZN7S1770C24v136Ev();
extern void _ZN7S1770C24v137Ev();
extern void _ZN7S1770C24v138Ev();
extern void _ZN7S1770C24v139Ev();
extern void _ZN7S1770C24v140Ev();
extern void _ZN7S1770C24v141Ev();
extern void _ZN7S1770C24v142Ev();
extern void _ZN7S1770C24v143Ev();
extern void _ZN7S1770C24v144Ev();
extern void _ZN7S1770C24v145Ev();
extern void _ZN7S1770C24v146Ev();
extern void _ZN7S1770C24v147Ev();
extern void _ZN7S1770C24v148Ev();
extern void _ZN7S1770C24v149Ev();
extern void _ZN7S1770C12v1Ev();
extern void _ZN7S1770C12v2Ev();
extern void _ZN7S1770C12v3Ev();
extern void _ZN7S1770C12v4Ev();
extern void _ZN7S1770C12v5Ev();
extern void _ZN7S1770C12v6Ev();
extern void _ZN7S1770C12v7Ev();
extern void _ZN7S1770C12v8Ev();
extern void _ZN7S1770C12v9Ev();
static  VTBL_ENTRY vtc_S1770C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1770C1[0]),
  (VTBL_ENTRY)&_ZN7S1770C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1770C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1770C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1770C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1770C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1770C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S1770C1[];
extern  VTBL_ENTRY _ZTV7S1770C1[];
Class_Descriptor cd_S1770C1 = {  "S1770C1", // class name
  bases_S1770C1, 3,
  &(vtc_S1770C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1770C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1770C1),153, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S779C4  : S785C5_nt {
  virtual void  v3(); // _ZN6S779C42v3Ev
  virtual void  v4(); // _ZN6S779C42v4Ev
  virtual void  v5(); // _ZN6S779C42v5Ev
  virtual void  v6(); // _ZN6S779C42v6Ev
  virtual void  v7(); // _ZN6S779C42v7Ev
  virtual void  v8(); // _ZN6S779C42v8Ev
  virtual void  v9(); // _ZN6S779C42v9Ev
  virtual void  v10(); // _ZN6S779C43v10Ev
  virtual void  v11(); // _ZN6S779C43v11Ev
  virtual void  v12(); // _ZN6S779C43v12Ev
  virtual void  v13(); // _ZN6S779C43v13Ev
  virtual void  v14(); // _ZN6S779C43v14Ev
  virtual void  v15(); // _ZN6S779C43v15Ev
  virtual void  v16(); // _ZN6S779C43v16Ev
  virtual void  v17(); // _ZN6S779C43v17Ev
  virtual void  v18(); // _ZN6S779C43v18Ev
  virtual void  v19(); // _ZN6S779C43v19Ev
  virtual void  v20(); // _ZN6S779C43v20Ev
  virtual void  v21(); // _ZN6S779C43v21Ev
  virtual void  v22(); // _ZN6S779C43v22Ev
  virtual void  v23(); // _ZN6S779C43v23Ev
  virtual void  v24(); // _ZN6S779C43v24Ev
  virtual void  v25(); // _ZN6S779C43v25Ev
  virtual void  v26(); // _ZN6S779C43v26Ev
  virtual void  v27(); // _ZN6S779C43v27Ev
  virtual void  v28(); // _ZN6S779C43v28Ev
  virtual void  v29(); // _ZN6S779C43v29Ev
  virtual void  v30(); // _ZN6S779C43v30Ev
  virtual void  v31(); // _ZN6S779C43v31Ev
  virtual void  v32(); // _ZN6S779C43v32Ev
  virtual void  v33(); // _ZN6S779C43v33Ev
  virtual void  v34(); // _ZN6S779C43v34Ev
  virtual void  v35(); // _ZN6S779C43v35Ev
  virtual void  v36(); // _ZN6S779C43v36Ev
  virtual void  v37(); // _ZN6S779C43v37Ev
  virtual void  v38(); // _ZN6S779C43v38Ev
  virtual void  v39(); // _ZN6S779C43v39Ev
  virtual void  v40(); // _ZN6S779C43v40Ev
  virtual void  v41(); // _ZN6S779C43v41Ev
  virtual void  v42(); // _ZN6S779C43v42Ev
  virtual void  v43(); // _ZN6S779C43v43Ev
  virtual void  v44(); // _ZN6S779C43v44Ev
  virtual void  v45(); // _ZN6S779C43v45Ev
  virtual void  v46(); // _ZN6S779C43v46Ev
  virtual void  v47(); // _ZN6S779C43v47Ev
  virtual void  v48(); // _ZN6S779C43v48Ev
  virtual void  v49(); // _ZN6S779C43v49Ev
  virtual void  v50(); // _ZN6S779C43v50Ev
  virtual void  v51(); // _ZN6S779C43v51Ev
  virtual void  v52(); // _ZN6S779C43v52Ev
  virtual void  v53(); // _ZN6S779C43v53Ev
  virtual void  v54(); // _ZN6S779C43v54Ev
  virtual void  v55(); // _ZN6S779C43v55Ev
  virtual void  v56(); // _ZN6S779C43v56Ev
  virtual void  v57(); // _ZN6S779C43v57Ev
  virtual void  v58(); // _ZN6S779C43v58Ev
  virtual void  v59(); // _ZN6S779C43v59Ev
  virtual void  v60(); // _ZN6S779C43v60Ev
  virtual void  v61(); // _ZN6S779C43v61Ev
  virtual void  v62(); // _ZN6S779C43v62Ev
  virtual void  v63(); // _ZN6S779C43v63Ev
  virtual void  v64(); // _ZN6S779C43v64Ev
  virtual void  v65(); // _ZN6S779C43v65Ev
  virtual void  v66(); // _ZN6S779C43v66Ev
  virtual void  v67(); // _ZN6S779C43v67Ev
  virtual void  v68(); // _ZN6S779C43v68Ev
  virtual void  v69(); // _ZN6S779C43v69Ev
  virtual void  v70(); // _ZN6S779C43v70Ev
  virtual void  v71(); // _ZN6S779C43v71Ev
  virtual void  v72(); // _ZN6S779C43v72Ev
  virtual void  v73(); // _ZN6S779C43v73Ev
  virtual void  v74(); // _ZN6S779C43v74Ev
  virtual void  v75(); // _ZN6S779C43v75Ev
  virtual void  v76(); // _ZN6S779C43v76Ev
  virtual void  v77(); // _ZN6S779C43v77Ev
  virtual void  v78(); // _ZN6S779C43v78Ev
  virtual void  v79(); // _ZN6S779C43v79Ev
  virtual void  v80(); // _ZN6S779C43v80Ev
  virtual void  v81(); // _ZN6S779C43v81Ev
  virtual void  v82(); // _ZN6S779C43v82Ev
  virtual void  v83(); // _ZN6S779C43v83Ev
  virtual void  v84(); // _ZN6S779C43v84Ev
  virtual void  v85(); // _ZN6S779C43v85Ev
  virtual void  v86(); // _ZN6S779C43v86Ev
  virtual void  v87(); // _ZN6S779C43v87Ev
  virtual void  v88(); // _ZN6S779C43v88Ev
  virtual void  v89(); // _ZN6S779C43v89Ev
  virtual void  v90(); // _ZN6S779C43v90Ev
  virtual void  v91(); // _ZN6S779C43v91Ev
  virtual void  v92(); // _ZN6S779C43v92Ev
  virtual void  v93(); // _ZN6S779C43v93Ev
  virtual void  v94(); // _ZN6S779C43v94Ev
  virtual void  v95(); // _ZN6S779C43v95Ev
  virtual void  v96(); // _ZN6S779C43v96Ev
  virtual void  v97(); // _ZN6S779C43v97Ev
  virtual void  v98(); // _ZN6S779C43v98Ev
  virtual void  v99(); // _ZN6S779C43v99Ev
  virtual void  v100(); // _ZN6S779C44v100Ev
  virtual void  v101(); // _ZN6S779C44v101Ev
  virtual void  v102(); // _ZN6S779C44v102Ev
  virtual void  v103(); // _ZN6S779C44v103Ev
  virtual void  v104(); // _ZN6S779C44v104Ev
  virtual void  v105(); // _ZN6S779C44v105Ev
  virtual void  v106(); // _ZN6S779C44v106Ev
  virtual void  v107(); // _ZN6S779C44v107Ev
  virtual void  v108(); // _ZN6S779C44v108Ev
  virtual void  v109(); // _ZN6S779C44v109Ev
  virtual void  v110(); // _ZN6S779C44v110Ev
  virtual void  v111(); // _ZN6S779C44v111Ev
  virtual void  v112(); // _ZN6S779C44v112Ev
  virtual void  v113(); // _ZN6S779C44v113Ev
  virtual void  v114(); // _ZN6S779C44v114Ev
  virtual void  v115(); // _ZN6S779C44v115Ev
  virtual void  v116(); // _ZN6S779C44v116Ev
  virtual void  v117(); // _ZN6S779C44v117Ev
  virtual void  v118(); // _ZN6S779C44v118Ev
  virtual void  v119(); // _ZN6S779C44v119Ev
  virtual void  v120(); // _ZN6S779C44v120Ev
  virtual void  v121(); // _ZN6S779C44v121Ev
  virtual void  v122(); // _ZN6S779C44v122Ev
  virtual void  v123(); // _ZN6S779C44v123Ev
  virtual void  v124(); // _ZN6S779C44v124Ev
  ~S779C4(); // tgen
  S779C4(); // tgen
};
//SIG(-1 S779C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S779C4 ::v3(){vfunc_called(this, "_ZN6S779C42v3Ev");}
void  S779C4 ::v4(){vfunc_called(this, "_ZN6S779C42v4Ev");}
void  S779C4 ::v5(){vfunc_called(this, "_ZN6S779C42v5Ev");}
void  S779C4 ::v6(){vfunc_called(this, "_ZN6S779C42v6Ev");}
void  S779C4 ::v7(){vfunc_called(this, "_ZN6S779C42v7Ev");}
void  S779C4 ::v8(){vfunc_called(this, "_ZN6S779C42v8Ev");}
void  S779C4 ::v9(){vfunc_called(this, "_ZN6S779C42v9Ev");}
void  S779C4 ::v10(){vfunc_called(this, "_ZN6S779C43v10Ev");}
void  S779C4 ::v11(){vfunc_called(this, "_ZN6S779C43v11Ev");}
void  S779C4 ::v12(){vfunc_called(this, "_ZN6S779C43v12Ev");}
void  S779C4 ::v13(){vfunc_called(this, "_ZN6S779C43v13Ev");}
void  S779C4 ::v14(){vfunc_called(this, "_ZN6S779C43v14Ev");}
void  S779C4 ::v15(){vfunc_called(this, "_ZN6S779C43v15Ev");}
void  S779C4 ::v16(){vfunc_called(this, "_ZN6S779C43v16Ev");}
void  S779C4 ::v17(){vfunc_called(this, "_ZN6S779C43v17Ev");}
void  S779C4 ::v18(){vfunc_called(this, "_ZN6S779C43v18Ev");}
void  S779C4 ::v19(){vfunc_called(this, "_ZN6S779C43v19Ev");}
void  S779C4 ::v20(){vfunc_called(this, "_ZN6S779C43v20Ev");}
void  S779C4 ::v21(){vfunc_called(this, "_ZN6S779C43v21Ev");}
void  S779C4 ::v22(){vfunc_called(this, "_ZN6S779C43v22Ev");}
void  S779C4 ::v23(){vfunc_called(this, "_ZN6S779C43v23Ev");}
void  S779C4 ::v24(){vfunc_called(this, "_ZN6S779C43v24Ev");}
void  S779C4 ::v25(){vfunc_called(this, "_ZN6S779C43v25Ev");}
void  S779C4 ::v26(){vfunc_called(this, "_ZN6S779C43v26Ev");}
void  S779C4 ::v27(){vfunc_called(this, "_ZN6S779C43v27Ev");}
void  S779C4 ::v28(){vfunc_called(this, "_ZN6S779C43v28Ev");}
void  S779C4 ::v29(){vfunc_called(this, "_ZN6S779C43v29Ev");}
void  S779C4 ::v30(){vfunc_called(this, "_ZN6S779C43v30Ev");}
void  S779C4 ::v31(){vfunc_called(this, "_ZN6S779C43v31Ev");}
void  S779C4 ::v32(){vfunc_called(this, "_ZN6S779C43v32Ev");}
void  S779C4 ::v33(){vfunc_called(this, "_ZN6S779C43v33Ev");}
void  S779C4 ::v34(){vfunc_called(this, "_ZN6S779C43v34Ev");}
void  S779C4 ::v35(){vfunc_called(this, "_ZN6S779C43v35Ev");}
void  S779C4 ::v36(){vfunc_called(this, "_ZN6S779C43v36Ev");}
void  S779C4 ::v37(){vfunc_called(this, "_ZN6S779C43v37Ev");}
void  S779C4 ::v38(){vfunc_called(this, "_ZN6S779C43v38Ev");}
void  S779C4 ::v39(){vfunc_called(this, "_ZN6S779C43v39Ev");}
void  S779C4 ::v40(){vfunc_called(this, "_ZN6S779C43v40Ev");}
void  S779C4 ::v41(){vfunc_called(this, "_ZN6S779C43v41Ev");}
void  S779C4 ::v42(){vfunc_called(this, "_ZN6S779C43v42Ev");}
void  S779C4 ::v43(){vfunc_called(this, "_ZN6S779C43v43Ev");}
void  S779C4 ::v44(){vfunc_called(this, "_ZN6S779C43v44Ev");}
void  S779C4 ::v45(){vfunc_called(this, "_ZN6S779C43v45Ev");}
void  S779C4 ::v46(){vfunc_called(this, "_ZN6S779C43v46Ev");}
void  S779C4 ::v47(){vfunc_called(this, "_ZN6S779C43v47Ev");}
void  S779C4 ::v48(){vfunc_called(this, "_ZN6S779C43v48Ev");}
void  S779C4 ::v49(){vfunc_called(this, "_ZN6S779C43v49Ev");}
void  S779C4 ::v50(){vfunc_called(this, "_ZN6S779C43v50Ev");}
void  S779C4 ::v51(){vfunc_called(this, "_ZN6S779C43v51Ev");}
void  S779C4 ::v52(){vfunc_called(this, "_ZN6S779C43v52Ev");}
void  S779C4 ::v53(){vfunc_called(this, "_ZN6S779C43v53Ev");}
void  S779C4 ::v54(){vfunc_called(this, "_ZN6S779C43v54Ev");}
void  S779C4 ::v55(){vfunc_called(this, "_ZN6S779C43v55Ev");}
void  S779C4 ::v56(){vfunc_called(this, "_ZN6S779C43v56Ev");}
void  S779C4 ::v57(){vfunc_called(this, "_ZN6S779C43v57Ev");}
void  S779C4 ::v58(){vfunc_called(this, "_ZN6S779C43v58Ev");}
void  S779C4 ::v59(){vfunc_called(this, "_ZN6S779C43v59Ev");}
void  S779C4 ::v60(){vfunc_called(this, "_ZN6S779C43v60Ev");}
void  S779C4 ::v61(){vfunc_called(this, "_ZN6S779C43v61Ev");}
void  S779C4 ::v62(){vfunc_called(this, "_ZN6S779C43v62Ev");}
void  S779C4 ::v63(){vfunc_called(this, "_ZN6S779C43v63Ev");}
void  S779C4 ::v64(){vfunc_called(this, "_ZN6S779C43v64Ev");}
void  S779C4 ::v65(){vfunc_called(this, "_ZN6S779C43v65Ev");}
void  S779C4 ::v66(){vfunc_called(this, "_ZN6S779C43v66Ev");}
void  S779C4 ::v67(){vfunc_called(this, "_ZN6S779C43v67Ev");}
void  S779C4 ::v68(){vfunc_called(this, "_ZN6S779C43v68Ev");}
void  S779C4 ::v69(){vfunc_called(this, "_ZN6S779C43v69Ev");}
void  S779C4 ::v70(){vfunc_called(this, "_ZN6S779C43v70Ev");}
void  S779C4 ::v71(){vfunc_called(this, "_ZN6S779C43v71Ev");}
void  S779C4 ::v72(){vfunc_called(this, "_ZN6S779C43v72Ev");}
void  S779C4 ::v73(){vfunc_called(this, "_ZN6S779C43v73Ev");}
void  S779C4 ::v74(){vfunc_called(this, "_ZN6S779C43v74Ev");}
void  S779C4 ::v75(){vfunc_called(this, "_ZN6S779C43v75Ev");}
void  S779C4 ::v76(){vfunc_called(this, "_ZN6S779C43v76Ev");}
void  S779C4 ::v77(){vfunc_called(this, "_ZN6S779C43v77Ev");}
void  S779C4 ::v78(){vfunc_called(this, "_ZN6S779C43v78Ev");}
void  S779C4 ::v79(){vfunc_called(this, "_ZN6S779C43v79Ev");}
void  S779C4 ::v80(){vfunc_called(this, "_ZN6S779C43v80Ev");}
void  S779C4 ::v81(){vfunc_called(this, "_ZN6S779C43v81Ev");}
void  S779C4 ::v82(){vfunc_called(this, "_ZN6S779C43v82Ev");}
void  S779C4 ::v83(){vfunc_called(this, "_ZN6S779C43v83Ev");}
void  S779C4 ::v84(){vfunc_called(this, "_ZN6S779C43v84Ev");}
void  S779C4 ::v85(){vfunc_called(this, "_ZN6S779C43v85Ev");}
void  S779C4 ::v86(){vfunc_called(this, "_ZN6S779C43v86Ev");}
void  S779C4 ::v87(){vfunc_called(this, "_ZN6S779C43v87Ev");}
void  S779C4 ::v88(){vfunc_called(this, "_ZN6S779C43v88Ev");}
void  S779C4 ::v89(){vfunc_called(this, "_ZN6S779C43v89Ev");}
void  S779C4 ::v90(){vfunc_called(this, "_ZN6S779C43v90Ev");}
void  S779C4 ::v91(){vfunc_called(this, "_ZN6S779C43v91Ev");}
void  S779C4 ::v92(){vfunc_called(this, "_ZN6S779C43v92Ev");}
void  S779C4 ::v93(){vfunc_called(this, "_ZN6S779C43v93Ev");}
void  S779C4 ::v94(){vfunc_called(this, "_ZN6S779C43v94Ev");}
void  S779C4 ::v95(){vfunc_called(this, "_ZN6S779C43v95Ev");}
void  S779C4 ::v96(){vfunc_called(this, "_ZN6S779C43v96Ev");}
void  S779C4 ::v97(){vfunc_called(this, "_ZN6S779C43v97Ev");}
void  S779C4 ::v98(){vfunc_called(this, "_ZN6S779C43v98Ev");}
void  S779C4 ::v99(){vfunc_called(this, "_ZN6S779C43v99Ev");}
void  S779C4 ::v100(){vfunc_called(this, "_ZN6S779C44v100Ev");}
void  S779C4 ::v101(){vfunc_called(this, "_ZN6S779C44v101Ev");}
void  S779C4 ::v102(){vfunc_called(this, "_ZN6S779C44v102Ev");}
void  S779C4 ::v103(){vfunc_called(this, "_ZN6S779C44v103Ev");}
void  S779C4 ::v104(){vfunc_called(this, "_ZN6S779C44v104Ev");}
void  S779C4 ::v105(){vfunc_called(this, "_ZN6S779C44v105Ev");}
void  S779C4 ::v106(){vfunc_called(this, "_ZN6S779C44v106Ev");}
void  S779C4 ::v107(){vfunc_called(this, "_ZN6S779C44v107Ev");}
void  S779C4 ::v108(){vfunc_called(this, "_ZN6S779C44v108Ev");}
void  S779C4 ::v109(){vfunc_called(this, "_ZN6S779C44v109Ev");}
void  S779C4 ::v110(){vfunc_called(this, "_ZN6S779C44v110Ev");}
void  S779C4 ::v111(){vfunc_called(this, "_ZN6S779C44v111Ev");}
void  S779C4 ::v112(){vfunc_called(this, "_ZN6S779C44v112Ev");}
void  S779C4 ::v113(){vfunc_called(this, "_ZN6S779C44v113Ev");}
void  S779C4 ::v114(){vfunc_called(this, "_ZN6S779C44v114Ev");}
void  S779C4 ::v115(){vfunc_called(this, "_ZN6S779C44v115Ev");}
void  S779C4 ::v116(){vfunc_called(this, "_ZN6S779C44v116Ev");}
void  S779C4 ::v117(){vfunc_called(this, "_ZN6S779C44v117Ev");}
void  S779C4 ::v118(){vfunc_called(this, "_ZN6S779C44v118Ev");}
void  S779C4 ::v119(){vfunc_called(this, "_ZN6S779C44v119Ev");}
void  S779C4 ::v120(){vfunc_called(this, "_ZN6S779C44v120Ev");}
void  S779C4 ::v121(){vfunc_called(this, "_ZN6S779C44v121Ev");}
void  S779C4 ::v122(){vfunc_called(this, "_ZN6S779C44v122Ev");}
void  S779C4 ::v123(){vfunc_called(this, "_ZN6S779C44v123Ev");}
void  S779C4 ::v124(){vfunc_called(this, "_ZN6S779C44v124Ev");}
S779C4 ::~S779C4(){ note_dtor("S779C4", this);} // tgen
S779C4 ::S779C4(){ note_ctor("S779C4", this);} // tgen

static void Test_S779C4()
{
  extern Class_Descriptor cd_S779C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S779C4, buf);
    S779C4 *dp, &lv = *(dp=new (buf) S779C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S779C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S779C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S779C4");
    test_class_info(&lv, &cd_S779C4);
    dp->~S779C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS779C4(Test_S779C4, "S779C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S779C4C1Ev();
extern void _ZN6S779C4D1Ev();
Name_Map name_map_S779C4[] = {
  NSPAIR(_ZN6S779C4C1Ev),
  NSPAIR(_ZN6S779C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S779C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S779C4[];
extern void _ZN6S779C4D1Ev();
extern void _ZN6S779C4D0Ev();
extern void _ZN6S779C42v3Ev();
extern void _ZN6S779C42v4Ev();
extern void _ZN6S779C42v5Ev();
extern void _ZN6S779C42v6Ev();
extern void _ZN6S779C42v7Ev();
extern void _ZN6S779C42v8Ev();
extern void _ZN6S779C42v9Ev();
extern void _ZN6S779C43v10Ev();
extern void _ZN6S779C43v11Ev();
extern void _ZN6S779C43v12Ev();
extern void _ZN6S779C43v13Ev();
extern void _ZN6S779C43v14Ev();
extern void _ZN6S779C43v15Ev();
extern void _ZN6S779C43v16Ev();
extern void _ZN6S779C43v17Ev();
extern void _ZN6S779C43v18Ev();
extern void _ZN6S779C43v19Ev();
extern void _ZN6S779C43v20Ev();
extern void _ZN6S779C43v21Ev();
extern void _ZN6S779C43v22Ev();
extern void _ZN6S779C43v23Ev();
extern void _ZN6S779C43v24Ev();
extern void _ZN6S779C43v25Ev();
extern void _ZN6S779C43v26Ev();
extern void _ZN6S779C43v27Ev();
extern void _ZN6S779C43v28Ev();
extern void _ZN6S779C43v29Ev();
extern void _ZN6S779C43v30Ev();
extern void _ZN6S779C43v31Ev();
extern void _ZN6S779C43v32Ev();
extern void _ZN6S779C43v33Ev();
extern void _ZN6S779C43v34Ev();
extern void _ZN6S779C43v35Ev();
extern void _ZN6S779C43v36Ev();
extern void _ZN6S779C43v37Ev();
extern void _ZN6S779C43v38Ev();
extern void _ZN6S779C43v39Ev();
extern void _ZN6S779C43v40Ev();
extern void _ZN6S779C43v41Ev();
extern void _ZN6S779C43v42Ev();
extern void _ZN6S779C43v43Ev();
extern void _ZN6S779C43v44Ev();
extern void _ZN6S779C43v45Ev();
extern void _ZN6S779C43v46Ev();
extern void _ZN6S779C43v47Ev();
extern void _ZN6S779C43v48Ev();
extern void _ZN6S779C43v49Ev();
extern void _ZN6S779C43v50Ev();
extern void _ZN6S779C43v51Ev();
extern void _ZN6S779C43v52Ev();
extern void _ZN6S779C43v53Ev();
extern void _ZN6S779C43v54Ev();
extern void _ZN6S779C43v55Ev();
extern void _ZN6S779C43v56Ev();
extern void _ZN6S779C43v57Ev();
extern void _ZN6S779C43v58Ev();
extern void _ZN6S779C43v59Ev();
extern void _ZN6S779C43v60Ev();
extern void _ZN6S779C43v61Ev();
extern void _ZN6S779C43v62Ev();
extern void _ZN6S779C43v63Ev();
extern void _ZN6S779C43v64Ev();
extern void _ZN6S779C43v65Ev();
extern void _ZN6S779C43v66Ev();
extern void _ZN6S779C43v67Ev();
extern void _ZN6S779C43v68Ev();
extern void _ZN6S779C43v69Ev();
extern void _ZN6S779C43v70Ev();
extern void _ZN6S779C43v71Ev();
extern void _ZN6S779C43v72Ev();
extern void _ZN6S779C43v73Ev();
extern void _ZN6S779C43v74Ev();
extern void _ZN6S779C43v75Ev();
extern void _ZN6S779C43v76Ev();
extern void _ZN6S779C43v77Ev();
extern void _ZN6S779C43v78Ev();
extern void _ZN6S779C43v79Ev();
extern void _ZN6S779C43v80Ev();
extern void _ZN6S779C43v81Ev();
extern void _ZN6S779C43v82Ev();
extern void _ZN6S779C43v83Ev();
extern void _ZN6S779C43v84Ev();
extern void _ZN6S779C43v85Ev();
extern void _ZN6S779C43v86Ev();
extern void _ZN6S779C43v87Ev();
extern void _ZN6S779C43v88Ev();
extern void _ZN6S779C43v89Ev();
extern void _ZN6S779C43v90Ev();
extern void _ZN6S779C43v91Ev();
extern void _ZN6S779C43v92Ev();
extern void _ZN6S779C43v93Ev();
extern void _ZN6S779C43v94Ev();
extern void _ZN6S779C43v95Ev();
extern void _ZN6S779C43v96Ev();
extern void _ZN6S779C43v97Ev();
extern void _ZN6S779C43v98Ev();
extern void _ZN6S779C43v99Ev();
extern void _ZN6S779C44v100Ev();
extern void _ZN6S779C44v101Ev();
extern void _ZN6S779C44v102Ev();
extern void _ZN6S779C44v103Ev();
extern void _ZN6S779C44v104Ev();
extern void _ZN6S779C44v105Ev();
extern void _ZN6S779C44v106Ev();
extern void _ZN6S779C44v107Ev();
extern void _ZN6S779C44v108Ev();
extern void _ZN6S779C44v109Ev();
extern void _ZN6S779C44v110Ev();
extern void _ZN6S779C44v111Ev();
extern void _ZN6S779C44v112Ev();
extern void _ZN6S779C44v113Ev();
extern void _ZN6S779C44v114Ev();
extern void _ZN6S779C44v115Ev();
extern void _ZN6S779C44v116Ev();
extern void _ZN6S779C44v117Ev();
extern void _ZN6S779C44v118Ev();
extern void _ZN6S779C44v119Ev();
extern void _ZN6S779C44v120Ev();
extern void _ZN6S779C44v121Ev();
extern void _ZN6S779C44v122Ev();
extern void _ZN6S779C44v123Ev();
extern void _ZN6S779C44v124Ev();
static  VTBL_ENTRY vtc_S779C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S779C4[0]),
  (VTBL_ENTRY)&_ZN6S779C4D1Ev,
  (VTBL_ENTRY)&_ZN6S779C4D0Ev,
  (VTBL_ENTRY)&_ZN6S779C42v3Ev,
  (VTBL_ENTRY)&_ZN6S779C42v4Ev,
  (VTBL_ENTRY)&_ZN6S779C42v5Ev,
  (VTBL_ENTRY)&_ZN6S779C42v6Ev,
  (VTBL_ENTRY)&_ZN6S779C42v7Ev,
  (VTBL_ENTRY)&_ZN6S779C42v8Ev,
  (VTBL_ENTRY)&_ZN6S779C42v9Ev,
  (VTBL_ENTRY)&_ZN6S779C43v10Ev,
  (VTBL_ENTRY)&_ZN6S779C43v11Ev,
  (VTBL_ENTRY)&_ZN6S779C43v12Ev,
  (VTBL_ENTRY)&_ZN6S779C43v13Ev,
  (VTBL_ENTRY)&_ZN6S779C43v14Ev,
  (VTBL_ENTRY)&_ZN6S779C43v15Ev,
  (VTBL_ENTRY)&_ZN6S779C43v16Ev,
  (VTBL_ENTRY)&_ZN6S779C43v17Ev,
  (VTBL_ENTRY)&_ZN6S779C43v18Ev,
  (VTBL_ENTRY)&_ZN6S779C43v19Ev,
  (VTBL_ENTRY)&_ZN6S779C43v20Ev,
  (VTBL_ENTRY)&_ZN6S779C43v21Ev,
  (VTBL_ENTRY)&_ZN6S779C43v22Ev,
  (VTBL_ENTRY)&_ZN6S779C43v23Ev,
  (VTBL_ENTRY)&_ZN6S779C43v24Ev,
  (VTBL_ENTRY)&_ZN6S779C43v25Ev,
  (VTBL_ENTRY)&_ZN6S779C43v26Ev,
  (VTBL_ENTRY)&_ZN6S779C43v27Ev,
  (VTBL_ENTRY)&_ZN6S779C43v28Ev,
  (VTBL_ENTRY)&_ZN6S779C43v29Ev,
  (VTBL_ENTRY)&_ZN6S779C43v30Ev,
  (VTBL_ENTRY)&_ZN6S779C43v31Ev,
  (VTBL_ENTRY)&_ZN6S779C43v32Ev,
  (VTBL_ENTRY)&_ZN6S779C43v33Ev,
  (VTBL_ENTRY)&_ZN6S779C43v34Ev,
  (VTBL_ENTRY)&_ZN6S779C43v35Ev,
  (VTBL_ENTRY)&_ZN6S779C43v36Ev,
  (VTBL_ENTRY)&_ZN6S779C43v37Ev,
  (VTBL_ENTRY)&_ZN6S779C43v38Ev,
  (VTBL_ENTRY)&_ZN6S779C43v39Ev,
  (VTBL_ENTRY)&_ZN6S779C43v40Ev,
  (VTBL_ENTRY)&_ZN6S779C43v41Ev,
  (VTBL_ENTRY)&_ZN6S779C43v42Ev,
  (VTBL_ENTRY)&_ZN6S779C43v43Ev,
  (VTBL_ENTRY)&_ZN6S779C43v44Ev,
  (VTBL_ENTRY)&_ZN6S779C43v45Ev,
  (VTBL_ENTRY)&_ZN6S779C43v46Ev,
  (VTBL_ENTRY)&_ZN6S779C43v47Ev,
  (VTBL_ENTRY)&_ZN6S779C43v48Ev,
  (VTBL_ENTRY)&_ZN6S779C43v49Ev,
  (VTBL_ENTRY)&_ZN6S779C43v50Ev,
  (VTBL_ENTRY)&_ZN6S779C43v51Ev,
  (VTBL_ENTRY)&_ZN6S779C43v52Ev,
  (VTBL_ENTRY)&_ZN6S779C43v53Ev,
  (VTBL_ENTRY)&_ZN6S779C43v54Ev,
  (VTBL_ENTRY)&_ZN6S779C43v55Ev,
  (VTBL_ENTRY)&_ZN6S779C43v56Ev,
  (VTBL_ENTRY)&_ZN6S779C43v57Ev,
  (VTBL_ENTRY)&_ZN6S779C43v58Ev,
  (VTBL_ENTRY)&_ZN6S779C43v59Ev,
  (VTBL_ENTRY)&_ZN6S779C43v60Ev,
  (VTBL_ENTRY)&_ZN6S779C43v61Ev,
  (VTBL_ENTRY)&_ZN6S779C43v62Ev,
  (VTBL_ENTRY)&_ZN6S779C43v63Ev,
  (VTBL_ENTRY)&_ZN6S779C43v64Ev,
  (VTBL_ENTRY)&_ZN6S779C43v65Ev,
  (VTBL_ENTRY)&_ZN6S779C43v66Ev,
  (VTBL_ENTRY)&_ZN6S779C43v67Ev,
  (VTBL_ENTRY)&_ZN6S779C43v68Ev,
  (VTBL_ENTRY)&_ZN6S779C43v69Ev,
  (VTBL_ENTRY)&_ZN6S779C43v70Ev,
  (VTBL_ENTRY)&_ZN6S779C43v71Ev,
  (VTBL_ENTRY)&_ZN6S779C43v72Ev,
  (VTBL_ENTRY)&_ZN6S779C43v73Ev,
  (VTBL_ENTRY)&_ZN6S779C43v74Ev,
  (VTBL_ENTRY)&_ZN6S779C43v75Ev,
  (VTBL_ENTRY)&_ZN6S779C43v76Ev,
  (VTBL_ENTRY)&_ZN6S779C43v77Ev,
  (VTBL_ENTRY)&_ZN6S779C43v78Ev,
  (VTBL_ENTRY)&_ZN6S779C43v79Ev,
  (VTBL_ENTRY)&_ZN6S779C43v80Ev,
  (VTBL_ENTRY)&_ZN6S779C43v81Ev,
  (VTBL_ENTRY)&_ZN6S779C43v82Ev,
  (VTBL_ENTRY)&_ZN6S779C43v83Ev,
  (VTBL_ENTRY)&_ZN6S779C43v84Ev,
  (VTBL_ENTRY)&_ZN6S779C43v85Ev,
  (VTBL_ENTRY)&_ZN6S779C43v86Ev,
  (VTBL_ENTRY)&_ZN6S779C43v87Ev,
  (VTBL_ENTRY)&_ZN6S779C43v88Ev,
  (VTBL_ENTRY)&_ZN6S779C43v89Ev,
  (VTBL_ENTRY)&_ZN6S779C43v90Ev,
  (VTBL_ENTRY)&_ZN6S779C43v91Ev,
  (VTBL_ENTRY)&_ZN6S779C43v92Ev,
  (VTBL_ENTRY)&_ZN6S779C43v93Ev,
  (VTBL_ENTRY)&_ZN6S779C43v94Ev,
  (VTBL_ENTRY)&_ZN6S779C43v95Ev,
  (VTBL_ENTRY)&_ZN6S779C43v96Ev,
  (VTBL_ENTRY)&_ZN6S779C43v97Ev,
  (VTBL_ENTRY)&_ZN6S779C43v98Ev,
  (VTBL_ENTRY)&_ZN6S779C43v99Ev,
  (VTBL_ENTRY)&_ZN6S779C44v100Ev,
  (VTBL_ENTRY)&_ZN6S779C44v101Ev,
  (VTBL_ENTRY)&_ZN6S779C44v102Ev,
  (VTBL_ENTRY)&_ZN6S779C44v103Ev,
  (VTBL_ENTRY)&_ZN6S779C44v104Ev,
  (VTBL_ENTRY)&_ZN6S779C44v105Ev,
  (VTBL_ENTRY)&_ZN6S779C44v106Ev,
  (VTBL_ENTRY)&_ZN6S779C44v107Ev,
  (VTBL_ENTRY)&_ZN6S779C44v108Ev,
  (VTBL_ENTRY)&_ZN6S779C44v109Ev,
  (VTBL_ENTRY)&_ZN6S779C44v110Ev,
  (VTBL_ENTRY)&_ZN6S779C44v111Ev,
  (VTBL_ENTRY)&_ZN6S779C44v112Ev,
  (VTBL_ENTRY)&_ZN6S779C44v113Ev,
  (VTBL_ENTRY)&_ZN6S779C44v114Ev,
  (VTBL_ENTRY)&_ZN6S779C44v115Ev,
  (VTBL_ENTRY)&_ZN6S779C44v116Ev,
  (VTBL_ENTRY)&_ZN6S779C44v117Ev,
  (VTBL_ENTRY)&_ZN6S779C44v118Ev,
  (VTBL_ENTRY)&_ZN6S779C44v119Ev,
  (VTBL_ENTRY)&_ZN6S779C44v120Ev,
  (VTBL_ENTRY)&_ZN6S779C44v121Ev,
  (VTBL_ENTRY)&_ZN6S779C44v122Ev,
  (VTBL_ENTRY)&_ZN6S779C44v123Ev,
  (VTBL_ENTRY)&_ZN6S779C44v124Ev,
};
extern VTBL_ENTRY _ZTI6S779C4[];
extern  VTBL_ENTRY _ZTV6S779C4[];
Class_Descriptor cd_S779C4 = {  "S779C4", // class name
  bases_S779C4, 1,
  &(vtc_S779C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S779C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S779C4),126, //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  S779C3  : S779C4 {
  virtual void  v125(); // _ZN6S779C34v125Ev
  virtual void  v126(); // _ZN6S779C34v126Ev
  virtual void  v127(); // _ZN6S779C34v127Ev
  virtual void  v128(); // _ZN6S779C34v128Ev
  virtual void  v129(); // _ZN6S779C34v129Ev
  virtual void  v130(); // _ZN6S779C34v130Ev
  virtual void  v131(); // _ZN6S779C34v131Ev
  virtual void  v132(); // _ZN6S779C34v132Ev
  virtual void  v133(); // _ZN6S779C34v133Ev
  virtual void  v134(); // _ZN6S779C34v134Ev
  virtual void  v135(); // _ZN6S779C34v135Ev
  virtual void  v136(); // _ZN6S779C34v136Ev
  virtual void  v137(); // _ZN6S779C34v137Ev
  virtual void  v138(); // _ZN6S779C34v138Ev
  virtual void  v139(); // _ZN6S779C34v139Ev
  virtual void  v140(); // _ZN6S779C34v140Ev
  virtual void  v141(); // _ZN6S779C34v141Ev
  virtual void  v142(); // _ZN6S779C34v142Ev
  ~S779C3(); // tgen
  S779C3(); // tgen
};
//SIG(-1 S779C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S779C3 ::v125(){vfunc_called(this, "_ZN6S779C34v125Ev");}
void  S779C3 ::v126(){vfunc_called(this, "_ZN6S779C34v126Ev");}
void  S779C3 ::v127(){vfunc_called(this, "_ZN6S779C34v127Ev");}
void  S779C3 ::v128(){vfunc_called(this, "_ZN6S779C34v128Ev");}
void  S779C3 ::v129(){vfunc_called(this, "_ZN6S779C34v129Ev");}
void  S779C3 ::v130(){vfunc_called(this, "_ZN6S779C34v130Ev");}
void  S779C3 ::v131(){vfunc_called(this, "_ZN6S779C34v131Ev");}
void  S779C3 ::v132(){vfunc_called(this, "_ZN6S779C34v132Ev");}
void  S779C3 ::v133(){vfunc_called(this, "_ZN6S779C34v133Ev");}
void  S779C3 ::v134(){vfunc_called(this, "_ZN6S779C34v134Ev");}
void  S779C3 ::v135(){vfunc_called(this, "_ZN6S779C34v135Ev");}
void  S779C3 ::v136(){vfunc_called(this, "_ZN6S779C34v136Ev");}
void  S779C3 ::v137(){vfunc_called(this, "_ZN6S779C34v137Ev");}
void  S779C3 ::v138(){vfunc_called(this, "_ZN6S779C34v138Ev");}
void  S779C3 ::v139(){vfunc_called(this, "_ZN6S779C34v139Ev");}
void  S779C3 ::v140(){vfunc_called(this, "_ZN6S779C34v140Ev");}
void  S779C3 ::v141(){vfunc_called(this, "_ZN6S779C34v141Ev");}
void  S779C3 ::v142(){vfunc_called(this, "_ZN6S779C34v142Ev");}
S779C3 ::~S779C3(){ note_dtor("S779C3", this);} // tgen
S779C3 ::S779C3(){ note_ctor("S779C3", this);} // tgen

static void Test_S779C3()
{
  extern Class_Descriptor cd_S779C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S779C3, buf);
    S779C3 *dp, &lv = *(dp=new (buf) S779C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S779C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S779C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S779C4*), 0, "S779C3");
    check_base_class_offset(lv, (S779C4*), 0, "S779C3");
    test_class_info(&lv, &cd_S779C3);
    dp->~S779C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS779C3(Test_S779C3, "S779C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S779C3C1Ev();
extern void _ZN6S779C3D1Ev();
Name_Map name_map_S779C3[] = {
  NSPAIR(_ZN6S779C3C1Ev),
  NSPAIR(_ZN6S779C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S779C4;
extern VTBL_ENTRY _ZTI6S779C4[];
extern  VTBL_ENTRY _ZTV6S779C4[];
static Base_Class bases_S779C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S779C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S779C3[];
extern void _ZN6S779C3D1Ev();
extern void _ZN6S779C3D0Ev();
extern void _ZN6S779C42v3Ev();
extern void _ZN6S779C42v4Ev();
extern void _ZN6S779C42v5Ev();
extern void _ZN6S779C42v6Ev();
extern void _ZN6S779C42v7Ev();
extern void _ZN6S779C42v8Ev();
extern void _ZN6S779C42v9Ev();
extern void _ZN6S779C43v10Ev();
extern void _ZN6S779C43v11Ev();
extern void _ZN6S779C43v12Ev();
extern void _ZN6S779C43v13Ev();
extern void _ZN6S779C43v14Ev();
extern void _ZN6S779C43v15Ev();
extern void _ZN6S779C43v16Ev();
extern void _ZN6S779C43v17Ev();
extern void _ZN6S779C43v18Ev();
extern void _ZN6S779C43v19Ev();
extern void _ZN6S779C43v20Ev();
extern void _ZN6S779C43v21Ev();
extern void _ZN6S779C43v22Ev();
extern void _ZN6S779C43v23Ev();
extern void _ZN6S779C43v24Ev();
extern void _ZN6S779C43v25Ev();
extern void _ZN6S779C43v26Ev();
extern void _ZN6S779C43v27Ev();
extern void _ZN6S779C43v28Ev();
extern void _ZN6S779C43v29Ev();
extern void _ZN6S779C43v30Ev();
extern void _ZN6S779C43v31Ev();
extern void _ZN6S779C43v32Ev();
extern void _ZN6S779C43v33Ev();
extern void _ZN6S779C43v34Ev();
extern void _ZN6S779C43v35Ev();
extern void _ZN6S779C43v36Ev();
extern void _ZN6S779C43v37Ev();
extern void _ZN6S779C43v38Ev();
extern void _ZN6S779C43v39Ev();
extern void _ZN6S779C43v40Ev();
extern void _ZN6S779C43v41Ev();
extern void _ZN6S779C43v42Ev();
extern void _ZN6S779C43v43Ev();
extern void _ZN6S779C43v44Ev();
extern void _ZN6S779C43v45Ev();
extern void _ZN6S779C43v46Ev();
extern void _ZN6S779C43v47Ev();
extern void _ZN6S779C43v48Ev();
extern void _ZN6S779C43v49Ev();
extern void _ZN6S779C43v50Ev();
extern void _ZN6S779C43v51Ev();
extern void _ZN6S779C43v52Ev();
extern void _ZN6S779C43v53Ev();
extern void _ZN6S779C43v54Ev();
extern void _ZN6S779C43v55Ev();
extern void _ZN6S779C43v56Ev();
extern void _ZN6S779C43v57Ev();
extern void _ZN6S779C43v58Ev();
extern void _ZN6S779C43v59Ev();
extern void _ZN6S779C43v60Ev();
extern void _ZN6S779C43v61Ev();
extern void _ZN6S779C43v62Ev();
extern void _ZN6S779C43v63Ev();
extern void _ZN6S779C43v64Ev();
extern void _ZN6S779C43v65Ev();
extern void _ZN6S779C43v66Ev();
extern void _ZN6S779C43v67Ev();
extern void _ZN6S779C43v68Ev();
extern void _ZN6S779C43v69Ev();
extern void _ZN6S779C43v70Ev();
extern void _ZN6S779C43v71Ev();
extern void _ZN6S779C43v72Ev();
extern void _ZN6S779C43v73Ev();
extern void _ZN6S779C43v74Ev();
extern void _ZN6S779C43v75Ev();
extern void _ZN6S779C43v76Ev();
extern void _ZN6S779C43v77Ev();
extern void _ZN6S779C43v78Ev();
extern void _ZN6S779C43v79Ev();
extern void _ZN6S779C43v80Ev();
extern void _ZN6S779C43v81Ev();
extern void _ZN6S779C43v82Ev();
extern void _ZN6S779C43v83Ev();
extern void _ZN6S779C43v84Ev();
extern void _ZN6S779C43v85Ev();
extern void _ZN6S779C43v86Ev();
extern void _ZN6S779C43v87Ev();
extern void _ZN6S779C43v88Ev();
extern void _ZN6S779C43v89Ev();
extern void _ZN6S779C43v90Ev();
extern void _ZN6S779C43v91Ev();
extern void _ZN6S779C43v92Ev();
extern void _ZN6S779C43v93Ev();
extern void _ZN6S779C43v94Ev();
extern void _ZN6S779C43v95Ev();
extern void _ZN6S779C43v96Ev();
extern void _ZN6S779C43v97Ev();
extern void _ZN6S779C43v98Ev();
extern void _ZN6S779C43v99Ev();
extern void _ZN6S779C44v100Ev();
extern void _ZN6S779C44v101Ev();
extern void _ZN6S779C44v102Ev();
extern void _ZN6S779C44v103Ev();
extern void _ZN6S779C44v104Ev();
extern void _ZN6S779C44v105Ev();
extern void _ZN6S779C44v106Ev();
extern void _ZN6S779C44v107Ev();
extern void _ZN6S779C44v108Ev();
extern void _ZN6S779C44v109Ev();
extern void _ZN6S779C44v110Ev();
extern void _ZN6S779C44v111Ev();
extern void _ZN6S779C44v112Ev();
extern void _ZN6S779C44v113Ev();
extern void _ZN6S779C44v114Ev();
extern void _ZN6S779C44v115Ev();
extern void _ZN6S779C44v116Ev();
extern void _ZN6S779C44v117Ev();
extern void _ZN6S779C44v118Ev();
extern void _ZN6S779C44v119Ev();
extern void _ZN6S779C44v120Ev();
extern void _ZN6S779C44v121Ev();
extern void _ZN6S779C44v122Ev();
extern void _ZN6S779C44v123Ev();
extern void _ZN6S779C44v124Ev();
extern void _ZN6S779C34v125Ev();
extern void _ZN6S779C34v126Ev();
extern void _ZN6S779C34v127Ev();
extern void _ZN6S779C34v128Ev();
extern void _ZN6S779C34v129Ev();
extern void _ZN6S779C34v130Ev();
extern void _ZN6S779C34v131Ev();
extern void _ZN6S779C34v132Ev();
extern void _ZN6S779C34v133Ev();
extern void _ZN6S779C34v134Ev();
extern void _ZN6S779C34v135Ev();
extern void _ZN6S779C34v136Ev();
extern void _ZN6S779C34v137Ev();
extern void _ZN6S779C34v138Ev();
extern void _ZN6S779C34v139Ev();
extern void _ZN6S779C34v140Ev();
extern void _ZN6S779C34v141Ev();
extern void _ZN6S779C34v142Ev();
static  VTBL_ENTRY vtc_S779C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S779C3[0]),
  (VTBL_ENTRY)&_ZN6S779C3D1Ev,
  (VTBL_ENTRY)&_ZN6S779C3D0Ev,
  (VTBL_ENTRY)&_ZN6S779C42v3Ev,
  (VTBL_ENTRY)&_ZN6S779C42v4Ev,
  (VTBL_ENTRY)&_ZN6S779C42v5Ev,
  (VTBL_ENTRY)&_ZN6S779C42v6Ev,
  (VTBL_ENTRY)&_ZN6S779C42v7Ev,
  (VTBL_ENTRY)&_ZN6S779C42v8Ev,
  (VTBL_ENTRY)&_ZN6S779C42v9Ev,
  (VTBL_ENTRY)&_ZN6S779C43v10Ev,
  (VTBL_ENTRY)&_ZN6S779C43v11Ev,
  (VTBL_ENTRY)&_ZN6S779C43v12Ev,
  (VTBL_ENTRY)&_ZN6S779C43v13Ev,
  (VTBL_ENTRY)&_ZN6S779C43v14Ev,
  (VTBL_ENTRY)&_ZN6S779C43v15Ev,
  (VTBL_ENTRY)&_ZN6S779C43v16Ev,
  (VTBL_ENTRY)&_ZN6S779C43v17Ev,
  (VTBL_ENTRY)&_ZN6S779C43v18Ev,
  (VTBL_ENTRY)&_ZN6S779C43v19Ev,
  (VTBL_ENTRY)&_ZN6S779C43v20Ev,
  (VTBL_ENTRY)&_ZN6S779C43v21Ev,
  (VTBL_ENTRY)&_ZN6S779C43v22Ev,
  (VTBL_ENTRY)&_ZN6S779C43v23Ev,
  (VTBL_ENTRY)&_ZN6S779C43v24Ev,
  (VTBL_ENTRY)&_ZN6S779C43v25Ev,
  (VTBL_ENTRY)&_ZN6S779C43v26Ev,
  (VTBL_ENTRY)&_ZN6S779C43v27Ev,
  (VTBL_ENTRY)&_ZN6S779C43v28Ev,
  (VTBL_ENTRY)&_ZN6S779C43v29Ev,
  (VTBL_ENTRY)&_ZN6S779C43v30Ev,
  (VTBL_ENTRY)&_ZN6S779C43v31Ev,
  (VTBL_ENTRY)&_ZN6S779C43v32Ev,
  (VTBL_ENTRY)&_ZN6S779C43v33Ev,
  (VTBL_ENTRY)&_ZN6S779C43v34Ev,
  (VTBL_ENTRY)&_ZN6S779C43v35Ev,
  (VTBL_ENTRY)&_ZN6S779C43v36Ev,
  (VTBL_ENTRY)&_ZN6S779C43v37Ev,
  (VTBL_ENTRY)&_ZN6S779C43v38Ev,
  (VTBL_ENTRY)&_ZN6S779C43v39Ev,
  (VTBL_ENTRY)&_ZN6S779C43v40Ev,
  (VTBL_ENTRY)&_ZN6S779C43v41Ev,
  (VTBL_ENTRY)&_ZN6S779C43v42Ev,
  (VTBL_ENTRY)&_ZN6S779C43v43Ev,
  (VTBL_ENTRY)&_ZN6S779C43v44Ev,
  (VTBL_ENTRY)&_ZN6S779C43v45Ev,
  (VTBL_ENTRY)&_ZN6S779C43v46Ev,
  (VTBL_ENTRY)&_ZN6S779C43v47Ev,
  (VTBL_ENTRY)&_ZN6S779C43v48Ev,
  (VTBL_ENTRY)&_ZN6S779C43v49Ev,
  (VTBL_ENTRY)&_ZN6S779C43v50Ev,
  (VTBL_ENTRY)&_ZN6S779C43v51Ev,
  (VTBL_ENTRY)&_ZN6S779C43v52Ev,
  (VTBL_ENTRY)&_ZN6S779C43v53Ev,
  (VTBL_ENTRY)&_ZN6S779C43v54Ev,
  (VTBL_ENTRY)&_ZN6S779C43v55Ev,
  (VTBL_ENTRY)&_ZN6S779C43v56Ev,
  (VTBL_ENTRY)&_ZN6S779C43v57Ev,
  (VTBL_ENTRY)&_ZN6S779C43v58Ev,
  (VTBL_ENTRY)&_ZN6S779C43v59Ev,
  (VTBL_ENTRY)&_ZN6S779C43v60Ev,
  (VTBL_ENTRY)&_ZN6S779C43v61Ev,
  (VTBL_ENTRY)&_ZN6S779C43v62Ev,
  (VTBL_ENTRY)&_ZN6S779C43v63Ev,
  (VTBL_ENTRY)&_ZN6S779C43v64Ev,
  (VTBL_ENTRY)&_ZN6S779C43v65Ev,
  (VTBL_ENTRY)&_ZN6S779C43v66Ev,
  (VTBL_ENTRY)&_ZN6S779C43v67Ev,
  (VTBL_ENTRY)&_ZN6S779C43v68Ev,
  (VTBL_ENTRY)&_ZN6S779C43v69Ev,
  (VTBL_ENTRY)&_ZN6S779C43v70Ev,
  (VTBL_ENTRY)&_ZN6S779C43v71Ev,
  (VTBL_ENTRY)&_ZN6S779C43v72Ev,
  (VTBL_ENTRY)&_ZN6S779C43v73Ev,
  (VTBL_ENTRY)&_ZN6S779C43v74Ev,
  (VTBL_ENTRY)&_ZN6S779C43v75Ev,
  (VTBL_ENTRY)&_ZN6S779C43v76Ev,
  (VTBL_ENTRY)&_ZN6S779C43v77Ev,
  (VTBL_ENTRY)&_ZN6S779C43v78Ev,
  (VTBL_ENTRY)&_ZN6S779C43v79Ev,
  (VTBL_ENTRY)&_ZN6S779C43v80Ev,
  (VTBL_ENTRY)&_ZN6S779C43v81Ev,
  (VTBL_ENTRY)&_ZN6S779C43v82Ev,
  (VTBL_ENTRY)&_ZN6S779C43v83Ev,
  (VTBL_ENTRY)&_ZN6S779C43v84Ev,
  (VTBL_ENTRY)&_ZN6S779C43v85Ev,
  (VTBL_ENTRY)&_ZN6S779C43v86Ev,
  (VTBL_ENTRY)&_ZN6S779C43v87Ev,
  (VTBL_ENTRY)&_ZN6S779C43v88Ev,
  (VTBL_ENTRY)&_ZN6S779C43v89Ev,
  (VTBL_ENTRY)&_ZN6S779C43v90Ev,
  (VTBL_ENTRY)&_ZN6S779C43v91Ev,
  (VTBL_ENTRY)&_ZN6S779C43v92Ev,
  (VTBL_ENTRY)&_ZN6S779C43v93Ev,
  (VTBL_ENTRY)&_ZN6S779C43v94Ev,
  (VTBL_ENTRY)&_ZN6S779C43v95Ev,
  (VTBL_ENTRY)&_ZN6S779C43v96Ev,
  (VTBL_ENTRY)&_ZN6S779C43v97Ev,
  (VTBL_ENTRY)&_ZN6S779C43v98Ev,
  (VTBL_ENTRY)&_ZN6S779C43v99Ev,
  (VTBL_ENTRY)&_ZN6S779C44v100Ev,
  (VTBL_ENTRY)&_ZN6S779C44v101Ev,
  (VTBL_ENTRY)&_ZN6S779C44v102Ev,
  (VTBL_ENTRY)&_ZN6S779C44v103Ev,
  (VTBL_ENTRY)&_ZN6S779C44v104Ev,
  (VTBL_ENTRY)&_ZN6S779C44v105Ev,
  (VTBL_ENTRY)&_ZN6S779C44v106Ev,
  (VTBL_ENTRY)&_ZN6S779C44v107Ev,
  (VTBL_ENTRY)&_ZN6S779C44v108Ev,
  (VTBL_ENTRY)&_ZN6S779C44v109Ev,
  (VTBL_ENTRY)&_ZN6S779C44v110Ev,
  (VTBL_ENTRY)&_ZN6S779C44v111Ev,
  (VTBL_ENTRY)&_ZN6S779C44v112Ev,
  (VTBL_ENTRY)&_ZN6S779C44v113Ev,
  (VTBL_ENTRY)&_ZN6S779C44v114Ev,
  (VTBL_ENTRY)&_ZN6S779C44v115Ev,
  (VTBL_ENTRY)&_ZN6S779C44v116Ev,
  (VTBL_ENTRY)&_ZN6S779C44v117Ev,
  (VTBL_ENTRY)&_ZN6S779C44v118Ev,
  (VTBL_ENTRY)&_ZN6S779C44v119Ev,
  (VTBL_ENTRY)&_ZN6S779C44v120Ev,
  (VTBL_ENTRY)&_ZN6S779C44v121Ev,
  (VTBL_ENTRY)&_ZN6S779C44v122Ev,
  (VTBL_ENTRY)&_ZN6S779C44v123Ev,
  (VTBL_ENTRY)&_ZN6S779C44v124Ev,
  (VTBL_ENTRY)&_ZN6S779C34v125Ev,
  (VTBL_ENTRY)&_ZN6S779C34v126Ev,
  (VTBL_ENTRY)&_ZN6S779C34v127Ev,
  (VTBL_ENTRY)&_ZN6S779C34v128Ev,
  (VTBL_ENTRY)&_ZN6S779C34v129Ev,
  (VTBL_ENTRY)&_ZN6S779C34v130Ev,
  (VTBL_ENTRY)&_ZN6S779C34v131Ev,
  (VTBL_ENTRY)&_ZN6S779C34v132Ev,
  (VTBL_ENTRY)&_ZN6S779C34v133Ev,
  (VTBL_ENTRY)&_ZN6S779C34v134Ev,
  (VTBL_ENTRY)&_ZN6S779C34v135Ev,
  (VTBL_ENTRY)&_ZN6S779C34v136Ev,
  (VTBL_ENTRY)&_ZN6S779C34v137Ev,
  (VTBL_ENTRY)&_ZN6S779C34v138Ev,
  (VTBL_ENTRY)&_ZN6S779C34v139Ev,
  (VTBL_ENTRY)&_ZN6S779C34v140Ev,
  (VTBL_ENTRY)&_ZN6S779C34v141Ev,
  (VTBL_ENTRY)&_ZN6S779C34v142Ev,
};
extern VTBL_ENTRY _ZTI6S779C3[];
extern  VTBL_ENTRY _ZTV6S779C3[];
Class_Descriptor cd_S779C3 = {  "S779C3", // class name
  bases_S779C3, 2,
  &(vtc_S779C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S779C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S779C3),144, //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  S779C2  : S779C3 {
  virtual void  v143(); // _ZN6S779C24v143Ev
  virtual void  v144(); // _ZN6S779C24v144Ev
  virtual void  v145(); // _ZN6S779C24v145Ev
  virtual void  v146(); // _ZN6S779C24v146Ev
  virtual void  v147(); // _ZN6S779C24v147Ev
  virtual void  v148(); // _ZN6S779C24v148Ev
  ~S779C2(); // tgen
  S779C2(); // tgen
};
//SIG(-1 S779C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6}


void  S779C2 ::v143(){vfunc_called(this, "_ZN6S779C24v143Ev");}
void  S779C2 ::v144(){vfunc_called(this, "_ZN6S779C24v144Ev");}
void  S779C2 ::v145(){vfunc_called(this, "_ZN6S779C24v145Ev");}
void  S779C2 ::v146(){vfunc_called(this, "_ZN6S779C24v146Ev");}
void  S779C2 ::v147(){vfunc_called(this, "_ZN6S779C24v147Ev");}
void  S779C2 ::v148(){vfunc_called(this, "_ZN6S779C24v148Ev");}
S779C2 ::~S779C2(){ note_dtor("S779C2", this);} // tgen
S779C2 ::S779C2(){ note_ctor("S779C2", this);} // tgen

static void Test_S779C2()
{
  extern Class_Descriptor cd_S779C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S779C2, buf);
    S779C2 *dp, &lv = *(dp=new (buf) S779C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S779C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S779C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S779C4*)(S779C3*), 0, "S779C2");
    check_base_class_offset(lv, (S779C4*)(S779C3*), 0, "S779C2");
    check_base_class_offset(lv, (S779C3*), 0, "S779C2");
    test_class_info(&lv, &cd_S779C2);
    dp->~S779C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS779C2(Test_S779C2, "S779C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S779C2C1Ev();
extern void _ZN6S779C2D1Ev();
Name_Map name_map_S779C2[] = {
  NSPAIR(_ZN6S779C2C1Ev),
  NSPAIR(_ZN6S779C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S779C4;
extern VTBL_ENTRY _ZTI6S779C4[];
extern  VTBL_ENTRY _ZTV6S779C4[];
extern Class_Descriptor cd_S779C3;
extern VTBL_ENTRY _ZTI6S779C3[];
extern  VTBL_ENTRY _ZTV6S779C3[];
static Base_Class bases_S779C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S779C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S779C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S779C2[];
extern void _ZN6S779C2D1Ev();
extern void _ZN6S779C2D0Ev();
extern void _ZN6S779C42v3Ev();
extern void _ZN6S779C42v4Ev();
extern void _ZN6S779C42v5Ev();
extern void _ZN6S779C42v6Ev();
extern void _ZN6S779C42v7Ev();
extern void _ZN6S779C42v8Ev();
extern void _ZN6S779C42v9Ev();
extern void _ZN6S779C43v10Ev();
extern void _ZN6S779C43v11Ev();
extern void _ZN6S779C43v12Ev();
extern void _ZN6S779C43v13Ev();
extern void _ZN6S779C43v14Ev();
extern void _ZN6S779C43v15Ev();
extern void _ZN6S779C43v16Ev();
extern void _ZN6S779C43v17Ev();
extern void _ZN6S779C43v18Ev();
extern void _ZN6S779C43v19Ev();
extern void _ZN6S779C43v20Ev();
extern void _ZN6S779C43v21Ev();
extern void _ZN6S779C43v22Ev();
extern void _ZN6S779C43v23Ev();
extern void _ZN6S779C43v24Ev();
extern void _ZN6S779C43v25Ev();
extern void _ZN6S779C43v26Ev();
extern void _ZN6S779C43v27Ev();
extern void _ZN6S779C43v28Ev();
extern void _ZN6S779C43v29Ev();
extern void _ZN6S779C43v30Ev();
extern void _ZN6S779C43v31Ev();
extern void _ZN6S779C43v32Ev();
extern void _ZN6S779C43v33Ev();
extern void _ZN6S779C43v34Ev();
extern void _ZN6S779C43v35Ev();
extern void _ZN6S779C43v36Ev();
extern void _ZN6S779C43v37Ev();
extern void _ZN6S779C43v38Ev();
extern void _ZN6S779C43v39Ev();
extern void _ZN6S779C43v40Ev();
extern void _ZN6S779C43v41Ev();
extern void _ZN6S779C43v42Ev();
extern void _ZN6S779C43v43Ev();
extern void _ZN6S779C43v44Ev();
extern void _ZN6S779C43v45Ev();
extern void _ZN6S779C43v46Ev();
extern void _ZN6S779C43v47Ev();
extern void _ZN6S779C43v48Ev();
extern void _ZN6S779C43v49Ev();
extern void _ZN6S779C43v50Ev();
extern void _ZN6S779C43v51Ev();
extern void _ZN6S779C43v52Ev();
extern void _ZN6S779C43v53Ev();
extern void _ZN6S779C43v54Ev();
extern void _ZN6S779C43v55Ev();
extern void _ZN6S779C43v56Ev();
extern void _ZN6S779C43v57Ev();
extern void _ZN6S779C43v58Ev();
extern void _ZN6S779C43v59Ev();
extern void _ZN6S779C43v60Ev();
extern void _ZN6S779C43v61Ev();
extern void _ZN6S779C43v62Ev();
extern void _ZN6S779C43v63Ev();
extern void _ZN6S779C43v64Ev();
extern void _ZN6S779C43v65Ev();
extern void _ZN6S779C43v66Ev();
extern void _ZN6S779C43v67Ev();
extern void _ZN6S779C43v68Ev();
extern void _ZN6S779C43v69Ev();
extern void _ZN6S779C43v70Ev();
extern void _ZN6S779C43v71Ev();
extern void _ZN6S779C43v72Ev();
extern void _ZN6S779C43v73Ev();
extern void _ZN6S779C43v74Ev();
extern void _ZN6S779C43v75Ev();
extern void _ZN6S779C43v76Ev();
extern void _ZN6S779C43v77Ev();
extern void _ZN6S779C43v78Ev();
extern void _ZN6S779C43v79Ev();
extern void _ZN6S779C43v80Ev();
extern void _ZN6S779C43v81Ev();
extern void _ZN6S779C43v82Ev();
extern void _ZN6S779C43v83Ev();
extern void _ZN6S779C43v84Ev();
extern void _ZN6S779C43v85Ev();
extern void _ZN6S779C43v86Ev();
extern void _ZN6S779C43v87Ev();
extern void _ZN6S779C43v88Ev();
extern void _ZN6S779C43v89Ev();
extern void _ZN6S779C43v90Ev();
extern void _ZN6S779C43v91Ev();
extern void _ZN6S779C43v92Ev();
extern void _ZN6S779C43v93Ev();
extern void _ZN6S779C43v94Ev();
extern void _ZN6S779C43v95Ev();
extern void _ZN6S779C43v96Ev();
extern void _ZN6S779C43v97Ev();
extern void _ZN6S779C43v98Ev();
extern void _ZN6S779C43v99Ev();
extern void _ZN6S779C44v100Ev();
extern void _ZN6S779C44v101Ev();
extern void _ZN6S779C44v102Ev();
extern void _ZN6S779C44v103Ev();
extern void _ZN6S779C44v104Ev();
extern void _ZN6S779C44v105Ev();
extern void _ZN6S779C44v106Ev();
extern void _ZN6S779C44v107Ev();
extern void _ZN6S779C44v108Ev();
extern void _ZN6S779C44v109Ev();
extern void _ZN6S779C44v110Ev();
extern void _ZN6S779C44v111Ev();
extern void _ZN6S779C44v112Ev();
extern void _ZN6S779C44v113Ev();
extern void _ZN6S779C44v114Ev();
extern void _ZN6S779C44v115Ev();
extern void _ZN6S779C44v116Ev();
extern void _ZN6S779C44v117Ev();
extern void _ZN6S779C44v118Ev();
extern void _ZN6S779C44v119Ev();
extern void _ZN6S779C44v120Ev();
extern void _ZN6S779C44v121Ev();
extern void _ZN6S779C44v122Ev();
extern void _ZN6S779C44v123Ev();
extern void _ZN6S779C44v124Ev();
extern void _ZN6S779C34v125Ev();
extern void _ZN6S779C34v126Ev();
extern void _ZN6S779C34v127Ev();
extern void _ZN6S779C34v128Ev();
extern void _ZN6S779C34v129Ev();
extern void _ZN6S779C34v130Ev();
extern void _ZN6S779C34v131Ev();
extern void _ZN6S779C34v132Ev();
extern void _ZN6S779C34v133Ev();
extern void _ZN6S779C34v134Ev();
extern void _ZN6S779C34v135Ev();
extern void _ZN6S779C34v136Ev();
extern void _ZN6S779C34v137Ev();
extern void _ZN6S779C34v138Ev();
extern void _ZN6S779C34v139Ev();
extern void _ZN6S779C34v140Ev();
extern void _ZN6S779C34v141Ev();
extern void _ZN6S779C34v142Ev();
extern void _ZN6S779C24v143Ev();
extern void _ZN6S779C24v144Ev();
extern void _ZN6S779C24v145Ev();
extern void _ZN6S779C24v146Ev();
extern void _ZN6S779C24v147Ev();
extern void _ZN6S779C24v148Ev();
static  VTBL_ENTRY vtc_S779C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S779C2[0]),
  (VTBL_ENTRY)&_ZN6S779C2D1Ev,
  (VTBL_ENTRY)&_ZN6S779C2D0Ev,
  (VTBL_ENTRY)&_ZN6S779C42v3Ev,
  (VTBL_ENTRY)&_ZN6S779C42v4Ev,
  (VTBL_ENTRY)&_ZN6S779C42v5Ev,
  (VTBL_ENTRY)&_ZN6S779C42v6Ev,
  (VTBL_ENTRY)&_ZN6S779C42v7Ev,
  (VTBL_ENTRY)&_ZN6S779C42v8Ev,
  (VTBL_ENTRY)&_ZN6S779C42v9Ev,
  (VTBL_ENTRY)&_ZN6S779C43v10Ev,
  (VTBL_ENTRY)&_ZN6S779C43v11Ev,
  (VTBL_ENTRY)&_ZN6S779C43v12Ev,
  (VTBL_ENTRY)&_ZN6S779C43v13Ev,
  (VTBL_ENTRY)&_ZN6S779C43v14Ev,
  (VTBL_ENTRY)&_ZN6S779C43v15Ev,
  (VTBL_ENTRY)&_ZN6S779C43v16Ev,
  (VTBL_ENTRY)&_ZN6S779C43v17Ev,
  (VTBL_ENTRY)&_ZN6S779C43v18Ev,
  (VTBL_ENTRY)&_ZN6S779C43v19Ev,
  (VTBL_ENTRY)&_ZN6S779C43v20Ev,
  (VTBL_ENTRY)&_ZN6S779C43v21Ev,
  (VTBL_ENTRY)&_ZN6S779C43v22Ev,
  (VTBL_ENTRY)&_ZN6S779C43v23Ev,
  (VTBL_ENTRY)&_ZN6S779C43v24Ev,
  (VTBL_ENTRY)&_ZN6S779C43v25Ev,
  (VTBL_ENTRY)&_ZN6S779C43v26Ev,
  (VTBL_ENTRY)&_ZN6S779C43v27Ev,
  (VTBL_ENTRY)&_ZN6S779C43v28Ev,
  (VTBL_ENTRY)&_ZN6S779C43v29Ev,
  (VTBL_ENTRY)&_ZN6S779C43v30Ev,
  (VTBL_ENTRY)&_ZN6S779C43v31Ev,
  (VTBL_ENTRY)&_ZN6S779C43v32Ev,
  (VTBL_ENTRY)&_ZN6S779C43v33Ev,
  (VTBL_ENTRY)&_ZN6S779C43v34Ev,
  (VTBL_ENTRY)&_ZN6S779C43v35Ev,
  (VTBL_ENTRY)&_ZN6S779C43v36Ev,
  (VTBL_ENTRY)&_ZN6S779C43v37Ev,
  (VTBL_ENTRY)&_ZN6S779C43v38Ev,
  (VTBL_ENTRY)&_ZN6S779C43v39Ev,
  (VTBL_ENTRY)&_ZN6S779C43v40Ev,
  (VTBL_ENTRY)&_ZN6S779C43v41Ev,
  (VTBL_ENTRY)&_ZN6S779C43v42Ev,
  (VTBL_ENTRY)&_ZN6S779C43v43Ev,
  (VTBL_ENTRY)&_ZN6S779C43v44Ev,
  (VTBL_ENTRY)&_ZN6S779C43v45Ev,
  (VTBL_ENTRY)&_ZN6S779C43v46Ev,
  (VTBL_ENTRY)&_ZN6S779C43v47Ev,
  (VTBL_ENTRY)&_ZN6S779C43v48Ev,
  (VTBL_ENTRY)&_ZN6S779C43v49Ev,
  (VTBL_ENTRY)&_ZN6S779C43v50Ev,
  (VTBL_ENTRY)&_ZN6S779C43v51Ev,
  (VTBL_ENTRY)&_ZN6S779C43v52Ev,
  (VTBL_ENTRY)&_ZN6S779C43v53Ev,
  (VTBL_ENTRY)&_ZN6S779C43v54Ev,
  (VTBL_ENTRY)&_ZN6S779C43v55Ev,
  (VTBL_ENTRY)&_ZN6S779C43v56Ev,
  (VTBL_ENTRY)&_ZN6S779C43v57Ev,
  (VTBL_ENTRY)&_ZN6S779C43v58Ev,
  (VTBL_ENTRY)&_ZN6S779C43v59Ev,
  (VTBL_ENTRY)&_ZN6S779C43v60Ev,
  (VTBL_ENTRY)&_ZN6S779C43v61Ev,
  (VTBL_ENTRY)&_ZN6S779C43v62Ev,
  (VTBL_ENTRY)&_ZN6S779C43v63Ev,
  (VTBL_ENTRY)&_ZN6S779C43v64Ev,
  (VTBL_ENTRY)&_ZN6S779C43v65Ev,
  (VTBL_ENTRY)&_ZN6S779C43v66Ev,
  (VTBL_ENTRY)&_ZN6S779C43v67Ev,
  (VTBL_ENTRY)&_ZN6S779C43v68Ev,
  (VTBL_ENTRY)&_ZN6S779C43v69Ev,
  (VTBL_ENTRY)&_ZN6S779C43v70Ev,
  (VTBL_ENTRY)&_ZN6S779C43v71Ev,
  (VTBL_ENTRY)&_ZN6S779C43v72Ev,
  (VTBL_ENTRY)&_ZN6S779C43v73Ev,
  (VTBL_ENTRY)&_ZN6S779C43v74Ev,
  (VTBL_ENTRY)&_ZN6S779C43v75Ev,
  (VTBL_ENTRY)&_ZN6S779C43v76Ev,
  (VTBL_ENTRY)&_ZN6S779C43v77Ev,
  (VTBL_ENTRY)&_ZN6S779C43v78Ev,
  (VTBL_ENTRY)&_ZN6S779C43v79Ev,
  (VTBL_ENTRY)&_ZN6S779C43v80Ev,
  (VTBL_ENTRY)&_ZN6S779C43v81Ev,
  (VTBL_ENTRY)&_ZN6S779C43v82Ev,
  (VTBL_ENTRY)&_ZN6S779C43v83Ev,
  (VTBL_ENTRY)&_ZN6S779C43v84Ev,
  (VTBL_ENTRY)&_ZN6S779C43v85Ev,
  (VTBL_ENTRY)&_ZN6S779C43v86Ev,
  (VTBL_ENTRY)&_ZN6S779C43v87Ev,
  (VTBL_ENTRY)&_ZN6S779C43v88Ev,
  (VTBL_ENTRY)&_ZN6S779C43v89Ev,
  (VTBL_ENTRY)&_ZN6S779C43v90Ev,
  (VTBL_ENTRY)&_ZN6S779C43v91Ev,
  (VTBL_ENTRY)&_ZN6S779C43v92Ev,
  (VTBL_ENTRY)&_ZN6S779C43v93Ev,
  (VTBL_ENTRY)&_ZN6S779C43v94Ev,
  (VTBL_ENTRY)&_ZN6S779C43v95Ev,
  (VTBL_ENTRY)&_ZN6S779C43v96Ev,
  (VTBL_ENTRY)&_ZN6S779C43v97Ev,
  (VTBL_ENTRY)&_ZN6S779C43v98Ev,
  (VTBL_ENTRY)&_ZN6S779C43v99Ev,
  (VTBL_ENTRY)&_ZN6S779C44v100Ev,
  (VTBL_ENTRY)&_ZN6S779C44v101Ev,
  (VTBL_ENTRY)&_ZN6S779C44v102Ev,
  (VTBL_ENTRY)&_ZN6S779C44v103Ev,
  (VTBL_ENTRY)&_ZN6S779C44v104Ev,
  (VTBL_ENTRY)&_ZN6S779C44v105Ev,
  (VTBL_ENTRY)&_ZN6S779C44v106Ev,
  (VTBL_ENTRY)&_ZN6S779C44v107Ev,
  (VTBL_ENTRY)&_ZN6S779C44v108Ev,
  (VTBL_ENTRY)&_ZN6S779C44v109Ev,
  (VTBL_ENTRY)&_ZN6S779C44v110Ev,
  (VTBL_ENTRY)&_ZN6S779C44v111Ev,
  (VTBL_ENTRY)&_ZN6S779C44v112Ev,
  (VTBL_ENTRY)&_ZN6S779C44v113Ev,
  (VTBL_ENTRY)&_ZN6S779C44v114Ev,
  (VTBL_ENTRY)&_ZN6S779C44v115Ev,
  (VTBL_ENTRY)&_ZN6S779C44v116Ev,
  (VTBL_ENTRY)&_ZN6S779C44v117Ev,
  (VTBL_ENTRY)&_ZN6S779C44v118Ev,
  (VTBL_ENTRY)&_ZN6S779C44v119Ev,
  (VTBL_ENTRY)&_ZN6S779C44v120Ev,
  (VTBL_ENTRY)&_ZN6S779C44v121Ev,
  (VTBL_ENTRY)&_ZN6S779C44v122Ev,
  (VTBL_ENTRY)&_ZN6S779C44v123Ev,
  (VTBL_ENTRY)&_ZN6S779C44v124Ev,
  (VTBL_ENTRY)&_ZN6S779C34v125Ev,
  (VTBL_ENTRY)&_ZN6S779C34v126Ev,
  (VTBL_ENTRY)&_ZN6S779C34v127Ev,
  (VTBL_ENTRY)&_ZN6S779C34v128Ev,
  (VTBL_ENTRY)&_ZN6S779C34v129Ev,
  (VTBL_ENTRY)&_ZN6S779C34v130Ev,
  (VTBL_ENTRY)&_ZN6S779C34v131Ev,
  (VTBL_ENTRY)&_ZN6S779C34v132Ev,
  (VTBL_ENTRY)&_ZN6S779C34v133Ev,
  (VTBL_ENTRY)&_ZN6S779C34v134Ev,
  (VTBL_ENTRY)&_ZN6S779C34v135Ev,
  (VTBL_ENTRY)&_ZN6S779C34v136Ev,
  (VTBL_ENTRY)&_ZN6S779C34v137Ev,
  (VTBL_ENTRY)&_ZN6S779C34v138Ev,
  (VTBL_ENTRY)&_ZN6S779C34v139Ev,
  (VTBL_ENTRY)&_ZN6S779C34v140Ev,
  (VTBL_ENTRY)&_ZN6S779C34v141Ev,
  (VTBL_ENTRY)&_ZN6S779C34v142Ev,
  (VTBL_ENTRY)&_ZN6S779C24v143Ev,
  (VTBL_ENTRY)&_ZN6S779C24v144Ev,
  (VTBL_ENTRY)&_ZN6S779C24v145Ev,
  (VTBL_ENTRY)&_ZN6S779C24v146Ev,
  (VTBL_ENTRY)&_ZN6S779C24v147Ev,
  (VTBL_ENTRY)&_ZN6S779C24v148Ev,
};
extern VTBL_ENTRY _ZTI6S779C2[];
extern  VTBL_ENTRY _ZTV6S779C2[];
Class_Descriptor cd_S779C2 = {  "S779C2", // class name
  bases_S779C2, 3,
  &(vtc_S779C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S779C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S779C2),150, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S779C1  : S779C2 {
  virtual void  v1(); // _ZN6S779C12v1Ev
  virtual void  v2(); // _ZN6S779C12v2Ev
  ~S779C1(); // tgen
  S779C1(); // tgen
};
//SIG(1 S779C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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} v1 v2}


void  S779C1 ::v1(){vfunc_called(this, "_ZN6S779C12v1Ev");}
void  S779C1 ::v2(){vfunc_called(this, "_ZN6S779C12v2Ev");}
S779C1 ::~S779C1(){ note_dtor("S779C1", this);} // tgen
S779C1 ::S779C1(){ note_ctor("S779C1", this);} // tgen

static void Test_S779C1()
{
  extern Class_Descriptor cd_S779C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S779C1, buf);
    S779C1 *dp, &lv = *(dp=new (buf) S779C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S779C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S779C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S779C4*)(S779C3*)(S779C2*), 0, "S779C1");
    check_base_class_offset(lv, (S779C4*)(S779C3*)(S779C2*), 0, "S779C1");
    check_base_class_offset(lv, (S779C3*)(S779C2*), 0, "S779C1");
    check_base_class_offset(lv, (S779C2*), 0, "S779C1");
    test_class_info(&lv, &cd_S779C1);
    dp->~S779C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS779C1(Test_S779C1, "S779C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S779C1C1Ev();
extern void _ZN6S779C1D1Ev();
Name_Map name_map_S779C1[] = {
  NSPAIR(_ZN6S779C1C1Ev),
  NSPAIR(_ZN6S779C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S779C4;
extern VTBL_ENTRY _ZTI6S779C4[];
extern  VTBL_ENTRY _ZTV6S779C4[];
extern Class_Descriptor cd_S779C3;
extern VTBL_ENTRY _ZTI6S779C3[];
extern  VTBL_ENTRY _ZTV6S779C3[];
extern Class_Descriptor cd_S779C2;
extern VTBL_ENTRY _ZTI6S779C2[];
extern  VTBL_ENTRY _ZTV6S779C2[];
static Base_Class bases_S779C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S779C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S779C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S779C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S779C1[];
extern void _ZN6S779C1D1Ev();
extern void _ZN6S779C1D0Ev();
extern void _ZN6S779C42v3Ev();
extern void _ZN6S779C42v4Ev();
extern void _ZN6S779C42v5Ev();
extern void _ZN6S779C42v6Ev();
extern void _ZN6S779C42v7Ev();
extern void _ZN6S779C42v8Ev();
extern void _ZN6S779C42v9Ev();
extern void _ZN6S779C43v10Ev();
extern void _ZN6S779C43v11Ev();
extern void _ZN6S779C43v12Ev();
extern void _ZN6S779C43v13Ev();
extern void _ZN6S779C43v14Ev();
extern void _ZN6S779C43v15Ev();
extern void _ZN6S779C43v16Ev();
extern void _ZN6S779C43v17Ev();
extern void _ZN6S779C43v18Ev();
extern void _ZN6S779C43v19Ev();
extern void _ZN6S779C43v20Ev();
extern void _ZN6S779C43v21Ev();
extern void _ZN6S779C43v22Ev();
extern void _ZN6S779C43v23Ev();
extern void _ZN6S779C43v24Ev();
extern void _ZN6S779C43v25Ev();
extern void _ZN6S779C43v26Ev();
extern void _ZN6S779C43v27Ev();
extern void _ZN6S779C43v28Ev();
extern void _ZN6S779C43v29Ev();
extern void _ZN6S779C43v30Ev();
extern void _ZN6S779C43v31Ev();
extern void _ZN6S779C43v32Ev();
extern void _ZN6S779C43v33Ev();
extern void _ZN6S779C43v34Ev();
extern void _ZN6S779C43v35Ev();
extern void _ZN6S779C43v36Ev();
extern void _ZN6S779C43v37Ev();
extern void _ZN6S779C43v38Ev();
extern void _ZN6S779C43v39Ev();
extern void _ZN6S779C43v40Ev();
extern void _ZN6S779C43v41Ev();
extern void _ZN6S779C43v42Ev();
extern void _ZN6S779C43v43Ev();
extern void _ZN6S779C43v44Ev();
extern void _ZN6S779C43v45Ev();
extern void _ZN6S779C43v46Ev();
extern void _ZN6S779C43v47Ev();
extern void _ZN6S779C43v48Ev();
extern void _ZN6S779C43v49Ev();
extern void _ZN6S779C43v50Ev();
extern void _ZN6S779C43v51Ev();
extern void _ZN6S779C43v52Ev();
extern void _ZN6S779C43v53Ev();
extern void _ZN6S779C43v54Ev();
extern void _ZN6S779C43v55Ev();
extern void _ZN6S779C43v56Ev();
extern void _ZN6S779C43v57Ev();
extern void _ZN6S779C43v58Ev();
extern void _ZN6S779C43v59Ev();
extern void _ZN6S779C43v60Ev();
extern void _ZN6S779C43v61Ev();
extern void _ZN6S779C43v62Ev();
extern void _ZN6S779C43v63Ev();
extern void _ZN6S779C43v64Ev();
extern void _ZN6S779C43v65Ev();
extern void _ZN6S779C43v66Ev();
extern void _ZN6S779C43v67Ev();
extern void _ZN6S779C43v68Ev();
extern void _ZN6S779C43v69Ev();
extern void _ZN6S779C43v70Ev();
extern void _ZN6S779C43v71Ev();
extern void _ZN6S779C43v72Ev();
extern void _ZN6S779C43v73Ev();
extern void _ZN6S779C43v74Ev();
extern void _ZN6S779C43v75Ev();
extern void _ZN6S779C43v76Ev();
extern void _ZN6S779C43v77Ev();
extern void _ZN6S779C43v78Ev();
extern void _ZN6S779C43v79Ev();
extern void _ZN6S779C43v80Ev();
extern void _ZN6S779C43v81Ev();
extern void _ZN6S779C43v82Ev();
extern void _ZN6S779C43v83Ev();
extern void _ZN6S779C43v84Ev();
extern void _ZN6S779C43v85Ev();
extern void _ZN6S779C43v86Ev();
extern void _ZN6S779C43v87Ev();
extern void _ZN6S779C43v88Ev();
extern void _ZN6S779C43v89Ev();
extern void _ZN6S779C43v90Ev();
extern void _ZN6S779C43v91Ev();
extern void _ZN6S779C43v92Ev();
extern void _ZN6S779C43v93Ev();
extern void _ZN6S779C43v94Ev();
extern void _ZN6S779C43v95Ev();
extern void _ZN6S779C43v96Ev();
extern void _ZN6S779C43v97Ev();
extern void _ZN6S779C43v98Ev();
extern void _ZN6S779C43v99Ev();
extern void _ZN6S779C44v100Ev();
extern void _ZN6S779C44v101Ev();
extern void _ZN6S779C44v102Ev();
extern void _ZN6S779C44v103Ev();
extern void _ZN6S779C44v104Ev();
extern void _ZN6S779C44v105Ev();
extern void _ZN6S779C44v106Ev();
extern void _ZN6S779C44v107Ev();
extern void _ZN6S779C44v108Ev();
extern void _ZN6S779C44v109Ev();
extern void _ZN6S779C44v110Ev();
extern void _ZN6S779C44v111Ev();
extern void _ZN6S779C44v112Ev();
extern void _ZN6S779C44v113Ev();
extern void _ZN6S779C44v114Ev();
extern void _ZN6S779C44v115Ev();
extern void _ZN6S779C44v116Ev();
extern void _ZN6S779C44v117Ev();
extern void _ZN6S779C44v118Ev();
extern void _ZN6S779C44v119Ev();
extern void _ZN6S779C44v120Ev();
extern void _ZN6S779C44v121Ev();
extern void _ZN6S779C44v122Ev();
extern void _ZN6S779C44v123Ev();
extern void _ZN6S779C44v124Ev();
extern void _ZN6S779C34v125Ev();
extern void _ZN6S779C34v126Ev();
extern void _ZN6S779C34v127Ev();
extern void _ZN6S779C34v128Ev();
extern void _ZN6S779C34v129Ev();
extern void _ZN6S779C34v130Ev();
extern void _ZN6S779C34v131Ev();
extern void _ZN6S779C34v132Ev();
extern void _ZN6S779C34v133Ev();
extern void _ZN6S779C34v134Ev();
extern void _ZN6S779C34v135Ev();
extern void _ZN6S779C34v136Ev();
extern void _ZN6S779C34v137Ev();
extern void _ZN6S779C34v138Ev();
extern void _ZN6S779C34v139Ev();
extern void _ZN6S779C34v140Ev();
extern void _ZN6S779C34v141Ev();
extern void _ZN6S779C34v142Ev();
extern void _ZN6S779C24v143Ev();
extern void _ZN6S779C24v144Ev();
extern void _ZN6S779C24v145Ev();
extern void _ZN6S779C24v146Ev();
extern void _ZN6S779C24v147Ev();
extern void _ZN6S779C24v148Ev();
extern void _ZN6S779C12v1Ev();
extern void _ZN6S779C12v2Ev();
static  VTBL_ENTRY vtc_S779C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S779C1[0]),
  (VTBL_ENTRY)&_ZN6S779C1D1Ev,
  (VTBL_ENTRY)&_ZN6S779C1D0Ev,
  (VTBL_ENTRY)&_ZN6S779C42v3Ev,
  (VTBL_ENTRY)&_ZN6S779C42v4Ev,
  (VTBL_ENTRY)&_ZN6S779C42v5Ev,
  (VTBL_ENTRY)&_ZN6S779C42v6Ev,
  (VTBL_ENTRY)&_ZN6S779C42v7Ev,
  (VTBL_ENTRY)&_ZN6S779C42v8Ev,
  (VTBL_ENTRY)&_ZN6S779C42v9Ev,
  (VTBL_ENTRY)&_ZN6S779C43v10Ev,
  (VTBL_ENTRY)&_ZN6S779C43v11Ev,
  (VTBL_ENTRY)&_ZN6S779C43v12Ev,
  (VTBL_ENTRY)&_ZN6S779C43v13Ev,
  (VTBL_ENTRY)&_ZN6S779C43v14Ev,
  (VTBL_ENTRY)&_ZN6S779C43v15Ev,
  (VTBL_ENTRY)&_ZN6S779C43v16Ev,
  (VTBL_ENTRY)&_ZN6S779C43v17Ev,
  (VTBL_ENTRY)&_ZN6S779C43v18Ev,
  (VTBL_ENTRY)&_ZN6S779C43v19Ev,
  (VTBL_ENTRY)&_ZN6S779C43v20Ev,
  (VTBL_ENTRY)&_ZN6S779C43v21Ev,
  (VTBL_ENTRY)&_ZN6S779C43v22Ev,
  (VTBL_ENTRY)&_ZN6S779C43v23Ev,
  (VTBL_ENTRY)&_ZN6S779C43v24Ev,
  (VTBL_ENTRY)&_ZN6S779C43v25Ev,
  (VTBL_ENTRY)&_ZN6S779C43v26Ev,
  (VTBL_ENTRY)&_ZN6S779C43v27Ev,
  (VTBL_ENTRY)&_ZN6S779C43v28Ev,
  (VTBL_ENTRY)&_ZN6S779C43v29Ev,
  (VTBL_ENTRY)&_ZN6S779C43v30Ev,
  (VTBL_ENTRY)&_ZN6S779C43v31Ev,
  (VTBL_ENTRY)&_ZN6S779C43v32Ev,
  (VTBL_ENTRY)&_ZN6S779C43v33Ev,
  (VTBL_ENTRY)&_ZN6S779C43v34Ev,
  (VTBL_ENTRY)&_ZN6S779C43v35Ev,
  (VTBL_ENTRY)&_ZN6S779C43v36Ev,
  (VTBL_ENTRY)&_ZN6S779C43v37Ev,
  (VTBL_ENTRY)&_ZN6S779C43v38Ev,
  (VTBL_ENTRY)&_ZN6S779C43v39Ev,
  (VTBL_ENTRY)&_ZN6S779C43v40Ev,
  (VTBL_ENTRY)&_ZN6S779C43v41Ev,
  (VTBL_ENTRY)&_ZN6S779C43v42Ev,
  (VTBL_ENTRY)&_ZN6S779C43v43Ev,
  (VTBL_ENTRY)&_ZN6S779C43v44Ev,
  (VTBL_ENTRY)&_ZN6S779C43v45Ev,
  (VTBL_ENTRY)&_ZN6S779C43v46Ev,
  (VTBL_ENTRY)&_ZN6S779C43v47Ev,
  (VTBL_ENTRY)&_ZN6S779C43v48Ev,
  (VTBL_ENTRY)&_ZN6S779C43v49Ev,
  (VTBL_ENTRY)&_ZN6S779C43v50Ev,
  (VTBL_ENTRY)&_ZN6S779C43v51Ev,
  (VTBL_ENTRY)&_ZN6S779C43v52Ev,
  (VTBL_ENTRY)&_ZN6S779C43v53Ev,
  (VTBL_ENTRY)&_ZN6S779C43v54Ev,
  (VTBL_ENTRY)&_ZN6S779C43v55Ev,
  (VTBL_ENTRY)&_ZN6S779C43v56Ev,
  (VTBL_ENTRY)&_ZN6S779C43v57Ev,
  (VTBL_ENTRY)&_ZN6S779C43v58Ev,
  (VTBL_ENTRY)&_ZN6S779C43v59Ev,
  (VTBL_ENTRY)&_ZN6S779C43v60Ev,
  (VTBL_ENTRY)&_ZN6S779C43v61Ev,
  (VTBL_ENTRY)&_ZN6S779C43v62Ev,
  (VTBL_ENTRY)&_ZN6S779C43v63Ev,
  (VTBL_ENTRY)&_ZN6S779C43v64Ev,
  (VTBL_ENTRY)&_ZN6S779C43v65Ev,
  (VTBL_ENTRY)&_ZN6S779C43v66Ev,
  (VTBL_ENTRY)&_ZN6S779C43v67Ev,
  (VTBL_ENTRY)&_ZN6S779C43v68Ev,
  (VTBL_ENTRY)&_ZN6S779C43v69Ev,
  (VTBL_ENTRY)&_ZN6S779C43v70Ev,
  (VTBL_ENTRY)&_ZN6S779C43v71Ev,
  (VTBL_ENTRY)&_ZN6S779C43v72Ev,
  (VTBL_ENTRY)&_ZN6S779C43v73Ev,
  (VTBL_ENTRY)&_ZN6S779C43v74Ev,
  (VTBL_ENTRY)&_ZN6S779C43v75Ev,
  (VTBL_ENTRY)&_ZN6S779C43v76Ev,
  (VTBL_ENTRY)&_ZN6S779C43v77Ev,
  (VTBL_ENTRY)&_ZN6S779C43v78Ev,
  (VTBL_ENTRY)&_ZN6S779C43v79Ev,
  (VTBL_ENTRY)&_ZN6S779C43v80Ev,
  (VTBL_ENTRY)&_ZN6S779C43v81Ev,
  (VTBL_ENTRY)&_ZN6S779C43v82Ev,
  (VTBL_ENTRY)&_ZN6S779C43v83Ev,
  (VTBL_ENTRY)&_ZN6S779C43v84Ev,
  (VTBL_ENTRY)&_ZN6S779C43v85Ev,
  (VTBL_ENTRY)&_ZN6S779C43v86Ev,
  (VTBL_ENTRY)&_ZN6S779C43v87Ev,
  (VTBL_ENTRY)&_ZN6S779C43v88Ev,
  (VTBL_ENTRY)&_ZN6S779C43v89Ev,
  (VTBL_ENTRY)&_ZN6S779C43v90Ev,
  (VTBL_ENTRY)&_ZN6S779C43v91Ev,
  (VTBL_ENTRY)&_ZN6S779C43v92Ev,
  (VTBL_ENTRY)&_ZN6S779C43v93Ev,
  (VTBL_ENTRY)&_ZN6S779C43v94Ev,
  (VTBL_ENTRY)&_ZN6S779C43v95Ev,
  (VTBL_ENTRY)&_ZN6S779C43v96Ev,
  (VTBL_ENTRY)&_ZN6S779C43v97Ev,
  (VTBL_ENTRY)&_ZN6S779C43v98Ev,
  (VTBL_ENTRY)&_ZN6S779C43v99Ev,
  (VTBL_ENTRY)&_ZN6S779C44v100Ev,
  (VTBL_ENTRY)&_ZN6S779C44v101Ev,
  (VTBL_ENTRY)&_ZN6S779C44v102Ev,
  (VTBL_ENTRY)&_ZN6S779C44v103Ev,
  (VTBL_ENTRY)&_ZN6S779C44v104Ev,
  (VTBL_ENTRY)&_ZN6S779C44v105Ev,
  (VTBL_ENTRY)&_ZN6S779C44v106Ev,
  (VTBL_ENTRY)&_ZN6S779C44v107Ev,
  (VTBL_ENTRY)&_ZN6S779C44v108Ev,
  (VTBL_ENTRY)&_ZN6S779C44v109Ev,
  (VTBL_ENTRY)&_ZN6S779C44v110Ev,
  (VTBL_ENTRY)&_ZN6S779C44v111Ev,
  (VTBL_ENTRY)&_ZN6S779C44v112Ev,
  (VTBL_ENTRY)&_ZN6S779C44v113Ev,
  (VTBL_ENTRY)&_ZN6S779C44v114Ev,
  (VTBL_ENTRY)&_ZN6S779C44v115Ev,
  (VTBL_ENTRY)&_ZN6S779C44v116Ev,
  (VTBL_ENTRY)&_ZN6S779C44v117Ev,
  (VTBL_ENTRY)&_ZN6S779C44v118Ev,
  (VTBL_ENTRY)&_ZN6S779C44v119Ev,
  (VTBL_ENTRY)&_ZN6S779C44v120Ev,
  (VTBL_ENTRY)&_ZN6S779C44v121Ev,
  (VTBL_ENTRY)&_ZN6S779C44v122Ev,
  (VTBL_ENTRY)&_ZN6S779C44v123Ev,
  (VTBL_ENTRY)&_ZN6S779C44v124Ev,
  (VTBL_ENTRY)&_ZN6S779C34v125Ev,
  (VTBL_ENTRY)&_ZN6S779C34v126Ev,
  (VTBL_ENTRY)&_ZN6S779C34v127Ev,
  (VTBL_ENTRY)&_ZN6S779C34v128Ev,
  (VTBL_ENTRY)&_ZN6S779C34v129Ev,
  (VTBL_ENTRY)&_ZN6S779C34v130Ev,
  (VTBL_ENTRY)&_ZN6S779C34v131Ev,
  (VTBL_ENTRY)&_ZN6S779C34v132Ev,
  (VTBL_ENTRY)&_ZN6S779C34v133Ev,
  (VTBL_ENTRY)&_ZN6S779C34v134Ev,
  (VTBL_ENTRY)&_ZN6S779C34v135Ev,
  (VTBL_ENTRY)&_ZN6S779C34v136Ev,
  (VTBL_ENTRY)&_ZN6S779C34v137Ev,
  (VTBL_ENTRY)&_ZN6S779C34v138Ev,
  (VTBL_ENTRY)&_ZN6S779C34v139Ev,
  (VTBL_ENTRY)&_ZN6S779C34v140Ev,
  (VTBL_ENTRY)&_ZN6S779C34v141Ev,
  (VTBL_ENTRY)&_ZN6S779C34v142Ev,
  (VTBL_ENTRY)&_ZN6S779C24v143Ev,
  (VTBL_ENTRY)&_ZN6S779C24v144Ev,
  (VTBL_ENTRY)&_ZN6S779C24v145Ev,
  (VTBL_ENTRY)&_ZN6S779C24v146Ev,
  (VTBL_ENTRY)&_ZN6S779C24v147Ev,
  (VTBL_ENTRY)&_ZN6S779C24v148Ev,
  (VTBL_ENTRY)&_ZN6S779C12v1Ev,
  (VTBL_ENTRY)&_ZN6S779C12v2Ev,
};
extern VTBL_ENTRY _ZTI6S779C1[];
extern  VTBL_ENTRY _ZTV6S779C1[];
Class_Descriptor cd_S779C1 = {  "S779C1", // class name
  bases_S779C1, 4,
  &(vtc_S779C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S779C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S779C1),152, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1841C3  : S785C5_nt {
  virtual void  v9(); // _ZN7S1841C32v9Ev
  virtual void  v10(); // _ZN7S1841C33v10Ev
  virtual void  v11(); // _ZN7S1841C33v11Ev
  virtual void  v12(); // _ZN7S1841C33v12Ev
  virtual void  v13(); // _ZN7S1841C33v13Ev
  virtual void  v14(); // _ZN7S1841C33v14Ev
  virtual void  v15(); // _ZN7S1841C33v15Ev
  virtual void  v16(); // _ZN7S1841C33v16Ev
  virtual void  v17(); // _ZN7S1841C33v17Ev
  virtual void  v18(); // _ZN7S1841C33v18Ev
  virtual void  v19(); // _ZN7S1841C33v19Ev
  virtual void  v20(); // _ZN7S1841C33v20Ev
  virtual void  v21(); // _ZN7S1841C33v21Ev
  virtual void  v22(); // _ZN7S1841C33v22Ev
  virtual void  v23(); // _ZN7S1841C33v23Ev
  virtual void  v24(); // _ZN7S1841C33v24Ev
  virtual void  v25(); // _ZN7S1841C33v25Ev
  virtual void  v26(); // _ZN7S1841C33v26Ev
  virtual void  v27(); // _ZN7S1841C33v27Ev
  virtual void  v28(); // _ZN7S1841C33v28Ev
  virtual void  v29(); // _ZN7S1841C33v29Ev
  virtual void  v30(); // _ZN7S1841C33v30Ev
  virtual void  v31(); // _ZN7S1841C33v31Ev
  virtual void  v32(); // _ZN7S1841C33v32Ev
  virtual void  v33(); // _ZN7S1841C33v33Ev
  virtual void  v34(); // _ZN7S1841C33v34Ev
  virtual void  v35(); // _ZN7S1841C33v35Ev
  virtual void  v36(); // _ZN7S1841C33v36Ev
  virtual void  v37(); // _ZN7S1841C33v37Ev
  virtual void  v38(); // _ZN7S1841C33v38Ev
  virtual void  v39(); // _ZN7S1841C33v39Ev
  virtual void  v40(); // _ZN7S1841C33v40Ev
  virtual void  v41(); // _ZN7S1841C33v41Ev
  virtual void  v42(); // _ZN7S1841C33v42Ev
  virtual void  v43(); // _ZN7S1841C33v43Ev
  virtual void  v44(); // _ZN7S1841C33v44Ev
  virtual void  v45(); // _ZN7S1841C33v45Ev
  virtual void  v46(); // _ZN7S1841C33v46Ev
  virtual void  v47(); // _ZN7S1841C33v47Ev
  virtual void  v48(); // _ZN7S1841C33v48Ev
  virtual void  v49(); // _ZN7S1841C33v49Ev
  virtual void  v50(); // _ZN7S1841C33v50Ev
  virtual void  v51(); // _ZN7S1841C33v51Ev
  virtual void  v52(); // _ZN7S1841C33v52Ev
  virtual void  v53(); // _ZN7S1841C33v53Ev
  virtual void  v54(); // _ZN7S1841C33v54Ev
  virtual void  v55(); // _ZN7S1841C33v55Ev
  virtual void  v56(); // _ZN7S1841C33v56Ev
  virtual void  v57(); // _ZN7S1841C33v57Ev
  virtual void  v58(); // _ZN7S1841C33v58Ev
  virtual void  v59(); // _ZN7S1841C33v59Ev
  virtual void  v60(); // _ZN7S1841C33v60Ev
  virtual void  v61(); // _ZN7S1841C33v61Ev
  virtual void  v62(); // _ZN7S1841C33v62Ev
  virtual void  v63(); // _ZN7S1841C33v63Ev
  virtual void  v64(); // _ZN7S1841C33v64Ev
  virtual void  v65(); // _ZN7S1841C33v65Ev
  virtual void  v66(); // _ZN7S1841C33v66Ev
  virtual void  v67(); // _ZN7S1841C33v67Ev
  virtual void  v68(); // _ZN7S1841C33v68Ev
  virtual void  v69(); // _ZN7S1841C33v69Ev
  virtual void  v70(); // _ZN7S1841C33v70Ev
  virtual void  v71(); // _ZN7S1841C33v71Ev
  virtual void  v72(); // _ZN7S1841C33v72Ev
  virtual void  v73(); // _ZN7S1841C33v73Ev
  virtual void  v74(); // _ZN7S1841C33v74Ev
  virtual void  v75(); // _ZN7S1841C33v75Ev
  virtual void  v76(); // _ZN7S1841C33v76Ev
  virtual void  v77(); // _ZN7S1841C33v77Ev
  virtual void  v78(); // _ZN7S1841C33v78Ev
  virtual void  v79(); // _ZN7S1841C33v79Ev
  virtual void  v80(); // _ZN7S1841C33v80Ev
  virtual void  v81(); // _ZN7S1841C33v81Ev
  virtual void  v82(); // _ZN7S1841C33v82Ev
  virtual void  v83(); // _ZN7S1841C33v83Ev
  virtual void  v84(); // _ZN7S1841C33v84Ev
  virtual void  v85(); // _ZN7S1841C33v85Ev
  virtual void  v86(); // _ZN7S1841C33v86Ev
  virtual void  v87(); // _ZN7S1841C33v87Ev
  virtual void  v88(); // _ZN7S1841C33v88Ev
  virtual void  v89(); // _ZN7S1841C33v89Ev
  virtual void  v90(); // _ZN7S1841C33v90Ev
  virtual void  v91(); // _ZN7S1841C33v91Ev
  virtual void  v92(); // _ZN7S1841C33v92Ev
  virtual void  v93(); // _ZN7S1841C33v93Ev
  virtual void  v94(); // _ZN7S1841C33v94Ev
  virtual void  v95(); // _ZN7S1841C33v95Ev
  virtual void  v96(); // _ZN7S1841C33v96Ev
  virtual void  v97(); // _ZN7S1841C33v97Ev
  virtual void  v98(); // _ZN7S1841C33v98Ev
  virtual void  v99(); // _ZN7S1841C33v99Ev
  virtual void  v100(); // _ZN7S1841C34v100Ev
  virtual void  v101(); // _ZN7S1841C34v101Ev
  virtual void  v102(); // _ZN7S1841C34v102Ev
  virtual void  v103(); // _ZN7S1841C34v103Ev
  virtual void  v104(); // _ZN7S1841C34v104Ev
  virtual void  v105(); // _ZN7S1841C34v105Ev
  virtual void  v106(); // _ZN7S1841C34v106Ev
  virtual void  v107(); // _ZN7S1841C34v107Ev
  virtual void  v108(); // _ZN7S1841C34v108Ev
  virtual void  v109(); // _ZN7S1841C34v109Ev
  virtual void  v110(); // _ZN7S1841C34v110Ev
  virtual void  v111(); // _ZN7S1841C34v111Ev
  virtual void  v112(); // _ZN7S1841C34v112Ev
  virtual void  v113(); // _ZN7S1841C34v113Ev
  virtual void  v114(); // _ZN7S1841C34v114Ev
  virtual void  v115(); // _ZN7S1841C34v115Ev
  virtual void  v116(); // _ZN7S1841C34v116Ev
  virtual void  v117(); // _ZN7S1841C34v117Ev
  virtual void  v118(); // _ZN7S1841C34v118Ev
  virtual void  v119(); // _ZN7S1841C34v119Ev
  virtual void  v120(); // _ZN7S1841C34v120Ev
  virtual void  v121(); // _ZN7S1841C34v121Ev
  virtual void  v122(); // _ZN7S1841C34v122Ev
  virtual void  v123(); // _ZN7S1841C34v123Ev
  virtual void  v124(); // _ZN7S1841C34v124Ev
  virtual void  v125(); // _ZN7S1841C34v125Ev
  virtual void  v126(); // _ZN7S1841C34v126Ev
  virtual void  v127(); // _ZN7S1841C34v127Ev
  virtual void  v128(); // _ZN7S1841C34v128Ev
  virtual void  v129(); // _ZN7S1841C34v129Ev
  virtual void  v130(); // _ZN7S1841C34v130Ev
  ~S1841C3(); // tgen
  S1841C3(); // tgen
};
//SIG(-1 S1841C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1841C3 ::v9(){vfunc_called(this, "_ZN7S1841C32v9Ev");}
void  S1841C3 ::v10(){vfunc_called(this, "_ZN7S1841C33v10Ev");}
void  S1841C3 ::v11(){vfunc_called(this, "_ZN7S1841C33v11Ev");}
void  S1841C3 ::v12(){vfunc_called(this, "_ZN7S1841C33v12Ev");}
void  S1841C3 ::v13(){vfunc_called(this, "_ZN7S1841C33v13Ev");}
void  S1841C3 ::v14(){vfunc_called(this, "_ZN7S1841C33v14Ev");}
void  S1841C3 ::v15(){vfunc_called(this, "_ZN7S1841C33v15Ev");}
void  S1841C3 ::v16(){vfunc_called(this, "_ZN7S1841C33v16Ev");}
void  S1841C3 ::v17(){vfunc_called(this, "_ZN7S1841C33v17Ev");}
void  S1841C3 ::v18(){vfunc_called(this, "_ZN7S1841C33v18Ev");}
void  S1841C3 ::v19(){vfunc_called(this, "_ZN7S1841C33v19Ev");}
void  S1841C3 ::v20(){vfunc_called(this, "_ZN7S1841C33v20Ev");}
void  S1841C3 ::v21(){vfunc_called(this, "_ZN7S1841C33v21Ev");}
void  S1841C3 ::v22(){vfunc_called(this, "_ZN7S1841C33v22Ev");}
void  S1841C3 ::v23(){vfunc_called(this, "_ZN7S1841C33v23Ev");}
void  S1841C3 ::v24(){vfunc_called(this, "_ZN7S1841C33v24Ev");}
void  S1841C3 ::v25(){vfunc_called(this, "_ZN7S1841C33v25Ev");}
void  S1841C3 ::v26(){vfunc_called(this, "_ZN7S1841C33v26Ev");}
void  S1841C3 ::v27(){vfunc_called(this, "_ZN7S1841C33v27Ev");}
void  S1841C3 ::v28(){vfunc_called(this, "_ZN7S1841C33v28Ev");}
void  S1841C3 ::v29(){vfunc_called(this, "_ZN7S1841C33v29Ev");}
void  S1841C3 ::v30(){vfunc_called(this, "_ZN7S1841C33v30Ev");}
void  S1841C3 ::v31(){vfunc_called(this, "_ZN7S1841C33v31Ev");}
void  S1841C3 ::v32(){vfunc_called(this, "_ZN7S1841C33v32Ev");}
void  S1841C3 ::v33(){vfunc_called(this, "_ZN7S1841C33v33Ev");}
void  S1841C3 ::v34(){vfunc_called(this, "_ZN7S1841C33v34Ev");}
void  S1841C3 ::v35(){vfunc_called(this, "_ZN7S1841C33v35Ev");}
void  S1841C3 ::v36(){vfunc_called(this, "_ZN7S1841C33v36Ev");}
void  S1841C3 ::v37(){vfunc_called(this, "_ZN7S1841C33v37Ev");}
void  S1841C3 ::v38(){vfunc_called(this, "_ZN7S1841C33v38Ev");}
void  S1841C3 ::v39(){vfunc_called(this, "_ZN7S1841C33v39Ev");}
void  S1841C3 ::v40(){vfunc_called(this, "_ZN7S1841C33v40Ev");}
void  S1841C3 ::v41(){vfunc_called(this, "_ZN7S1841C33v41Ev");}
void  S1841C3 ::v42(){vfunc_called(this, "_ZN7S1841C33v42Ev");}
void  S1841C3 ::v43(){vfunc_called(this, "_ZN7S1841C33v43Ev");}
void  S1841C3 ::v44(){vfunc_called(this, "_ZN7S1841C33v44Ev");}
void  S1841C3 ::v45(){vfunc_called(this, "_ZN7S1841C33v45Ev");}
void  S1841C3 ::v46(){vfunc_called(this, "_ZN7S1841C33v46Ev");}
void  S1841C3 ::v47(){vfunc_called(this, "_ZN7S1841C33v47Ev");}
void  S1841C3 ::v48(){vfunc_called(this, "_ZN7S1841C33v48Ev");}
void  S1841C3 ::v49(){vfunc_called(this, "_ZN7S1841C33v49Ev");}
void  S1841C3 ::v50(){vfunc_called(this, "_ZN7S1841C33v50Ev");}
void  S1841C3 ::v51(){vfunc_called(this, "_ZN7S1841C33v51Ev");}
void  S1841C3 ::v52(){vfunc_called(this, "_ZN7S1841C33v52Ev");}
void  S1841C3 ::v53(){vfunc_called(this, "_ZN7S1841C33v53Ev");}
void  S1841C3 ::v54(){vfunc_called(this, "_ZN7S1841C33v54Ev");}
void  S1841C3 ::v55(){vfunc_called(this, "_ZN7S1841C33v55Ev");}
void  S1841C3 ::v56(){vfunc_called(this, "_ZN7S1841C33v56Ev");}
void  S1841C3 ::v57(){vfunc_called(this, "_ZN7S1841C33v57Ev");}
void  S1841C3 ::v58(){vfunc_called(this, "_ZN7S1841C33v58Ev");}
void  S1841C3 ::v59(){vfunc_called(this, "_ZN7S1841C33v59Ev");}
void  S1841C3 ::v60(){vfunc_called(this, "_ZN7S1841C33v60Ev");}
void  S1841C3 ::v61(){vfunc_called(this, "_ZN7S1841C33v61Ev");}
void  S1841C3 ::v62(){vfunc_called(this, "_ZN7S1841C33v62Ev");}
void  S1841C3 ::v63(){vfunc_called(this, "_ZN7S1841C33v63Ev");}
void  S1841C3 ::v64(){vfunc_called(this, "_ZN7S1841C33v64Ev");}
void  S1841C3 ::v65(){vfunc_called(this, "_ZN7S1841C33v65Ev");}
void  S1841C3 ::v66(){vfunc_called(this, "_ZN7S1841C33v66Ev");}
void  S1841C3 ::v67(){vfunc_called(this, "_ZN7S1841C33v67Ev");}
void  S1841C3 ::v68(){vfunc_called(this, "_ZN7S1841C33v68Ev");}
void  S1841C3 ::v69(){vfunc_called(this, "_ZN7S1841C33v69Ev");}
void  S1841C3 ::v70(){vfunc_called(this, "_ZN7S1841C33v70Ev");}
void  S1841C3 ::v71(){vfunc_called(this, "_ZN7S1841C33v71Ev");}
void  S1841C3 ::v72(){vfunc_called(this, "_ZN7S1841C33v72Ev");}
void  S1841C3 ::v73(){vfunc_called(this, "_ZN7S1841C33v73Ev");}
void  S1841C3 ::v74(){vfunc_called(this, "_ZN7S1841C33v74Ev");}
void  S1841C3 ::v75(){vfunc_called(this, "_ZN7S1841C33v75Ev");}
void  S1841C3 ::v76(){vfunc_called(this, "_ZN7S1841C33v76Ev");}
void  S1841C3 ::v77(){vfunc_called(this, "_ZN7S1841C33v77Ev");}
void  S1841C3 ::v78(){vfunc_called(this, "_ZN7S1841C33v78Ev");}
void  S1841C3 ::v79(){vfunc_called(this, "_ZN7S1841C33v79Ev");}
void  S1841C3 ::v80(){vfunc_called(this, "_ZN7S1841C33v80Ev");}
void  S1841C3 ::v81(){vfunc_called(this, "_ZN7S1841C33v81Ev");}
void  S1841C3 ::v82(){vfunc_called(this, "_ZN7S1841C33v82Ev");}
void  S1841C3 ::v83(){vfunc_called(this, "_ZN7S1841C33v83Ev");}
void  S1841C3 ::v84(){vfunc_called(this, "_ZN7S1841C33v84Ev");}
void  S1841C3 ::v85(){vfunc_called(this, "_ZN7S1841C33v85Ev");}
void  S1841C3 ::v86(){vfunc_called(this, "_ZN7S1841C33v86Ev");}
void  S1841C3 ::v87(){vfunc_called(this, "_ZN7S1841C33v87Ev");}
void  S1841C3 ::v88(){vfunc_called(this, "_ZN7S1841C33v88Ev");}
void  S1841C3 ::v89(){vfunc_called(this, "_ZN7S1841C33v89Ev");}
void  S1841C3 ::v90(){vfunc_called(this, "_ZN7S1841C33v90Ev");}
void  S1841C3 ::v91(){vfunc_called(this, "_ZN7S1841C33v91Ev");}
void  S1841C3 ::v92(){vfunc_called(this, "_ZN7S1841C33v92Ev");}
void  S1841C3 ::v93(){vfunc_called(this, "_ZN7S1841C33v93Ev");}
void  S1841C3 ::v94(){vfunc_called(this, "_ZN7S1841C33v94Ev");}
void  S1841C3 ::v95(){vfunc_called(this, "_ZN7S1841C33v95Ev");}
void  S1841C3 ::v96(){vfunc_called(this, "_ZN7S1841C33v96Ev");}
void  S1841C3 ::v97(){vfunc_called(this, "_ZN7S1841C33v97Ev");}
void  S1841C3 ::v98(){vfunc_called(this, "_ZN7S1841C33v98Ev");}
void  S1841C3 ::v99(){vfunc_called(this, "_ZN7S1841C33v99Ev");}
void  S1841C3 ::v100(){vfunc_called(this, "_ZN7S1841C34v100Ev");}
void  S1841C3 ::v101(){vfunc_called(this, "_ZN7S1841C34v101Ev");}
void  S1841C3 ::v102(){vfunc_called(this, "_ZN7S1841C34v102Ev");}
void  S1841C3 ::v103(){vfunc_called(this, "_ZN7S1841C34v103Ev");}
void  S1841C3 ::v104(){vfunc_called(this, "_ZN7S1841C34v104Ev");}
void  S1841C3 ::v105(){vfunc_called(this, "_ZN7S1841C34v105Ev");}
void  S1841C3 ::v106(){vfunc_called(this, "_ZN7S1841C34v106Ev");}
void  S1841C3 ::v107(){vfunc_called(this, "_ZN7S1841C34v107Ev");}
void  S1841C3 ::v108(){vfunc_called(this, "_ZN7S1841C34v108Ev");}
void  S1841C3 ::v109(){vfunc_called(this, "_ZN7S1841C34v109Ev");}
void  S1841C3 ::v110(){vfunc_called(this, "_ZN7S1841C34v110Ev");}
void  S1841C3 ::v111(){vfunc_called(this, "_ZN7S1841C34v111Ev");}
void  S1841C3 ::v112(){vfunc_called(this, "_ZN7S1841C34v112Ev");}
void  S1841C3 ::v113(){vfunc_called(this, "_ZN7S1841C34v113Ev");}
void  S1841C3 ::v114(){vfunc_called(this, "_ZN7S1841C34v114Ev");}
void  S1841C3 ::v115(){vfunc_called(this, "_ZN7S1841C34v115Ev");}
void  S1841C3 ::v116(){vfunc_called(this, "_ZN7S1841C34v116Ev");}
void  S1841C3 ::v117(){vfunc_called(this, "_ZN7S1841C34v117Ev");}
void  S1841C3 ::v118(){vfunc_called(this, "_ZN7S1841C34v118Ev");}
void  S1841C3 ::v119(){vfunc_called(this, "_ZN7S1841C34v119Ev");}
void  S1841C3 ::v120(){vfunc_called(this, "_ZN7S1841C34v120Ev");}
void  S1841C3 ::v121(){vfunc_called(this, "_ZN7S1841C34v121Ev");}
void  S1841C3 ::v122(){vfunc_called(this, "_ZN7S1841C34v122Ev");}
void  S1841C3 ::v123(){vfunc_called(this, "_ZN7S1841C34v123Ev");}
void  S1841C3 ::v124(){vfunc_called(this, "_ZN7S1841C34v124Ev");}
void  S1841C3 ::v125(){vfunc_called(this, "_ZN7S1841C34v125Ev");}
void  S1841C3 ::v126(){vfunc_called(this, "_ZN7S1841C34v126Ev");}
void  S1841C3 ::v127(){vfunc_called(this, "_ZN7S1841C34v127Ev");}
void  S1841C3 ::v128(){vfunc_called(this, "_ZN7S1841C34v128Ev");}
void  S1841C3 ::v129(){vfunc_called(this, "_ZN7S1841C34v129Ev");}
void  S1841C3 ::v130(){vfunc_called(this, "_ZN7S1841C34v130Ev");}
S1841C3 ::~S1841C3(){ note_dtor("S1841C3", this);} // tgen
S1841C3 ::S1841C3(){ note_ctor("S1841C3", this);} // tgen

static void Test_S1841C3()
{
  extern Class_Descriptor cd_S1841C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1841C3, buf);
    S1841C3 *dp, &lv = *(dp=new (buf) S1841C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1841C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1841C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1841C3");
    test_class_info(&lv, &cd_S1841C3);
    dp->~S1841C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1841C3(Test_S1841C3, "S1841C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1841C3C1Ev();
extern void _ZN7S1841C3D1Ev();
Name_Map name_map_S1841C3[] = {
  NSPAIR(_ZN7S1841C3C1Ev),
  NSPAIR(_ZN7S1841C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1841C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1841C3[];
extern void _ZN7S1841C3D1Ev();
extern void _ZN7S1841C3D0Ev();
extern void _ZN7S1841C32v9Ev();
extern void _ZN7S1841C33v10Ev();
extern void _ZN7S1841C33v11Ev();
extern void _ZN7S1841C33v12Ev();
extern void _ZN7S1841C33v13Ev();
extern void _ZN7S1841C33v14Ev();
extern void _ZN7S1841C33v15Ev();
extern void _ZN7S1841C33v16Ev();
extern void _ZN7S1841C33v17Ev();
extern void _ZN7S1841C33v18Ev();
extern void _ZN7S1841C33v19Ev();
extern void _ZN7S1841C33v20Ev();
extern void _ZN7S1841C33v21Ev();
extern void _ZN7S1841C33v22Ev();
extern void _ZN7S1841C33v23Ev();
extern void _ZN7S1841C33v24Ev();
extern void _ZN7S1841C33v25Ev();
extern void _ZN7S1841C33v26Ev();
extern void _ZN7S1841C33v27Ev();
extern void _ZN7S1841C33v28Ev();
extern void _ZN7S1841C33v29Ev();
extern void _ZN7S1841C33v30Ev();
extern void _ZN7S1841C33v31Ev();
extern void _ZN7S1841C33v32Ev();
extern void _ZN7S1841C33v33Ev();
extern void _ZN7S1841C33v34Ev();
extern void _ZN7S1841C33v35Ev();
extern void _ZN7S1841C33v36Ev();
extern void _ZN7S1841C33v37Ev();
extern void _ZN7S1841C33v38Ev();
extern void _ZN7S1841C33v39Ev();
extern void _ZN7S1841C33v40Ev();
extern void _ZN7S1841C33v41Ev();
extern void _ZN7S1841C33v42Ev();
extern void _ZN7S1841C33v43Ev();
extern void _ZN7S1841C33v44Ev();
extern void _ZN7S1841C33v45Ev();
extern void _ZN7S1841C33v46Ev();
extern void _ZN7S1841C33v47Ev();
extern void _ZN7S1841C33v48Ev();
extern void _ZN7S1841C33v49Ev();
extern void _ZN7S1841C33v50Ev();
extern void _ZN7S1841C33v51Ev();
extern void _ZN7S1841C33v52Ev();
extern void _ZN7S1841C33v53Ev();
extern void _ZN7S1841C33v54Ev();
extern void _ZN7S1841C33v55Ev();
extern void _ZN7S1841C33v56Ev();
extern void _ZN7S1841C33v57Ev();
extern void _ZN7S1841C33v58Ev();
extern void _ZN7S1841C33v59Ev();
extern void _ZN7S1841C33v60Ev();
extern void _ZN7S1841C33v61Ev();
extern void _ZN7S1841C33v62Ev();
extern void _ZN7S1841C33v63Ev();
extern void _ZN7S1841C33v64Ev();
extern void _ZN7S1841C33v65Ev();
extern void _ZN7S1841C33v66Ev();
extern void _ZN7S1841C33v67Ev();
extern void _ZN7S1841C33v68Ev();
extern void _ZN7S1841C33v69Ev();
extern void _ZN7S1841C33v70Ev();
extern void _ZN7S1841C33v71Ev();
extern void _ZN7S1841C33v72Ev();
extern void _ZN7S1841C33v73Ev();
extern void _ZN7S1841C33v74Ev();
extern void _ZN7S1841C33v75Ev();
extern void _ZN7S1841C33v76Ev();
extern void _ZN7S1841C33v77Ev();
extern void _ZN7S1841C33v78Ev();
extern void _ZN7S1841C33v79Ev();
extern void _ZN7S1841C33v80Ev();
extern void _ZN7S1841C33v81Ev();
extern void _ZN7S1841C33v82Ev();
extern void _ZN7S1841C33v83Ev();
extern void _ZN7S1841C33v84Ev();
extern void _ZN7S1841C33v85Ev();
extern void _ZN7S1841C33v86Ev();
extern void _ZN7S1841C33v87Ev();
extern void _ZN7S1841C33v88Ev();
extern void _ZN7S1841C33v89Ev();
extern void _ZN7S1841C33v90Ev();
extern void _ZN7S1841C33v91Ev();
extern void _ZN7S1841C33v92Ev();
extern void _ZN7S1841C33v93Ev();
extern void _ZN7S1841C33v94Ev();
extern void _ZN7S1841C33v95Ev();
extern void _ZN7S1841C33v96Ev();
extern void _ZN7S1841C33v97Ev();
extern void _ZN7S1841C33v98Ev();
extern void _ZN7S1841C33v99Ev();
extern void _ZN7S1841C34v100Ev();
extern void _ZN7S1841C34v101Ev();
extern void _ZN7S1841C34v102Ev();
extern void _ZN7S1841C34v103Ev();
extern void _ZN7S1841C34v104Ev();
extern void _ZN7S1841C34v105Ev();
extern void _ZN7S1841C34v106Ev();
extern void _ZN7S1841C34v107Ev();
extern void _ZN7S1841C34v108Ev();
extern void _ZN7S1841C34v109Ev();
extern void _ZN7S1841C34v110Ev();
extern void _ZN7S1841C34v111Ev();
extern void _ZN7S1841C34v112Ev();
extern void _ZN7S1841C34v113Ev();
extern void _ZN7S1841C34v114Ev();
extern void _ZN7S1841C34v115Ev();
extern void _ZN7S1841C34v116Ev();
extern void _ZN7S1841C34v117Ev();
extern void _ZN7S1841C34v118Ev();
extern void _ZN7S1841C34v119Ev();
extern void _ZN7S1841C34v120Ev();
extern void _ZN7S1841C34v121Ev();
extern void _ZN7S1841C34v122Ev();
extern void _ZN7S1841C34v123Ev();
extern void _ZN7S1841C34v124Ev();
extern void _ZN7S1841C34v125Ev();
extern void _ZN7S1841C34v126Ev();
extern void _ZN7S1841C34v127Ev();
extern void _ZN7S1841C34v128Ev();
extern void _ZN7S1841C34v129Ev();
extern void _ZN7S1841C34v130Ev();
static  VTBL_ENTRY vtc_S1841C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1841C3[0]),
  (VTBL_ENTRY)&_ZN7S1841C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1841C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1841C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v130Ev,
};
extern VTBL_ENTRY _ZTI7S1841C3[];
extern  VTBL_ENTRY _ZTV7S1841C3[];
Class_Descriptor cd_S1841C3 = {  "S1841C3", // class name
  bases_S1841C3, 1,
  &(vtc_S1841C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1841C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1841C3),126, //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  S1841C2  : S1841C3 {
  virtual void  v131(); // _ZN7S1841C24v131Ev
  virtual void  v132(); // _ZN7S1841C24v132Ev
  virtual void  v133(); // _ZN7S1841C24v133Ev
  virtual void  v134(); // _ZN7S1841C24v134Ev
  virtual void  v135(); // _ZN7S1841C24v135Ev
  virtual void  v136(); // _ZN7S1841C24v136Ev
  virtual void  v137(); // _ZN7S1841C24v137Ev
  virtual void  v138(); // _ZN7S1841C24v138Ev
  virtual void  v139(); // _ZN7S1841C24v139Ev
  virtual void  v140(); // _ZN7S1841C24v140Ev
  virtual void  v141(); // _ZN7S1841C24v141Ev
  virtual void  v142(); // _ZN7S1841C24v142Ev
  virtual void  v143(); // _ZN7S1841C24v143Ev
  virtual void  v144(); // _ZN7S1841C24v144Ev
  virtual void  v145(); // _ZN7S1841C24v145Ev
  virtual void  v146(); // _ZN7S1841C24v146Ev
  virtual void  v147(); // _ZN7S1841C24v147Ev
  virtual void  v148(); // _ZN7S1841C24v148Ev
  ~S1841C2(); // tgen
  S1841C2(); // tgen
};
//SIG(-1 S1841C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1841C2 ::v131(){vfunc_called(this, "_ZN7S1841C24v131Ev");}
void  S1841C2 ::v132(){vfunc_called(this, "_ZN7S1841C24v132Ev");}
void  S1841C2 ::v133(){vfunc_called(this, "_ZN7S1841C24v133Ev");}
void  S1841C2 ::v134(){vfunc_called(this, "_ZN7S1841C24v134Ev");}
void  S1841C2 ::v135(){vfunc_called(this, "_ZN7S1841C24v135Ev");}
void  S1841C2 ::v136(){vfunc_called(this, "_ZN7S1841C24v136Ev");}
void  S1841C2 ::v137(){vfunc_called(this, "_ZN7S1841C24v137Ev");}
void  S1841C2 ::v138(){vfunc_called(this, "_ZN7S1841C24v138Ev");}
void  S1841C2 ::v139(){vfunc_called(this, "_ZN7S1841C24v139Ev");}
void  S1841C2 ::v140(){vfunc_called(this, "_ZN7S1841C24v140Ev");}
void  S1841C2 ::v141(){vfunc_called(this, "_ZN7S1841C24v141Ev");}
void  S1841C2 ::v142(){vfunc_called(this, "_ZN7S1841C24v142Ev");}
void  S1841C2 ::v143(){vfunc_called(this, "_ZN7S1841C24v143Ev");}
void  S1841C2 ::v144(){vfunc_called(this, "_ZN7S1841C24v144Ev");}
void  S1841C2 ::v145(){vfunc_called(this, "_ZN7S1841C24v145Ev");}
void  S1841C2 ::v146(){vfunc_called(this, "_ZN7S1841C24v146Ev");}
void  S1841C2 ::v147(){vfunc_called(this, "_ZN7S1841C24v147Ev");}
void  S1841C2 ::v148(){vfunc_called(this, "_ZN7S1841C24v148Ev");}
S1841C2 ::~S1841C2(){ note_dtor("S1841C2", this);} // tgen
S1841C2 ::S1841C2(){ note_ctor("S1841C2", this);} // tgen

static void Test_S1841C2()
{
  extern Class_Descriptor cd_S1841C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1841C2, buf);
    S1841C2 *dp, &lv = *(dp=new (buf) S1841C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1841C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1841C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1841C3*), 0, "S1841C2");
    check_base_class_offset(lv, (S1841C3*), 0, "S1841C2");
    test_class_info(&lv, &cd_S1841C2);
    dp->~S1841C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1841C2(Test_S1841C2, "S1841C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1841C2C1Ev();
extern void _ZN7S1841C2D1Ev();
Name_Map name_map_S1841C2[] = {
  NSPAIR(_ZN7S1841C2C1Ev),
  NSPAIR(_ZN7S1841C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1841C3;
extern VTBL_ENTRY _ZTI7S1841C3[];
extern  VTBL_ENTRY _ZTV7S1841C3[];
static Base_Class bases_S1841C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1841C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1841C2[];
extern void _ZN7S1841C2D1Ev();
extern void _ZN7S1841C2D0Ev();
extern void _ZN7S1841C32v9Ev();
extern void _ZN7S1841C33v10Ev();
extern void _ZN7S1841C33v11Ev();
extern void _ZN7S1841C33v12Ev();
extern void _ZN7S1841C33v13Ev();
extern void _ZN7S1841C33v14Ev();
extern void _ZN7S1841C33v15Ev();
extern void _ZN7S1841C33v16Ev();
extern void _ZN7S1841C33v17Ev();
extern void _ZN7S1841C33v18Ev();
extern void _ZN7S1841C33v19Ev();
extern void _ZN7S1841C33v20Ev();
extern void _ZN7S1841C33v21Ev();
extern void _ZN7S1841C33v22Ev();
extern void _ZN7S1841C33v23Ev();
extern void _ZN7S1841C33v24Ev();
extern void _ZN7S1841C33v25Ev();
extern void _ZN7S1841C33v26Ev();
extern void _ZN7S1841C33v27Ev();
extern void _ZN7S1841C33v28Ev();
extern void _ZN7S1841C33v29Ev();
extern void _ZN7S1841C33v30Ev();
extern void _ZN7S1841C33v31Ev();
extern void _ZN7S1841C33v32Ev();
extern void _ZN7S1841C33v33Ev();
extern void _ZN7S1841C33v34Ev();
extern void _ZN7S1841C33v35Ev();
extern void _ZN7S1841C33v36Ev();
extern void _ZN7S1841C33v37Ev();
extern void _ZN7S1841C33v38Ev();
extern void _ZN7S1841C33v39Ev();
extern void _ZN7S1841C33v40Ev();
extern void _ZN7S1841C33v41Ev();
extern void _ZN7S1841C33v42Ev();
extern void _ZN7S1841C33v43Ev();
extern void _ZN7S1841C33v44Ev();
extern void _ZN7S1841C33v45Ev();
extern void _ZN7S1841C33v46Ev();
extern void _ZN7S1841C33v47Ev();
extern void _ZN7S1841C33v48Ev();
extern void _ZN7S1841C33v49Ev();
extern void _ZN7S1841C33v50Ev();
extern void _ZN7S1841C33v51Ev();
extern void _ZN7S1841C33v52Ev();
extern void _ZN7S1841C33v53Ev();
extern void _ZN7S1841C33v54Ev();
extern void _ZN7S1841C33v55Ev();
extern void _ZN7S1841C33v56Ev();
extern void _ZN7S1841C33v57Ev();
extern void _ZN7S1841C33v58Ev();
extern void _ZN7S1841C33v59Ev();
extern void _ZN7S1841C33v60Ev();
extern void _ZN7S1841C33v61Ev();
extern void _ZN7S1841C33v62Ev();
extern void _ZN7S1841C33v63Ev();
extern void _ZN7S1841C33v64Ev();
extern void _ZN7S1841C33v65Ev();
extern void _ZN7S1841C33v66Ev();
extern void _ZN7S1841C33v67Ev();
extern void _ZN7S1841C33v68Ev();
extern void _ZN7S1841C33v69Ev();
extern void _ZN7S1841C33v70Ev();
extern void _ZN7S1841C33v71Ev();
extern void _ZN7S1841C33v72Ev();
extern void _ZN7S1841C33v73Ev();
extern void _ZN7S1841C33v74Ev();
extern void _ZN7S1841C33v75Ev();
extern void _ZN7S1841C33v76Ev();
extern void _ZN7S1841C33v77Ev();
extern void _ZN7S1841C33v78Ev();
extern void _ZN7S1841C33v79Ev();
extern void _ZN7S1841C33v80Ev();
extern void _ZN7S1841C33v81Ev();
extern void _ZN7S1841C33v82Ev();
extern void _ZN7S1841C33v83Ev();
extern void _ZN7S1841C33v84Ev();
extern void _ZN7S1841C33v85Ev();
extern void _ZN7S1841C33v86Ev();
extern void _ZN7S1841C33v87Ev();
extern void _ZN7S1841C33v88Ev();
extern void _ZN7S1841C33v89Ev();
extern void _ZN7S1841C33v90Ev();
extern void _ZN7S1841C33v91Ev();
extern void _ZN7S1841C33v92Ev();
extern void _ZN7S1841C33v93Ev();
extern void _ZN7S1841C33v94Ev();
extern void _ZN7S1841C33v95Ev();
extern void _ZN7S1841C33v96Ev();
extern void _ZN7S1841C33v97Ev();
extern void _ZN7S1841C33v98Ev();
extern void _ZN7S1841C33v99Ev();
extern void _ZN7S1841C34v100Ev();
extern void _ZN7S1841C34v101Ev();
extern void _ZN7S1841C34v102Ev();
extern void _ZN7S1841C34v103Ev();
extern void _ZN7S1841C34v104Ev();
extern void _ZN7S1841C34v105Ev();
extern void _ZN7S1841C34v106Ev();
extern void _ZN7S1841C34v107Ev();
extern void _ZN7S1841C34v108Ev();
extern void _ZN7S1841C34v109Ev();
extern void _ZN7S1841C34v110Ev();
extern void _ZN7S1841C34v111Ev();
extern void _ZN7S1841C34v112Ev();
extern void _ZN7S1841C34v113Ev();
extern void _ZN7S1841C34v114Ev();
extern void _ZN7S1841C34v115Ev();
extern void _ZN7S1841C34v116Ev();
extern void _ZN7S1841C34v117Ev();
extern void _ZN7S1841C34v118Ev();
extern void _ZN7S1841C34v119Ev();
extern void _ZN7S1841C34v120Ev();
extern void _ZN7S1841C34v121Ev();
extern void _ZN7S1841C34v122Ev();
extern void _ZN7S1841C34v123Ev();
extern void _ZN7S1841C34v124Ev();
extern void _ZN7S1841C34v125Ev();
extern void _ZN7S1841C34v126Ev();
extern void _ZN7S1841C34v127Ev();
extern void _ZN7S1841C34v128Ev();
extern void _ZN7S1841C34v129Ev();
extern void _ZN7S1841C34v130Ev();
extern void _ZN7S1841C24v131Ev();
extern void _ZN7S1841C24v132Ev();
extern void _ZN7S1841C24v133Ev();
extern void _ZN7S1841C24v134Ev();
extern void _ZN7S1841C24v135Ev();
extern void _ZN7S1841C24v136Ev();
extern void _ZN7S1841C24v137Ev();
extern void _ZN7S1841C24v138Ev();
extern void _ZN7S1841C24v139Ev();
extern void _ZN7S1841C24v140Ev();
extern void _ZN7S1841C24v141Ev();
extern void _ZN7S1841C24v142Ev();
extern void _ZN7S1841C24v143Ev();
extern void _ZN7S1841C24v144Ev();
extern void _ZN7S1841C24v145Ev();
extern void _ZN7S1841C24v146Ev();
extern void _ZN7S1841C24v147Ev();
extern void _ZN7S1841C24v148Ev();
static  VTBL_ENTRY vtc_S1841C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1841C2[0]),
  (VTBL_ENTRY)&_ZN7S1841C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1841C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1841C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v148Ev,
};
extern VTBL_ENTRY _ZTI7S1841C2[];
extern  VTBL_ENTRY _ZTV7S1841C2[];
Class_Descriptor cd_S1841C2 = {  "S1841C2", // class name
  bases_S1841C2, 2,
  &(vtc_S1841C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1841C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1841C2),144, //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  S1841C1  : S1841C2 {
  virtual void  v1(); // _ZN7S1841C12v1Ev
  virtual void  v2(); // _ZN7S1841C12v2Ev
  virtual void  v3(); // _ZN7S1841C12v3Ev
  virtual void  v4(); // _ZN7S1841C12v4Ev
  virtual void  v5(); // _ZN7S1841C12v5Ev
  virtual void  v6(); // _ZN7S1841C12v6Ev
  virtual void  v7(); // _ZN7S1841C12v7Ev
  virtual void  v8(); // _ZN7S1841C12v8Ev
  ~S1841C1(); // tgen
  S1841C1(); // tgen
};
//SIG(1 S1841C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8}


void  S1841C1 ::v1(){vfunc_called(this, "_ZN7S1841C12v1Ev");}
void  S1841C1 ::v2(){vfunc_called(this, "_ZN7S1841C12v2Ev");}
void  S1841C1 ::v3(){vfunc_called(this, "_ZN7S1841C12v3Ev");}
void  S1841C1 ::v4(){vfunc_called(this, "_ZN7S1841C12v4Ev");}
void  S1841C1 ::v5(){vfunc_called(this, "_ZN7S1841C12v5Ev");}
void  S1841C1 ::v6(){vfunc_called(this, "_ZN7S1841C12v6Ev");}
void  S1841C1 ::v7(){vfunc_called(this, "_ZN7S1841C12v7Ev");}
void  S1841C1 ::v8(){vfunc_called(this, "_ZN7S1841C12v8Ev");}
S1841C1 ::~S1841C1(){ note_dtor("S1841C1", this);} // tgen
S1841C1 ::S1841C1(){ note_ctor("S1841C1", this);} // tgen

static void Test_S1841C1()
{
  extern Class_Descriptor cd_S1841C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1841C1, buf);
    S1841C1 *dp, &lv = *(dp=new (buf) S1841C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1841C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1841C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1841C3*)(S1841C2*), 0, "S1841C1");
    check_base_class_offset(lv, (S1841C3*)(S1841C2*), 0, "S1841C1");
    check_base_class_offset(lv, (S1841C2*), 0, "S1841C1");
    test_class_info(&lv, &cd_S1841C1);
    dp->~S1841C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1841C1(Test_S1841C1, "S1841C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1841C1C1Ev();
extern void _ZN7S1841C1D1Ev();
Name_Map name_map_S1841C1[] = {
  NSPAIR(_ZN7S1841C1C1Ev),
  NSPAIR(_ZN7S1841C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1841C3;
extern VTBL_ENTRY _ZTI7S1841C3[];
extern  VTBL_ENTRY _ZTV7S1841C3[];
extern Class_Descriptor cd_S1841C2;
extern VTBL_ENTRY _ZTI7S1841C2[];
extern  VTBL_ENTRY _ZTV7S1841C2[];
static Base_Class bases_S1841C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1841C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1841C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1841C1[];
extern void _ZN7S1841C1D1Ev();
extern void _ZN7S1841C1D0Ev();
extern void _ZN7S1841C32v9Ev();
extern void _ZN7S1841C33v10Ev();
extern void _ZN7S1841C33v11Ev();
extern void _ZN7S1841C33v12Ev();
extern void _ZN7S1841C33v13Ev();
extern void _ZN7S1841C33v14Ev();
extern void _ZN7S1841C33v15Ev();
extern void _ZN7S1841C33v16Ev();
extern void _ZN7S1841C33v17Ev();
extern void _ZN7S1841C33v18Ev();
extern void _ZN7S1841C33v19Ev();
extern void _ZN7S1841C33v20Ev();
extern void _ZN7S1841C33v21Ev();
extern void _ZN7S1841C33v22Ev();
extern void _ZN7S1841C33v23Ev();
extern void _ZN7S1841C33v24Ev();
extern void _ZN7S1841C33v25Ev();
extern void _ZN7S1841C33v26Ev();
extern void _ZN7S1841C33v27Ev();
extern void _ZN7S1841C33v28Ev();
extern void _ZN7S1841C33v29Ev();
extern void _ZN7S1841C33v30Ev();
extern void _ZN7S1841C33v31Ev();
extern void _ZN7S1841C33v32Ev();
extern void _ZN7S1841C33v33Ev();
extern void _ZN7S1841C33v34Ev();
extern void _ZN7S1841C33v35Ev();
extern void _ZN7S1841C33v36Ev();
extern void _ZN7S1841C33v37Ev();
extern void _ZN7S1841C33v38Ev();
extern void _ZN7S1841C33v39Ev();
extern void _ZN7S1841C33v40Ev();
extern void _ZN7S1841C33v41Ev();
extern void _ZN7S1841C33v42Ev();
extern void _ZN7S1841C33v43Ev();
extern void _ZN7S1841C33v44Ev();
extern void _ZN7S1841C33v45Ev();
extern void _ZN7S1841C33v46Ev();
extern void _ZN7S1841C33v47Ev();
extern void _ZN7S1841C33v48Ev();
extern void _ZN7S1841C33v49Ev();
extern void _ZN7S1841C33v50Ev();
extern void _ZN7S1841C33v51Ev();
extern void _ZN7S1841C33v52Ev();
extern void _ZN7S1841C33v53Ev();
extern void _ZN7S1841C33v54Ev();
extern void _ZN7S1841C33v55Ev();
extern void _ZN7S1841C33v56Ev();
extern void _ZN7S1841C33v57Ev();
extern void _ZN7S1841C33v58Ev();
extern void _ZN7S1841C33v59Ev();
extern void _ZN7S1841C33v60Ev();
extern void _ZN7S1841C33v61Ev();
extern void _ZN7S1841C33v62Ev();
extern void _ZN7S1841C33v63Ev();
extern void _ZN7S1841C33v64Ev();
extern void _ZN7S1841C33v65Ev();
extern void _ZN7S1841C33v66Ev();
extern void _ZN7S1841C33v67Ev();
extern void _ZN7S1841C33v68Ev();
extern void _ZN7S1841C33v69Ev();
extern void _ZN7S1841C33v70Ev();
extern void _ZN7S1841C33v71Ev();
extern void _ZN7S1841C33v72Ev();
extern void _ZN7S1841C33v73Ev();
extern void _ZN7S1841C33v74Ev();
extern void _ZN7S1841C33v75Ev();
extern void _ZN7S1841C33v76Ev();
extern void _ZN7S1841C33v77Ev();
extern void _ZN7S1841C33v78Ev();
extern void _ZN7S1841C33v79Ev();
extern void _ZN7S1841C33v80Ev();
extern void _ZN7S1841C33v81Ev();
extern void _ZN7S1841C33v82Ev();
extern void _ZN7S1841C33v83Ev();
extern void _ZN7S1841C33v84Ev();
extern void _ZN7S1841C33v85Ev();
extern void _ZN7S1841C33v86Ev();
extern void _ZN7S1841C33v87Ev();
extern void _ZN7S1841C33v88Ev();
extern void _ZN7S1841C33v89Ev();
extern void _ZN7S1841C33v90Ev();
extern void _ZN7S1841C33v91Ev();
extern void _ZN7S1841C33v92Ev();
extern void _ZN7S1841C33v93Ev();
extern void _ZN7S1841C33v94Ev();
extern void _ZN7S1841C33v95Ev();
extern void _ZN7S1841C33v96Ev();
extern void _ZN7S1841C33v97Ev();
extern void _ZN7S1841C33v98Ev();
extern void _ZN7S1841C33v99Ev();
extern void _ZN7S1841C34v100Ev();
extern void _ZN7S1841C34v101Ev();
extern void _ZN7S1841C34v102Ev();
extern void _ZN7S1841C34v103Ev();
extern void _ZN7S1841C34v104Ev();
extern void _ZN7S1841C34v105Ev();
extern void _ZN7S1841C34v106Ev();
extern void _ZN7S1841C34v107Ev();
extern void _ZN7S1841C34v108Ev();
extern void _ZN7S1841C34v109Ev();
extern void _ZN7S1841C34v110Ev();
extern void _ZN7S1841C34v111Ev();
extern void _ZN7S1841C34v112Ev();
extern void _ZN7S1841C34v113Ev();
extern void _ZN7S1841C34v114Ev();
extern void _ZN7S1841C34v115Ev();
extern void _ZN7S1841C34v116Ev();
extern void _ZN7S1841C34v117Ev();
extern void _ZN7S1841C34v118Ev();
extern void _ZN7S1841C34v119Ev();
extern void _ZN7S1841C34v120Ev();
extern void _ZN7S1841C34v121Ev();
extern void _ZN7S1841C34v122Ev();
extern void _ZN7S1841C34v123Ev();
extern void _ZN7S1841C34v124Ev();
extern void _ZN7S1841C34v125Ev();
extern void _ZN7S1841C34v126Ev();
extern void _ZN7S1841C34v127Ev();
extern void _ZN7S1841C34v128Ev();
extern void _ZN7S1841C34v129Ev();
extern void _ZN7S1841C34v130Ev();
extern void _ZN7S1841C24v131Ev();
extern void _ZN7S1841C24v132Ev();
extern void _ZN7S1841C24v133Ev();
extern void _ZN7S1841C24v134Ev();
extern void _ZN7S1841C24v135Ev();
extern void _ZN7S1841C24v136Ev();
extern void _ZN7S1841C24v137Ev();
extern void _ZN7S1841C24v138Ev();
extern void _ZN7S1841C24v139Ev();
extern void _ZN7S1841C24v140Ev();
extern void _ZN7S1841C24v141Ev();
extern void _ZN7S1841C24v142Ev();
extern void _ZN7S1841C24v143Ev();
extern void _ZN7S1841C24v144Ev();
extern void _ZN7S1841C24v145Ev();
extern void _ZN7S1841C24v146Ev();
extern void _ZN7S1841C24v147Ev();
extern void _ZN7S1841C24v148Ev();
extern void _ZN7S1841C12v1Ev();
extern void _ZN7S1841C12v2Ev();
extern void _ZN7S1841C12v3Ev();
extern void _ZN7S1841C12v4Ev();
extern void _ZN7S1841C12v5Ev();
extern void _ZN7S1841C12v6Ev();
extern void _ZN7S1841C12v7Ev();
extern void _ZN7S1841C12v8Ev();
static  VTBL_ENTRY vtc_S1841C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1841C1[0]),
  (VTBL_ENTRY)&_ZN7S1841C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1841C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1841C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1841C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1841C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1841C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1841C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S1841C1[];
extern  VTBL_ENTRY _ZTV7S1841C1[];
Class_Descriptor cd_S1841C1 = {  "S1841C1", // class name
  bases_S1841C1, 3,
  &(vtc_S1841C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1841C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1841C1),152, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1836C3  : S785C5_nt {
  virtual void  v8(); // _ZN7S1836C32v8Ev
  virtual void  v9(); // _ZN7S1836C32v9Ev
  virtual void  v10(); // _ZN7S1836C33v10Ev
  virtual void  v11(); // _ZN7S1836C33v11Ev
  virtual void  v12(); // _ZN7S1836C33v12Ev
  virtual void  v13(); // _ZN7S1836C33v13Ev
  virtual void  v14(); // _ZN7S1836C33v14Ev
  virtual void  v15(); // _ZN7S1836C33v15Ev
  virtual void  v16(); // _ZN7S1836C33v16Ev
  virtual void  v17(); // _ZN7S1836C33v17Ev
  virtual void  v18(); // _ZN7S1836C33v18Ev
  virtual void  v19(); // _ZN7S1836C33v19Ev
  virtual void  v20(); // _ZN7S1836C33v20Ev
  virtual void  v21(); // _ZN7S1836C33v21Ev
  virtual void  v22(); // _ZN7S1836C33v22Ev
  virtual void  v23(); // _ZN7S1836C33v23Ev
  virtual void  v24(); // _ZN7S1836C33v24Ev
  virtual void  v25(); // _ZN7S1836C33v25Ev
  virtual void  v26(); // _ZN7S1836C33v26Ev
  virtual void  v27(); // _ZN7S1836C33v27Ev
  virtual void  v28(); // _ZN7S1836C33v28Ev
  virtual void  v29(); // _ZN7S1836C33v29Ev
  virtual void  v30(); // _ZN7S1836C33v30Ev
  virtual void  v31(); // _ZN7S1836C33v31Ev
  virtual void  v32(); // _ZN7S1836C33v32Ev
  virtual void  v33(); // _ZN7S1836C33v33Ev
  virtual void  v34(); // _ZN7S1836C33v34Ev
  virtual void  v35(); // _ZN7S1836C33v35Ev
  virtual void  v36(); // _ZN7S1836C33v36Ev
  virtual void  v37(); // _ZN7S1836C33v37Ev
  virtual void  v38(); // _ZN7S1836C33v38Ev
  virtual void  v39(); // _ZN7S1836C33v39Ev
  virtual void  v40(); // _ZN7S1836C33v40Ev
  virtual void  v41(); // _ZN7S1836C33v41Ev
  virtual void  v42(); // _ZN7S1836C33v42Ev
  virtual void  v43(); // _ZN7S1836C33v43Ev
  virtual void  v44(); // _ZN7S1836C33v44Ev
  virtual void  v45(); // _ZN7S1836C33v45Ev
  virtual void  v46(); // _ZN7S1836C33v46Ev
  virtual void  v47(); // _ZN7S1836C33v47Ev
  virtual void  v48(); // _ZN7S1836C33v48Ev
  virtual void  v49(); // _ZN7S1836C33v49Ev
  virtual void  v50(); // _ZN7S1836C33v50Ev
  virtual void  v51(); // _ZN7S1836C33v51Ev
  virtual void  v52(); // _ZN7S1836C33v52Ev
  virtual void  v53(); // _ZN7S1836C33v53Ev
  virtual void  v54(); // _ZN7S1836C33v54Ev
  virtual void  v55(); // _ZN7S1836C33v55Ev
  virtual void  v56(); // _ZN7S1836C33v56Ev
  virtual void  v57(); // _ZN7S1836C33v57Ev
  virtual void  v58(); // _ZN7S1836C33v58Ev
  virtual void  v59(); // _ZN7S1836C33v59Ev
  virtual void  v60(); // _ZN7S1836C33v60Ev
  virtual void  v61(); // _ZN7S1836C33v61Ev
  virtual void  v62(); // _ZN7S1836C33v62Ev
  virtual void  v63(); // _ZN7S1836C33v63Ev
  virtual void  v64(); // _ZN7S1836C33v64Ev
  virtual void  v65(); // _ZN7S1836C33v65Ev
  virtual void  v66(); // _ZN7S1836C33v66Ev
  virtual void  v67(); // _ZN7S1836C33v67Ev
  virtual void  v68(); // _ZN7S1836C33v68Ev
  virtual void  v69(); // _ZN7S1836C33v69Ev
  virtual void  v70(); // _ZN7S1836C33v70Ev
  virtual void  v71(); // _ZN7S1836C33v71Ev
  virtual void  v72(); // _ZN7S1836C33v72Ev
  virtual void  v73(); // _ZN7S1836C33v73Ev
  virtual void  v74(); // _ZN7S1836C33v74Ev
  virtual void  v75(); // _ZN7S1836C33v75Ev
  virtual void  v76(); // _ZN7S1836C33v76Ev
  virtual void  v77(); // _ZN7S1836C33v77Ev
  virtual void  v78(); // _ZN7S1836C33v78Ev
  virtual void  v79(); // _ZN7S1836C33v79Ev
  virtual void  v80(); // _ZN7S1836C33v80Ev
  virtual void  v81(); // _ZN7S1836C33v81Ev
  virtual void  v82(); // _ZN7S1836C33v82Ev
  virtual void  v83(); // _ZN7S1836C33v83Ev
  virtual void  v84(); // _ZN7S1836C33v84Ev
  virtual void  v85(); // _ZN7S1836C33v85Ev
  virtual void  v86(); // _ZN7S1836C33v86Ev
  virtual void  v87(); // _ZN7S1836C33v87Ev
  virtual void  v88(); // _ZN7S1836C33v88Ev
  virtual void  v89(); // _ZN7S1836C33v89Ev
  virtual void  v90(); // _ZN7S1836C33v90Ev
  virtual void  v91(); // _ZN7S1836C33v91Ev
  virtual void  v92(); // _ZN7S1836C33v92Ev
  virtual void  v93(); // _ZN7S1836C33v93Ev
  virtual void  v94(); // _ZN7S1836C33v94Ev
  virtual void  v95(); // _ZN7S1836C33v95Ev
  virtual void  v96(); // _ZN7S1836C33v96Ev
  virtual void  v97(); // _ZN7S1836C33v97Ev
  virtual void  v98(); // _ZN7S1836C33v98Ev
  virtual void  v99(); // _ZN7S1836C33v99Ev
  virtual void  v100(); // _ZN7S1836C34v100Ev
  virtual void  v101(); // _ZN7S1836C34v101Ev
  virtual void  v102(); // _ZN7S1836C34v102Ev
  virtual void  v103(); // _ZN7S1836C34v103Ev
  virtual void  v104(); // _ZN7S1836C34v104Ev
  virtual void  v105(); // _ZN7S1836C34v105Ev
  virtual void  v106(); // _ZN7S1836C34v106Ev
  virtual void  v107(); // _ZN7S1836C34v107Ev
  virtual void  v108(); // _ZN7S1836C34v108Ev
  virtual void  v109(); // _ZN7S1836C34v109Ev
  virtual void  v110(); // _ZN7S1836C34v110Ev
  virtual void  v111(); // _ZN7S1836C34v111Ev
  virtual void  v112(); // _ZN7S1836C34v112Ev
  virtual void  v113(); // _ZN7S1836C34v113Ev
  virtual void  v114(); // _ZN7S1836C34v114Ev
  virtual void  v115(); // _ZN7S1836C34v115Ev
  virtual void  v116(); // _ZN7S1836C34v116Ev
  virtual void  v117(); // _ZN7S1836C34v117Ev
  virtual void  v118(); // _ZN7S1836C34v118Ev
  virtual void  v119(); // _ZN7S1836C34v119Ev
  virtual void  v120(); // _ZN7S1836C34v120Ev
  virtual void  v121(); // _ZN7S1836C34v121Ev
  virtual void  v122(); // _ZN7S1836C34v122Ev
  virtual void  v123(); // _ZN7S1836C34v123Ev
  virtual void  v124(); // _ZN7S1836C34v124Ev
  virtual void  v125(); // _ZN7S1836C34v125Ev
  virtual void  v126(); // _ZN7S1836C34v126Ev
  virtual void  v127(); // _ZN7S1836C34v127Ev
  virtual void  v128(); // _ZN7S1836C34v128Ev
  virtual void  v129(); // _ZN7S1836C34v129Ev
  ~S1836C3(); // tgen
  S1836C3(); // tgen
};
//SIG(-1 S1836C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1836C3 ::v8(){vfunc_called(this, "_ZN7S1836C32v8Ev");}
void  S1836C3 ::v9(){vfunc_called(this, "_ZN7S1836C32v9Ev");}
void  S1836C3 ::v10(){vfunc_called(this, "_ZN7S1836C33v10Ev");}
void  S1836C3 ::v11(){vfunc_called(this, "_ZN7S1836C33v11Ev");}
void  S1836C3 ::v12(){vfunc_called(this, "_ZN7S1836C33v12Ev");}
void  S1836C3 ::v13(){vfunc_called(this, "_ZN7S1836C33v13Ev");}
void  S1836C3 ::v14(){vfunc_called(this, "_ZN7S1836C33v14Ev");}
void  S1836C3 ::v15(){vfunc_called(this, "_ZN7S1836C33v15Ev");}
void  S1836C3 ::v16(){vfunc_called(this, "_ZN7S1836C33v16Ev");}
void  S1836C3 ::v17(){vfunc_called(this, "_ZN7S1836C33v17Ev");}
void  S1836C3 ::v18(){vfunc_called(this, "_ZN7S1836C33v18Ev");}
void  S1836C3 ::v19(){vfunc_called(this, "_ZN7S1836C33v19Ev");}
void  S1836C3 ::v20(){vfunc_called(this, "_ZN7S1836C33v20Ev");}
void  S1836C3 ::v21(){vfunc_called(this, "_ZN7S1836C33v21Ev");}
void  S1836C3 ::v22(){vfunc_called(this, "_ZN7S1836C33v22Ev");}
void  S1836C3 ::v23(){vfunc_called(this, "_ZN7S1836C33v23Ev");}
void  S1836C3 ::v24(){vfunc_called(this, "_ZN7S1836C33v24Ev");}
void  S1836C3 ::v25(){vfunc_called(this, "_ZN7S1836C33v25Ev");}
void  S1836C3 ::v26(){vfunc_called(this, "_ZN7S1836C33v26Ev");}
void  S1836C3 ::v27(){vfunc_called(this, "_ZN7S1836C33v27Ev");}
void  S1836C3 ::v28(){vfunc_called(this, "_ZN7S1836C33v28Ev");}
void  S1836C3 ::v29(){vfunc_called(this, "_ZN7S1836C33v29Ev");}
void  S1836C3 ::v30(){vfunc_called(this, "_ZN7S1836C33v30Ev");}
void  S1836C3 ::v31(){vfunc_called(this, "_ZN7S1836C33v31Ev");}
void  S1836C3 ::v32(){vfunc_called(this, "_ZN7S1836C33v32Ev");}
void  S1836C3 ::v33(){vfunc_called(this, "_ZN7S1836C33v33Ev");}
void  S1836C3 ::v34(){vfunc_called(this, "_ZN7S1836C33v34Ev");}
void  S1836C3 ::v35(){vfunc_called(this, "_ZN7S1836C33v35Ev");}
void  S1836C3 ::v36(){vfunc_called(this, "_ZN7S1836C33v36Ev");}
void  S1836C3 ::v37(){vfunc_called(this, "_ZN7S1836C33v37Ev");}
void  S1836C3 ::v38(){vfunc_called(this, "_ZN7S1836C33v38Ev");}
void  S1836C3 ::v39(){vfunc_called(this, "_ZN7S1836C33v39Ev");}
void  S1836C3 ::v40(){vfunc_called(this, "_ZN7S1836C33v40Ev");}
void  S1836C3 ::v41(){vfunc_called(this, "_ZN7S1836C33v41Ev");}
void  S1836C3 ::v42(){vfunc_called(this, "_ZN7S1836C33v42Ev");}
void  S1836C3 ::v43(){vfunc_called(this, "_ZN7S1836C33v43Ev");}
void  S1836C3 ::v44(){vfunc_called(this, "_ZN7S1836C33v44Ev");}
void  S1836C3 ::v45(){vfunc_called(this, "_ZN7S1836C33v45Ev");}
void  S1836C3 ::v46(){vfunc_called(this, "_ZN7S1836C33v46Ev");}
void  S1836C3 ::v47(){vfunc_called(this, "_ZN7S1836C33v47Ev");}
void  S1836C3 ::v48(){vfunc_called(this, "_ZN7S1836C33v48Ev");}
void  S1836C3 ::v49(){vfunc_called(this, "_ZN7S1836C33v49Ev");}
void  S1836C3 ::v50(){vfunc_called(this, "_ZN7S1836C33v50Ev");}
void  S1836C3 ::v51(){vfunc_called(this, "_ZN7S1836C33v51Ev");}
void  S1836C3 ::v52(){vfunc_called(this, "_ZN7S1836C33v52Ev");}
void  S1836C3 ::v53(){vfunc_called(this, "_ZN7S1836C33v53Ev");}
void  S1836C3 ::v54(){vfunc_called(this, "_ZN7S1836C33v54Ev");}
void  S1836C3 ::v55(){vfunc_called(this, "_ZN7S1836C33v55Ev");}
void  S1836C3 ::v56(){vfunc_called(this, "_ZN7S1836C33v56Ev");}
void  S1836C3 ::v57(){vfunc_called(this, "_ZN7S1836C33v57Ev");}
void  S1836C3 ::v58(){vfunc_called(this, "_ZN7S1836C33v58Ev");}
void  S1836C3 ::v59(){vfunc_called(this, "_ZN7S1836C33v59Ev");}
void  S1836C3 ::v60(){vfunc_called(this, "_ZN7S1836C33v60Ev");}
void  S1836C3 ::v61(){vfunc_called(this, "_ZN7S1836C33v61Ev");}
void  S1836C3 ::v62(){vfunc_called(this, "_ZN7S1836C33v62Ev");}
void  S1836C3 ::v63(){vfunc_called(this, "_ZN7S1836C33v63Ev");}
void  S1836C3 ::v64(){vfunc_called(this, "_ZN7S1836C33v64Ev");}
void  S1836C3 ::v65(){vfunc_called(this, "_ZN7S1836C33v65Ev");}
void  S1836C3 ::v66(){vfunc_called(this, "_ZN7S1836C33v66Ev");}
void  S1836C3 ::v67(){vfunc_called(this, "_ZN7S1836C33v67Ev");}
void  S1836C3 ::v68(){vfunc_called(this, "_ZN7S1836C33v68Ev");}
void  S1836C3 ::v69(){vfunc_called(this, "_ZN7S1836C33v69Ev");}
void  S1836C3 ::v70(){vfunc_called(this, "_ZN7S1836C33v70Ev");}
void  S1836C3 ::v71(){vfunc_called(this, "_ZN7S1836C33v71Ev");}
void  S1836C3 ::v72(){vfunc_called(this, "_ZN7S1836C33v72Ev");}
void  S1836C3 ::v73(){vfunc_called(this, "_ZN7S1836C33v73Ev");}
void  S1836C3 ::v74(){vfunc_called(this, "_ZN7S1836C33v74Ev");}
void  S1836C3 ::v75(){vfunc_called(this, "_ZN7S1836C33v75Ev");}
void  S1836C3 ::v76(){vfunc_called(this, "_ZN7S1836C33v76Ev");}
void  S1836C3 ::v77(){vfunc_called(this, "_ZN7S1836C33v77Ev");}
void  S1836C3 ::v78(){vfunc_called(this, "_ZN7S1836C33v78Ev");}
void  S1836C3 ::v79(){vfunc_called(this, "_ZN7S1836C33v79Ev");}
void  S1836C3 ::v80(){vfunc_called(this, "_ZN7S1836C33v80Ev");}
void  S1836C3 ::v81(){vfunc_called(this, "_ZN7S1836C33v81Ev");}
void  S1836C3 ::v82(){vfunc_called(this, "_ZN7S1836C33v82Ev");}
void  S1836C3 ::v83(){vfunc_called(this, "_ZN7S1836C33v83Ev");}
void  S1836C3 ::v84(){vfunc_called(this, "_ZN7S1836C33v84Ev");}
void  S1836C3 ::v85(){vfunc_called(this, "_ZN7S1836C33v85Ev");}
void  S1836C3 ::v86(){vfunc_called(this, "_ZN7S1836C33v86Ev");}
void  S1836C3 ::v87(){vfunc_called(this, "_ZN7S1836C33v87Ev");}
void  S1836C3 ::v88(){vfunc_called(this, "_ZN7S1836C33v88Ev");}
void  S1836C3 ::v89(){vfunc_called(this, "_ZN7S1836C33v89Ev");}
void  S1836C3 ::v90(){vfunc_called(this, "_ZN7S1836C33v90Ev");}
void  S1836C3 ::v91(){vfunc_called(this, "_ZN7S1836C33v91Ev");}
void  S1836C3 ::v92(){vfunc_called(this, "_ZN7S1836C33v92Ev");}
void  S1836C3 ::v93(){vfunc_called(this, "_ZN7S1836C33v93Ev");}
void  S1836C3 ::v94(){vfunc_called(this, "_ZN7S1836C33v94Ev");}
void  S1836C3 ::v95(){vfunc_called(this, "_ZN7S1836C33v95Ev");}
void  S1836C3 ::v96(){vfunc_called(this, "_ZN7S1836C33v96Ev");}
void  S1836C3 ::v97(){vfunc_called(this, "_ZN7S1836C33v97Ev");}
void  S1836C3 ::v98(){vfunc_called(this, "_ZN7S1836C33v98Ev");}
void  S1836C3 ::v99(){vfunc_called(this, "_ZN7S1836C33v99Ev");}
void  S1836C3 ::v100(){vfunc_called(this, "_ZN7S1836C34v100Ev");}
void  S1836C3 ::v101(){vfunc_called(this, "_ZN7S1836C34v101Ev");}
void  S1836C3 ::v102(){vfunc_called(this, "_ZN7S1836C34v102Ev");}
void  S1836C3 ::v103(){vfunc_called(this, "_ZN7S1836C34v103Ev");}
void  S1836C3 ::v104(){vfunc_called(this, "_ZN7S1836C34v104Ev");}
void  S1836C3 ::v105(){vfunc_called(this, "_ZN7S1836C34v105Ev");}
void  S1836C3 ::v106(){vfunc_called(this, "_ZN7S1836C34v106Ev");}
void  S1836C3 ::v107(){vfunc_called(this, "_ZN7S1836C34v107Ev");}
void  S1836C3 ::v108(){vfunc_called(this, "_ZN7S1836C34v108Ev");}
void  S1836C3 ::v109(){vfunc_called(this, "_ZN7S1836C34v109Ev");}
void  S1836C3 ::v110(){vfunc_called(this, "_ZN7S1836C34v110Ev");}
void  S1836C3 ::v111(){vfunc_called(this, "_ZN7S1836C34v111Ev");}
void  S1836C3 ::v112(){vfunc_called(this, "_ZN7S1836C34v112Ev");}
void  S1836C3 ::v113(){vfunc_called(this, "_ZN7S1836C34v113Ev");}
void  S1836C3 ::v114(){vfunc_called(this, "_ZN7S1836C34v114Ev");}
void  S1836C3 ::v115(){vfunc_called(this, "_ZN7S1836C34v115Ev");}
void  S1836C3 ::v116(){vfunc_called(this, "_ZN7S1836C34v116Ev");}
void  S1836C3 ::v117(){vfunc_called(this, "_ZN7S1836C34v117Ev");}
void  S1836C3 ::v118(){vfunc_called(this, "_ZN7S1836C34v118Ev");}
void  S1836C3 ::v119(){vfunc_called(this, "_ZN7S1836C34v119Ev");}
void  S1836C3 ::v120(){vfunc_called(this, "_ZN7S1836C34v120Ev");}
void  S1836C3 ::v121(){vfunc_called(this, "_ZN7S1836C34v121Ev");}
void  S1836C3 ::v122(){vfunc_called(this, "_ZN7S1836C34v122Ev");}
void  S1836C3 ::v123(){vfunc_called(this, "_ZN7S1836C34v123Ev");}
void  S1836C3 ::v124(){vfunc_called(this, "_ZN7S1836C34v124Ev");}
void  S1836C3 ::v125(){vfunc_called(this, "_ZN7S1836C34v125Ev");}
void  S1836C3 ::v126(){vfunc_called(this, "_ZN7S1836C34v126Ev");}
void  S1836C3 ::v127(){vfunc_called(this, "_ZN7S1836C34v127Ev");}
void  S1836C3 ::v128(){vfunc_called(this, "_ZN7S1836C34v128Ev");}
void  S1836C3 ::v129(){vfunc_called(this, "_ZN7S1836C34v129Ev");}
S1836C3 ::~S1836C3(){ note_dtor("S1836C3", this);} // tgen
S1836C3 ::S1836C3(){ note_ctor("S1836C3", this);} // tgen

static void Test_S1836C3()
{
  extern Class_Descriptor cd_S1836C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1836C3, buf);
    S1836C3 *dp, &lv = *(dp=new (buf) S1836C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1836C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1836C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1836C3");
    test_class_info(&lv, &cd_S1836C3);
    dp->~S1836C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1836C3(Test_S1836C3, "S1836C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1836C3C1Ev();
extern void _ZN7S1836C3D1Ev();
Name_Map name_map_S1836C3[] = {
  NSPAIR(_ZN7S1836C3C1Ev),
  NSPAIR(_ZN7S1836C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1836C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1836C3[];
extern void _ZN7S1836C3D1Ev();
extern void _ZN7S1836C3D0Ev();
extern void _ZN7S1836C32v8Ev();
extern void _ZN7S1836C32v9Ev();
extern void _ZN7S1836C33v10Ev();
extern void _ZN7S1836C33v11Ev();
extern void _ZN7S1836C33v12Ev();
extern void _ZN7S1836C33v13Ev();
extern void _ZN7S1836C33v14Ev();
extern void _ZN7S1836C33v15Ev();
extern void _ZN7S1836C33v16Ev();
extern void _ZN7S1836C33v17Ev();
extern void _ZN7S1836C33v18Ev();
extern void _ZN7S1836C33v19Ev();
extern void _ZN7S1836C33v20Ev();
extern void _ZN7S1836C33v21Ev();
extern void _ZN7S1836C33v22Ev();
extern void _ZN7S1836C33v23Ev();
extern void _ZN7S1836C33v24Ev();
extern void _ZN7S1836C33v25Ev();
extern void _ZN7S1836C33v26Ev();
extern void _ZN7S1836C33v27Ev();
extern void _ZN7S1836C33v28Ev();
extern void _ZN7S1836C33v29Ev();
extern void _ZN7S1836C33v30Ev();
extern void _ZN7S1836C33v31Ev();
extern void _ZN7S1836C33v32Ev();
extern void _ZN7S1836C33v33Ev();
extern void _ZN7S1836C33v34Ev();
extern void _ZN7S1836C33v35Ev();
extern void _ZN7S1836C33v36Ev();
extern void _ZN7S1836C33v37Ev();
extern void _ZN7S1836C33v38Ev();
extern void _ZN7S1836C33v39Ev();
extern void _ZN7S1836C33v40Ev();
extern void _ZN7S1836C33v41Ev();
extern void _ZN7S1836C33v42Ev();
extern void _ZN7S1836C33v43Ev();
extern void _ZN7S1836C33v44Ev();
extern void _ZN7S1836C33v45Ev();
extern void _ZN7S1836C33v46Ev();
extern void _ZN7S1836C33v47Ev();
extern void _ZN7S1836C33v48Ev();
extern void _ZN7S1836C33v49Ev();
extern void _ZN7S1836C33v50Ev();
extern void _ZN7S1836C33v51Ev();
extern void _ZN7S1836C33v52Ev();
extern void _ZN7S1836C33v53Ev();
extern void _ZN7S1836C33v54Ev();
extern void _ZN7S1836C33v55Ev();
extern void _ZN7S1836C33v56Ev();
extern void _ZN7S1836C33v57Ev();
extern void _ZN7S1836C33v58Ev();
extern void _ZN7S1836C33v59Ev();
extern void _ZN7S1836C33v60Ev();
extern void _ZN7S1836C33v61Ev();
extern void _ZN7S1836C33v62Ev();
extern void _ZN7S1836C33v63Ev();
extern void _ZN7S1836C33v64Ev();
extern void _ZN7S1836C33v65Ev();
extern void _ZN7S1836C33v66Ev();
extern void _ZN7S1836C33v67Ev();
extern void _ZN7S1836C33v68Ev();
extern void _ZN7S1836C33v69Ev();
extern void _ZN7S1836C33v70Ev();
extern void _ZN7S1836C33v71Ev();
extern void _ZN7S1836C33v72Ev();
extern void _ZN7S1836C33v73Ev();
extern void _ZN7S1836C33v74Ev();
extern void _ZN7S1836C33v75Ev();
extern void _ZN7S1836C33v76Ev();
extern void _ZN7S1836C33v77Ev();
extern void _ZN7S1836C33v78Ev();
extern void _ZN7S1836C33v79Ev();
extern void _ZN7S1836C33v80Ev();
extern void _ZN7S1836C33v81Ev();
extern void _ZN7S1836C33v82Ev();
extern void _ZN7S1836C33v83Ev();
extern void _ZN7S1836C33v84Ev();
extern void _ZN7S1836C33v85Ev();
extern void _ZN7S1836C33v86Ev();
extern void _ZN7S1836C33v87Ev();
extern void _ZN7S1836C33v88Ev();
extern void _ZN7S1836C33v89Ev();
extern void _ZN7S1836C33v90Ev();
extern void _ZN7S1836C33v91Ev();
extern void _ZN7S1836C33v92Ev();
extern void _ZN7S1836C33v93Ev();
extern void _ZN7S1836C33v94Ev();
extern void _ZN7S1836C33v95Ev();
extern void _ZN7S1836C33v96Ev();
extern void _ZN7S1836C33v97Ev();
extern void _ZN7S1836C33v98Ev();
extern void _ZN7S1836C33v99Ev();
extern void _ZN7S1836C34v100Ev();
extern void _ZN7S1836C34v101Ev();
extern void _ZN7S1836C34v102Ev();
extern void _ZN7S1836C34v103Ev();
extern void _ZN7S1836C34v104Ev();
extern void _ZN7S1836C34v105Ev();
extern void _ZN7S1836C34v106Ev();
extern void _ZN7S1836C34v107Ev();
extern void _ZN7S1836C34v108Ev();
extern void _ZN7S1836C34v109Ev();
extern void _ZN7S1836C34v110Ev();
extern void _ZN7S1836C34v111Ev();
extern void _ZN7S1836C34v112Ev();
extern void _ZN7S1836C34v113Ev();
extern void _ZN7S1836C34v114Ev();
extern void _ZN7S1836C34v115Ev();
extern void _ZN7S1836C34v116Ev();
extern void _ZN7S1836C34v117Ev();
extern void _ZN7S1836C34v118Ev();
extern void _ZN7S1836C34v119Ev();
extern void _ZN7S1836C34v120Ev();
extern void _ZN7S1836C34v121Ev();
extern void _ZN7S1836C34v122Ev();
extern void _ZN7S1836C34v123Ev();
extern void _ZN7S1836C34v124Ev();
extern void _ZN7S1836C34v125Ev();
extern void _ZN7S1836C34v126Ev();
extern void _ZN7S1836C34v127Ev();
extern void _ZN7S1836C34v128Ev();
extern void _ZN7S1836C34v129Ev();
static  VTBL_ENTRY vtc_S1836C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1836C3[0]),
  (VTBL_ENTRY)&_ZN7S1836C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1836C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v129Ev,
};
extern VTBL_ENTRY _ZTI7S1836C3[];
extern  VTBL_ENTRY _ZTV7S1836C3[];
Class_Descriptor cd_S1836C3 = {  "S1836C3", // class name
  bases_S1836C3, 1,
  &(vtc_S1836C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1836C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1836C3),126, //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  S1836C2  : S1836C3 {
  virtual void  v130(); // _ZN7S1836C24v130Ev
  virtual void  v131(); // _ZN7S1836C24v131Ev
  virtual void  v132(); // _ZN7S1836C24v132Ev
  virtual void  v133(); // _ZN7S1836C24v133Ev
  virtual void  v134(); // _ZN7S1836C24v134Ev
  virtual void  v135(); // _ZN7S1836C24v135Ev
  virtual void  v136(); // _ZN7S1836C24v136Ev
  virtual void  v137(); // _ZN7S1836C24v137Ev
  virtual void  v138(); // _ZN7S1836C24v138Ev
  virtual void  v139(); // _ZN7S1836C24v139Ev
  virtual void  v140(); // _ZN7S1836C24v140Ev
  virtual void  v141(); // _ZN7S1836C24v141Ev
  virtual void  v142(); // _ZN7S1836C24v142Ev
  virtual void  v143(); // _ZN7S1836C24v143Ev
  virtual void  v144(); // _ZN7S1836C24v144Ev
  virtual void  v145(); // _ZN7S1836C24v145Ev
  virtual void  v146(); // _ZN7S1836C24v146Ev
  virtual void  v147(); // _ZN7S1836C24v147Ev
  ~S1836C2(); // tgen
  S1836C2(); // tgen
};
//SIG(-1 S1836C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1836C2 ::v130(){vfunc_called(this, "_ZN7S1836C24v130Ev");}
void  S1836C2 ::v131(){vfunc_called(this, "_ZN7S1836C24v131Ev");}
void  S1836C2 ::v132(){vfunc_called(this, "_ZN7S1836C24v132Ev");}
void  S1836C2 ::v133(){vfunc_called(this, "_ZN7S1836C24v133Ev");}
void  S1836C2 ::v134(){vfunc_called(this, "_ZN7S1836C24v134Ev");}
void  S1836C2 ::v135(){vfunc_called(this, "_ZN7S1836C24v135Ev");}
void  S1836C2 ::v136(){vfunc_called(this, "_ZN7S1836C24v136Ev");}
void  S1836C2 ::v137(){vfunc_called(this, "_ZN7S1836C24v137Ev");}
void  S1836C2 ::v138(){vfunc_called(this, "_ZN7S1836C24v138Ev");}
void  S1836C2 ::v139(){vfunc_called(this, "_ZN7S1836C24v139Ev");}
void  S1836C2 ::v140(){vfunc_called(this, "_ZN7S1836C24v140Ev");}
void  S1836C2 ::v141(){vfunc_called(this, "_ZN7S1836C24v141Ev");}
void  S1836C2 ::v142(){vfunc_called(this, "_ZN7S1836C24v142Ev");}
void  S1836C2 ::v143(){vfunc_called(this, "_ZN7S1836C24v143Ev");}
void  S1836C2 ::v144(){vfunc_called(this, "_ZN7S1836C24v144Ev");}
void  S1836C2 ::v145(){vfunc_called(this, "_ZN7S1836C24v145Ev");}
void  S1836C2 ::v146(){vfunc_called(this, "_ZN7S1836C24v146Ev");}
void  S1836C2 ::v147(){vfunc_called(this, "_ZN7S1836C24v147Ev");}
S1836C2 ::~S1836C2(){ note_dtor("S1836C2", this);} // tgen
S1836C2 ::S1836C2(){ note_ctor("S1836C2", this);} // tgen

static void Test_S1836C2()
{
  extern Class_Descriptor cd_S1836C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1836C2, buf);
    S1836C2 *dp, &lv = *(dp=new (buf) S1836C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1836C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1836C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1836C3*), 0, "S1836C2");
    check_base_class_offset(lv, (S1836C3*), 0, "S1836C2");
    test_class_info(&lv, &cd_S1836C2);
    dp->~S1836C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1836C2(Test_S1836C2, "S1836C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1836C2C1Ev();
extern void _ZN7S1836C2D1Ev();
Name_Map name_map_S1836C2[] = {
  NSPAIR(_ZN7S1836C2C1Ev),
  NSPAIR(_ZN7S1836C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1836C3;
extern VTBL_ENTRY _ZTI7S1836C3[];
extern  VTBL_ENTRY _ZTV7S1836C3[];
static Base_Class bases_S1836C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1836C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1836C2[];
extern void _ZN7S1836C2D1Ev();
extern void _ZN7S1836C2D0Ev();
extern void _ZN7S1836C32v8Ev();
extern void _ZN7S1836C32v9Ev();
extern void _ZN7S1836C33v10Ev();
extern void _ZN7S1836C33v11Ev();
extern void _ZN7S1836C33v12Ev();
extern void _ZN7S1836C33v13Ev();
extern void _ZN7S1836C33v14Ev();
extern void _ZN7S1836C33v15Ev();
extern void _ZN7S1836C33v16Ev();
extern void _ZN7S1836C33v17Ev();
extern void _ZN7S1836C33v18Ev();
extern void _ZN7S1836C33v19Ev();
extern void _ZN7S1836C33v20Ev();
extern void _ZN7S1836C33v21Ev();
extern void _ZN7S1836C33v22Ev();
extern void _ZN7S1836C33v23Ev();
extern void _ZN7S1836C33v24Ev();
extern void _ZN7S1836C33v25Ev();
extern void _ZN7S1836C33v26Ev();
extern void _ZN7S1836C33v27Ev();
extern void _ZN7S1836C33v28Ev();
extern void _ZN7S1836C33v29Ev();
extern void _ZN7S1836C33v30Ev();
extern void _ZN7S1836C33v31Ev();
extern void _ZN7S1836C33v32Ev();
extern void _ZN7S1836C33v33Ev();
extern void _ZN7S1836C33v34Ev();
extern void _ZN7S1836C33v35Ev();
extern void _ZN7S1836C33v36Ev();
extern void _ZN7S1836C33v37Ev();
extern void _ZN7S1836C33v38Ev();
extern void _ZN7S1836C33v39Ev();
extern void _ZN7S1836C33v40Ev();
extern void _ZN7S1836C33v41Ev();
extern void _ZN7S1836C33v42Ev();
extern void _ZN7S1836C33v43Ev();
extern void _ZN7S1836C33v44Ev();
extern void _ZN7S1836C33v45Ev();
extern void _ZN7S1836C33v46Ev();
extern void _ZN7S1836C33v47Ev();
extern void _ZN7S1836C33v48Ev();
extern void _ZN7S1836C33v49Ev();
extern void _ZN7S1836C33v50Ev();
extern void _ZN7S1836C33v51Ev();
extern void _ZN7S1836C33v52Ev();
extern void _ZN7S1836C33v53Ev();
extern void _ZN7S1836C33v54Ev();
extern void _ZN7S1836C33v55Ev();
extern void _ZN7S1836C33v56Ev();
extern void _ZN7S1836C33v57Ev();
extern void _ZN7S1836C33v58Ev();
extern void _ZN7S1836C33v59Ev();
extern void _ZN7S1836C33v60Ev();
extern void _ZN7S1836C33v61Ev();
extern void _ZN7S1836C33v62Ev();
extern void _ZN7S1836C33v63Ev();
extern void _ZN7S1836C33v64Ev();
extern void _ZN7S1836C33v65Ev();
extern void _ZN7S1836C33v66Ev();
extern void _ZN7S1836C33v67Ev();
extern void _ZN7S1836C33v68Ev();
extern void _ZN7S1836C33v69Ev();
extern void _ZN7S1836C33v70Ev();
extern void _ZN7S1836C33v71Ev();
extern void _ZN7S1836C33v72Ev();
extern void _ZN7S1836C33v73Ev();
extern void _ZN7S1836C33v74Ev();
extern void _ZN7S1836C33v75Ev();
extern void _ZN7S1836C33v76Ev();
extern void _ZN7S1836C33v77Ev();
extern void _ZN7S1836C33v78Ev();
extern void _ZN7S1836C33v79Ev();
extern void _ZN7S1836C33v80Ev();
extern void _ZN7S1836C33v81Ev();
extern void _ZN7S1836C33v82Ev();
extern void _ZN7S1836C33v83Ev();
extern void _ZN7S1836C33v84Ev();
extern void _ZN7S1836C33v85Ev();
extern void _ZN7S1836C33v86Ev();
extern void _ZN7S1836C33v87Ev();
extern void _ZN7S1836C33v88Ev();
extern void _ZN7S1836C33v89Ev();
extern void _ZN7S1836C33v90Ev();
extern void _ZN7S1836C33v91Ev();
extern void _ZN7S1836C33v92Ev();
extern void _ZN7S1836C33v93Ev();
extern void _ZN7S1836C33v94Ev();
extern void _ZN7S1836C33v95Ev();
extern void _ZN7S1836C33v96Ev();
extern void _ZN7S1836C33v97Ev();
extern void _ZN7S1836C33v98Ev();
extern void _ZN7S1836C33v99Ev();
extern void _ZN7S1836C34v100Ev();
extern void _ZN7S1836C34v101Ev();
extern void _ZN7S1836C34v102Ev();
extern void _ZN7S1836C34v103Ev();
extern void _ZN7S1836C34v104Ev();
extern void _ZN7S1836C34v105Ev();
extern void _ZN7S1836C34v106Ev();
extern void _ZN7S1836C34v107Ev();
extern void _ZN7S1836C34v108Ev();
extern void _ZN7S1836C34v109Ev();
extern void _ZN7S1836C34v110Ev();
extern void _ZN7S1836C34v111Ev();
extern void _ZN7S1836C34v112Ev();
extern void _ZN7S1836C34v113Ev();
extern void _ZN7S1836C34v114Ev();
extern void _ZN7S1836C34v115Ev();
extern void _ZN7S1836C34v116Ev();
extern void _ZN7S1836C34v117Ev();
extern void _ZN7S1836C34v118Ev();
extern void _ZN7S1836C34v119Ev();
extern void _ZN7S1836C34v120Ev();
extern void _ZN7S1836C34v121Ev();
extern void _ZN7S1836C34v122Ev();
extern void _ZN7S1836C34v123Ev();
extern void _ZN7S1836C34v124Ev();
extern void _ZN7S1836C34v125Ev();
extern void _ZN7S1836C34v126Ev();
extern void _ZN7S1836C34v127Ev();
extern void _ZN7S1836C34v128Ev();
extern void _ZN7S1836C34v129Ev();
extern void _ZN7S1836C24v130Ev();
extern void _ZN7S1836C24v131Ev();
extern void _ZN7S1836C24v132Ev();
extern void _ZN7S1836C24v133Ev();
extern void _ZN7S1836C24v134Ev();
extern void _ZN7S1836C24v135Ev();
extern void _ZN7S1836C24v136Ev();
extern void _ZN7S1836C24v137Ev();
extern void _ZN7S1836C24v138Ev();
extern void _ZN7S1836C24v139Ev();
extern void _ZN7S1836C24v140Ev();
extern void _ZN7S1836C24v141Ev();
extern void _ZN7S1836C24v142Ev();
extern void _ZN7S1836C24v143Ev();
extern void _ZN7S1836C24v144Ev();
extern void _ZN7S1836C24v145Ev();
extern void _ZN7S1836C24v146Ev();
extern void _ZN7S1836C24v147Ev();
static  VTBL_ENTRY vtc_S1836C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1836C2[0]),
  (VTBL_ENTRY)&_ZN7S1836C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1836C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v147Ev,
};
extern VTBL_ENTRY _ZTI7S1836C2[];
extern  VTBL_ENTRY _ZTV7S1836C2[];
Class_Descriptor cd_S1836C2 = {  "S1836C2", // class name
  bases_S1836C2, 2,
  &(vtc_S1836C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1836C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1836C2),144, //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  S1836C1  : S1836C2 {
  virtual void  v1(); // _ZN7S1836C12v1Ev
  virtual void  v2(); // _ZN7S1836C12v2Ev
  virtual void  v3(); // _ZN7S1836C12v3Ev
  virtual void  v4(); // _ZN7S1836C12v4Ev
  virtual void  v5(); // _ZN7S1836C12v5Ev
  virtual void  v6(); // _ZN7S1836C12v6Ev
  virtual void  v7(); // _ZN7S1836C12v7Ev
  ~S1836C1(); // tgen
  S1836C1(); // tgen
};
//SIG(1 S1836C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7}


void  S1836C1 ::v1(){vfunc_called(this, "_ZN7S1836C12v1Ev");}
void  S1836C1 ::v2(){vfunc_called(this, "_ZN7S1836C12v2Ev");}
void  S1836C1 ::v3(){vfunc_called(this, "_ZN7S1836C12v3Ev");}
void  S1836C1 ::v4(){vfunc_called(this, "_ZN7S1836C12v4Ev");}
void  S1836C1 ::v5(){vfunc_called(this, "_ZN7S1836C12v5Ev");}
void  S1836C1 ::v6(){vfunc_called(this, "_ZN7S1836C12v6Ev");}
void  S1836C1 ::v7(){vfunc_called(this, "_ZN7S1836C12v7Ev");}
S1836C1 ::~S1836C1(){ note_dtor("S1836C1", this);} // tgen
S1836C1 ::S1836C1(){ note_ctor("S1836C1", this);} // tgen

static void Test_S1836C1()
{
  extern Class_Descriptor cd_S1836C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1836C1, buf);
    S1836C1 *dp, &lv = *(dp=new (buf) S1836C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1836C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1836C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1836C3*)(S1836C2*), 0, "S1836C1");
    check_base_class_offset(lv, (S1836C3*)(S1836C2*), 0, "S1836C1");
    check_base_class_offset(lv, (S1836C2*), 0, "S1836C1");
    test_class_info(&lv, &cd_S1836C1);
    dp->~S1836C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1836C1(Test_S1836C1, "S1836C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1836C1C1Ev();
extern void _ZN7S1836C1D1Ev();
Name_Map name_map_S1836C1[] = {
  NSPAIR(_ZN7S1836C1C1Ev),
  NSPAIR(_ZN7S1836C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1836C3;
extern VTBL_ENTRY _ZTI7S1836C3[];
extern  VTBL_ENTRY _ZTV7S1836C3[];
extern Class_Descriptor cd_S1836C2;
extern VTBL_ENTRY _ZTI7S1836C2[];
extern  VTBL_ENTRY _ZTV7S1836C2[];
static Base_Class bases_S1836C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1836C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1836C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1836C1[];
extern void _ZN7S1836C1D1Ev();
extern void _ZN7S1836C1D0Ev();
extern void _ZN7S1836C32v8Ev();
extern void _ZN7S1836C32v9Ev();
extern void _ZN7S1836C33v10Ev();
extern void _ZN7S1836C33v11Ev();
extern void _ZN7S1836C33v12Ev();
extern void _ZN7S1836C33v13Ev();
extern void _ZN7S1836C33v14Ev();
extern void _ZN7S1836C33v15Ev();
extern void _ZN7S1836C33v16Ev();
extern void _ZN7S1836C33v17Ev();
extern void _ZN7S1836C33v18Ev();
extern void _ZN7S1836C33v19Ev();
extern void _ZN7S1836C33v20Ev();
extern void _ZN7S1836C33v21Ev();
extern void _ZN7S1836C33v22Ev();
extern void _ZN7S1836C33v23Ev();
extern void _ZN7S1836C33v24Ev();
extern void _ZN7S1836C33v25Ev();
extern void _ZN7S1836C33v26Ev();
extern void _ZN7S1836C33v27Ev();
extern void _ZN7S1836C33v28Ev();
extern void _ZN7S1836C33v29Ev();
extern void _ZN7S1836C33v30Ev();
extern void _ZN7S1836C33v31Ev();
extern void _ZN7S1836C33v32Ev();
extern void _ZN7S1836C33v33Ev();
extern void _ZN7S1836C33v34Ev();
extern void _ZN7S1836C33v35Ev();
extern void _ZN7S1836C33v36Ev();
extern void _ZN7S1836C33v37Ev();
extern void _ZN7S1836C33v38Ev();
extern void _ZN7S1836C33v39Ev();
extern void _ZN7S1836C33v40Ev();
extern void _ZN7S1836C33v41Ev();
extern void _ZN7S1836C33v42Ev();
extern void _ZN7S1836C33v43Ev();
extern void _ZN7S1836C33v44Ev();
extern void _ZN7S1836C33v45Ev();
extern void _ZN7S1836C33v46Ev();
extern void _ZN7S1836C33v47Ev();
extern void _ZN7S1836C33v48Ev();
extern void _ZN7S1836C33v49Ev();
extern void _ZN7S1836C33v50Ev();
extern void _ZN7S1836C33v51Ev();
extern void _ZN7S1836C33v52Ev();
extern void _ZN7S1836C33v53Ev();
extern void _ZN7S1836C33v54Ev();
extern void _ZN7S1836C33v55Ev();
extern void _ZN7S1836C33v56Ev();
extern void _ZN7S1836C33v57Ev();
extern void _ZN7S1836C33v58Ev();
extern void _ZN7S1836C33v59Ev();
extern void _ZN7S1836C33v60Ev();
extern void _ZN7S1836C33v61Ev();
extern void _ZN7S1836C33v62Ev();
extern void _ZN7S1836C33v63Ev();
extern void _ZN7S1836C33v64Ev();
extern void _ZN7S1836C33v65Ev();
extern void _ZN7S1836C33v66Ev();
extern void _ZN7S1836C33v67Ev();
extern void _ZN7S1836C33v68Ev();
extern void _ZN7S1836C33v69Ev();
extern void _ZN7S1836C33v70Ev();
extern void _ZN7S1836C33v71Ev();
extern void _ZN7S1836C33v72Ev();
extern void _ZN7S1836C33v73Ev();
extern void _ZN7S1836C33v74Ev();
extern void _ZN7S1836C33v75Ev();
extern void _ZN7S1836C33v76Ev();
extern void _ZN7S1836C33v77Ev();
extern void _ZN7S1836C33v78Ev();
extern void _ZN7S1836C33v79Ev();
extern void _ZN7S1836C33v80Ev();
extern void _ZN7S1836C33v81Ev();
extern void _ZN7S1836C33v82Ev();
extern void _ZN7S1836C33v83Ev();
extern void _ZN7S1836C33v84Ev();
extern void _ZN7S1836C33v85Ev();
extern void _ZN7S1836C33v86Ev();
extern void _ZN7S1836C33v87Ev();
extern void _ZN7S1836C33v88Ev();
extern void _ZN7S1836C33v89Ev();
extern void _ZN7S1836C33v90Ev();
extern void _ZN7S1836C33v91Ev();
extern void _ZN7S1836C33v92Ev();
extern void _ZN7S1836C33v93Ev();
extern void _ZN7S1836C33v94Ev();
extern void _ZN7S1836C33v95Ev();
extern void _ZN7S1836C33v96Ev();
extern void _ZN7S1836C33v97Ev();
extern void _ZN7S1836C33v98Ev();
extern void _ZN7S1836C33v99Ev();
extern void _ZN7S1836C34v100Ev();
extern void _ZN7S1836C34v101Ev();
extern void _ZN7S1836C34v102Ev();
extern void _ZN7S1836C34v103Ev();
extern void _ZN7S1836C34v104Ev();
extern void _ZN7S1836C34v105Ev();
extern void _ZN7S1836C34v106Ev();
extern void _ZN7S1836C34v107Ev();
extern void _ZN7S1836C34v108Ev();
extern void _ZN7S1836C34v109Ev();
extern void _ZN7S1836C34v110Ev();
extern void _ZN7S1836C34v111Ev();
extern void _ZN7S1836C34v112Ev();
extern void _ZN7S1836C34v113Ev();
extern void _ZN7S1836C34v114Ev();
extern void _ZN7S1836C34v115Ev();
extern void _ZN7S1836C34v116Ev();
extern void _ZN7S1836C34v117Ev();
extern void _ZN7S1836C34v118Ev();
extern void _ZN7S1836C34v119Ev();
extern void _ZN7S1836C34v120Ev();
extern void _ZN7S1836C34v121Ev();
extern void _ZN7S1836C34v122Ev();
extern void _ZN7S1836C34v123Ev();
extern void _ZN7S1836C34v124Ev();
extern void _ZN7S1836C34v125Ev();
extern void _ZN7S1836C34v126Ev();
extern void _ZN7S1836C34v127Ev();
extern void _ZN7S1836C34v128Ev();
extern void _ZN7S1836C34v129Ev();
extern void _ZN7S1836C24v130Ev();
extern void _ZN7S1836C24v131Ev();
extern void _ZN7S1836C24v132Ev();
extern void _ZN7S1836C24v133Ev();
extern void _ZN7S1836C24v134Ev();
extern void _ZN7S1836C24v135Ev();
extern void _ZN7S1836C24v136Ev();
extern void _ZN7S1836C24v137Ev();
extern void _ZN7S1836C24v138Ev();
extern void _ZN7S1836C24v139Ev();
extern void _ZN7S1836C24v140Ev();
extern void _ZN7S1836C24v141Ev();
extern void _ZN7S1836C24v142Ev();
extern void _ZN7S1836C24v143Ev();
extern void _ZN7S1836C24v144Ev();
extern void _ZN7S1836C24v145Ev();
extern void _ZN7S1836C24v146Ev();
extern void _ZN7S1836C24v147Ev();
extern void _ZN7S1836C12v1Ev();
extern void _ZN7S1836C12v2Ev();
extern void _ZN7S1836C12v3Ev();
extern void _ZN7S1836C12v4Ev();
extern void _ZN7S1836C12v5Ev();
extern void _ZN7S1836C12v6Ev();
extern void _ZN7S1836C12v7Ev();
static  VTBL_ENTRY vtc_S1836C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1836C1[0]),
  (VTBL_ENTRY)&_ZN7S1836C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1836C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1836C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1836C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1836C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1836C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1836C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S1836C1[];
extern  VTBL_ENTRY _ZTV7S1836C1[];
Class_Descriptor cd_S1836C1 = {  "S1836C1", // class name
  bases_S1836C1, 3,
  &(vtc_S1836C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1836C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1836C1),151, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S786C4  : S785C5_nt {
  virtual void  v6(); // _ZN6S786C42v6Ev
  virtual void  v7(); // _ZN6S786C42v7Ev
  virtual void  v8(); // _ZN6S786C42v8Ev
  virtual void  v9(); // _ZN6S786C42v9Ev
  virtual void  v10(); // _ZN6S786C43v10Ev
  virtual void  v11(); // _ZN6S786C43v11Ev
  virtual void  v12(); // _ZN6S786C43v12Ev
  virtual void  v13(); // _ZN6S786C43v13Ev
  virtual void  v14(); // _ZN6S786C43v14Ev
  virtual void  v15(); // _ZN6S786C43v15Ev
  virtual void  v16(); // _ZN6S786C43v16Ev
  virtual void  v17(); // _ZN6S786C43v17Ev
  virtual void  v18(); // _ZN6S786C43v18Ev
  virtual void  v19(); // _ZN6S786C43v19Ev
  virtual void  v20(); // _ZN6S786C43v20Ev
  virtual void  v21(); // _ZN6S786C43v21Ev
  virtual void  v22(); // _ZN6S786C43v22Ev
  virtual void  v23(); // _ZN6S786C43v23Ev
  virtual void  v24(); // _ZN6S786C43v24Ev
  virtual void  v25(); // _ZN6S786C43v25Ev
  virtual void  v26(); // _ZN6S786C43v26Ev
  virtual void  v27(); // _ZN6S786C43v27Ev
  virtual void  v28(); // _ZN6S786C43v28Ev
  virtual void  v29(); // _ZN6S786C43v29Ev
  virtual void  v30(); // _ZN6S786C43v30Ev
  virtual void  v31(); // _ZN6S786C43v31Ev
  virtual void  v32(); // _ZN6S786C43v32Ev
  virtual void  v33(); // _ZN6S786C43v33Ev
  virtual void  v34(); // _ZN6S786C43v34Ev
  virtual void  v35(); // _ZN6S786C43v35Ev
  virtual void  v36(); // _ZN6S786C43v36Ev
  virtual void  v37(); // _ZN6S786C43v37Ev
  virtual void  v38(); // _ZN6S786C43v38Ev
  virtual void  v39(); // _ZN6S786C43v39Ev
  virtual void  v40(); // _ZN6S786C43v40Ev
  virtual void  v41(); // _ZN6S786C43v41Ev
  virtual void  v42(); // _ZN6S786C43v42Ev
  virtual void  v43(); // _ZN6S786C43v43Ev
  virtual void  v44(); // _ZN6S786C43v44Ev
  virtual void  v45(); // _ZN6S786C43v45Ev
  virtual void  v46(); // _ZN6S786C43v46Ev
  virtual void  v47(); // _ZN6S786C43v47Ev
  virtual void  v48(); // _ZN6S786C43v48Ev
  virtual void  v49(); // _ZN6S786C43v49Ev
  virtual void  v50(); // _ZN6S786C43v50Ev
  virtual void  v51(); // _ZN6S786C43v51Ev
  virtual void  v52(); // _ZN6S786C43v52Ev
  virtual void  v53(); // _ZN6S786C43v53Ev
  virtual void  v54(); // _ZN6S786C43v54Ev
  virtual void  v55(); // _ZN6S786C43v55Ev
  virtual void  v56(); // _ZN6S786C43v56Ev
  virtual void  v57(); // _ZN6S786C43v57Ev
  virtual void  v58(); // _ZN6S786C43v58Ev
  virtual void  v59(); // _ZN6S786C43v59Ev
  virtual void  v60(); // _ZN6S786C43v60Ev
  virtual void  v61(); // _ZN6S786C43v61Ev
  virtual void  v62(); // _ZN6S786C43v62Ev
  virtual void  v63(); // _ZN6S786C43v63Ev
  virtual void  v64(); // _ZN6S786C43v64Ev
  virtual void  v65(); // _ZN6S786C43v65Ev
  virtual void  v66(); // _ZN6S786C43v66Ev
  virtual void  v67(); // _ZN6S786C43v67Ev
  virtual void  v68(); // _ZN6S786C43v68Ev
  virtual void  v69(); // _ZN6S786C43v69Ev
  virtual void  v70(); // _ZN6S786C43v70Ev
  virtual void  v71(); // _ZN6S786C43v71Ev
  virtual void  v72(); // _ZN6S786C43v72Ev
  virtual void  v73(); // _ZN6S786C43v73Ev
  virtual void  v74(); // _ZN6S786C43v74Ev
  virtual void  v75(); // _ZN6S786C43v75Ev
  virtual void  v76(); // _ZN6S786C43v76Ev
  virtual void  v77(); // _ZN6S786C43v77Ev
  virtual void  v78(); // _ZN6S786C43v78Ev
  virtual void  v79(); // _ZN6S786C43v79Ev
  virtual void  v80(); // _ZN6S786C43v80Ev
  virtual void  v81(); // _ZN6S786C43v81Ev
  virtual void  v82(); // _ZN6S786C43v82Ev
  virtual void  v83(); // _ZN6S786C43v83Ev
  virtual void  v84(); // _ZN6S786C43v84Ev
  virtual void  v85(); // _ZN6S786C43v85Ev
  virtual void  v86(); // _ZN6S786C43v86Ev
  virtual void  v87(); // _ZN6S786C43v87Ev
  virtual void  v88(); // _ZN6S786C43v88Ev
  virtual void  v89(); // _ZN6S786C43v89Ev
  virtual void  v90(); // _ZN6S786C43v90Ev
  virtual void  v91(); // _ZN6S786C43v91Ev
  virtual void  v92(); // _ZN6S786C43v92Ev
  virtual void  v93(); // _ZN6S786C43v93Ev
  virtual void  v94(); // _ZN6S786C43v94Ev
  virtual void  v95(); // _ZN6S786C43v95Ev
  virtual void  v96(); // _ZN6S786C43v96Ev
  virtual void  v97(); // _ZN6S786C43v97Ev
  virtual void  v98(); // _ZN6S786C43v98Ev
  virtual void  v99(); // _ZN6S786C43v99Ev
  virtual void  v100(); // _ZN6S786C44v100Ev
  virtual void  v101(); // _ZN6S786C44v101Ev
  virtual void  v102(); // _ZN6S786C44v102Ev
  virtual void  v103(); // _ZN6S786C44v103Ev
  virtual void  v104(); // _ZN6S786C44v104Ev
  virtual void  v105(); // _ZN6S786C44v105Ev
  virtual void  v106(); // _ZN6S786C44v106Ev
  virtual void  v107(); // _ZN6S786C44v107Ev
  virtual void  v108(); // _ZN6S786C44v108Ev
  virtual void  v109(); // _ZN6S786C44v109Ev
  virtual void  v110(); // _ZN6S786C44v110Ev
  virtual void  v111(); // _ZN6S786C44v111Ev
  virtual void  v112(); // _ZN6S786C44v112Ev
  virtual void  v113(); // _ZN6S786C44v113Ev
  virtual void  v114(); // _ZN6S786C44v114Ev
  virtual void  v115(); // _ZN6S786C44v115Ev
  virtual void  v116(); // _ZN6S786C44v116Ev
  virtual void  v117(); // _ZN6S786C44v117Ev
  virtual void  v118(); // _ZN6S786C44v118Ev
  virtual void  v119(); // _ZN6S786C44v119Ev
  virtual void  v120(); // _ZN6S786C44v120Ev
  virtual void  v121(); // _ZN6S786C44v121Ev
  virtual void  v122(); // _ZN6S786C44v122Ev
  virtual void  v123(); // _ZN6S786C44v123Ev
  virtual void  v124(); // _ZN6S786C44v124Ev
  virtual void  v125(); // _ZN6S786C44v125Ev
  virtual void  v126(); // _ZN6S786C44v126Ev
  virtual void  v127(); // _ZN6S786C44v127Ev
  ~S786C4(); // tgen
  S786C4(); // tgen
};
//SIG(-1 S786C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S786C4 ::v6(){vfunc_called(this, "_ZN6S786C42v6Ev");}
void  S786C4 ::v7(){vfunc_called(this, "_ZN6S786C42v7Ev");}
void  S786C4 ::v8(){vfunc_called(this, "_ZN6S786C42v8Ev");}
void  S786C4 ::v9(){vfunc_called(this, "_ZN6S786C42v9Ev");}
void  S786C4 ::v10(){vfunc_called(this, "_ZN6S786C43v10Ev");}
void  S786C4 ::v11(){vfunc_called(this, "_ZN6S786C43v11Ev");}
void  S786C4 ::v12(){vfunc_called(this, "_ZN6S786C43v12Ev");}
void  S786C4 ::v13(){vfunc_called(this, "_ZN6S786C43v13Ev");}
void  S786C4 ::v14(){vfunc_called(this, "_ZN6S786C43v14Ev");}
void  S786C4 ::v15(){vfunc_called(this, "_ZN6S786C43v15Ev");}
void  S786C4 ::v16(){vfunc_called(this, "_ZN6S786C43v16Ev");}
void  S786C4 ::v17(){vfunc_called(this, "_ZN6S786C43v17Ev");}
void  S786C4 ::v18(){vfunc_called(this, "_ZN6S786C43v18Ev");}
void  S786C4 ::v19(){vfunc_called(this, "_ZN6S786C43v19Ev");}
void  S786C4 ::v20(){vfunc_called(this, "_ZN6S786C43v20Ev");}
void  S786C4 ::v21(){vfunc_called(this, "_ZN6S786C43v21Ev");}
void  S786C4 ::v22(){vfunc_called(this, "_ZN6S786C43v22Ev");}
void  S786C4 ::v23(){vfunc_called(this, "_ZN6S786C43v23Ev");}
void  S786C4 ::v24(){vfunc_called(this, "_ZN6S786C43v24Ev");}
void  S786C4 ::v25(){vfunc_called(this, "_ZN6S786C43v25Ev");}
void  S786C4 ::v26(){vfunc_called(this, "_ZN6S786C43v26Ev");}
void  S786C4 ::v27(){vfunc_called(this, "_ZN6S786C43v27Ev");}
void  S786C4 ::v28(){vfunc_called(this, "_ZN6S786C43v28Ev");}
void  S786C4 ::v29(){vfunc_called(this, "_ZN6S786C43v29Ev");}
void  S786C4 ::v30(){vfunc_called(this, "_ZN6S786C43v30Ev");}
void  S786C4 ::v31(){vfunc_called(this, "_ZN6S786C43v31Ev");}
void  S786C4 ::v32(){vfunc_called(this, "_ZN6S786C43v32Ev");}
void  S786C4 ::v33(){vfunc_called(this, "_ZN6S786C43v33Ev");}
void  S786C4 ::v34(){vfunc_called(this, "_ZN6S786C43v34Ev");}
void  S786C4 ::v35(){vfunc_called(this, "_ZN6S786C43v35Ev");}
void  S786C4 ::v36(){vfunc_called(this, "_ZN6S786C43v36Ev");}
void  S786C4 ::v37(){vfunc_called(this, "_ZN6S786C43v37Ev");}
void  S786C4 ::v38(){vfunc_called(this, "_ZN6S786C43v38Ev");}
void  S786C4 ::v39(){vfunc_called(this, "_ZN6S786C43v39Ev");}
void  S786C4 ::v40(){vfunc_called(this, "_ZN6S786C43v40Ev");}
void  S786C4 ::v41(){vfunc_called(this, "_ZN6S786C43v41Ev");}
void  S786C4 ::v42(){vfunc_called(this, "_ZN6S786C43v42Ev");}
void  S786C4 ::v43(){vfunc_called(this, "_ZN6S786C43v43Ev");}
void  S786C4 ::v44(){vfunc_called(this, "_ZN6S786C43v44Ev");}
void  S786C4 ::v45(){vfunc_called(this, "_ZN6S786C43v45Ev");}
void  S786C4 ::v46(){vfunc_called(this, "_ZN6S786C43v46Ev");}
void  S786C4 ::v47(){vfunc_called(this, "_ZN6S786C43v47Ev");}
void  S786C4 ::v48(){vfunc_called(this, "_ZN6S786C43v48Ev");}
void  S786C4 ::v49(){vfunc_called(this, "_ZN6S786C43v49Ev");}
void  S786C4 ::v50(){vfunc_called(this, "_ZN6S786C43v50Ev");}
void  S786C4 ::v51(){vfunc_called(this, "_ZN6S786C43v51Ev");}
void  S786C4 ::v52(){vfunc_called(this, "_ZN6S786C43v52Ev");}
void  S786C4 ::v53(){vfunc_called(this, "_ZN6S786C43v53Ev");}
void  S786C4 ::v54(){vfunc_called(this, "_ZN6S786C43v54Ev");}
void  S786C4 ::v55(){vfunc_called(this, "_ZN6S786C43v55Ev");}
void  S786C4 ::v56(){vfunc_called(this, "_ZN6S786C43v56Ev");}
void  S786C4 ::v57(){vfunc_called(this, "_ZN6S786C43v57Ev");}
void  S786C4 ::v58(){vfunc_called(this, "_ZN6S786C43v58Ev");}
void  S786C4 ::v59(){vfunc_called(this, "_ZN6S786C43v59Ev");}
void  S786C4 ::v60(){vfunc_called(this, "_ZN6S786C43v60Ev");}
void  S786C4 ::v61(){vfunc_called(this, "_ZN6S786C43v61Ev");}
void  S786C4 ::v62(){vfunc_called(this, "_ZN6S786C43v62Ev");}
void  S786C4 ::v63(){vfunc_called(this, "_ZN6S786C43v63Ev");}
void  S786C4 ::v64(){vfunc_called(this, "_ZN6S786C43v64Ev");}
void  S786C4 ::v65(){vfunc_called(this, "_ZN6S786C43v65Ev");}
void  S786C4 ::v66(){vfunc_called(this, "_ZN6S786C43v66Ev");}
void  S786C4 ::v67(){vfunc_called(this, "_ZN6S786C43v67Ev");}
void  S786C4 ::v68(){vfunc_called(this, "_ZN6S786C43v68Ev");}
void  S786C4 ::v69(){vfunc_called(this, "_ZN6S786C43v69Ev");}
void  S786C4 ::v70(){vfunc_called(this, "_ZN6S786C43v70Ev");}
void  S786C4 ::v71(){vfunc_called(this, "_ZN6S786C43v71Ev");}
void  S786C4 ::v72(){vfunc_called(this, "_ZN6S786C43v72Ev");}
void  S786C4 ::v73(){vfunc_called(this, "_ZN6S786C43v73Ev");}
void  S786C4 ::v74(){vfunc_called(this, "_ZN6S786C43v74Ev");}
void  S786C4 ::v75(){vfunc_called(this, "_ZN6S786C43v75Ev");}
void  S786C4 ::v76(){vfunc_called(this, "_ZN6S786C43v76Ev");}
void  S786C4 ::v77(){vfunc_called(this, "_ZN6S786C43v77Ev");}
void  S786C4 ::v78(){vfunc_called(this, "_ZN6S786C43v78Ev");}
void  S786C4 ::v79(){vfunc_called(this, "_ZN6S786C43v79Ev");}
void  S786C4 ::v80(){vfunc_called(this, "_ZN6S786C43v80Ev");}
void  S786C4 ::v81(){vfunc_called(this, "_ZN6S786C43v81Ev");}
void  S786C4 ::v82(){vfunc_called(this, "_ZN6S786C43v82Ev");}
void  S786C4 ::v83(){vfunc_called(this, "_ZN6S786C43v83Ev");}
void  S786C4 ::v84(){vfunc_called(this, "_ZN6S786C43v84Ev");}
void  S786C4 ::v85(){vfunc_called(this, "_ZN6S786C43v85Ev");}
void  S786C4 ::v86(){vfunc_called(this, "_ZN6S786C43v86Ev");}
void  S786C4 ::v87(){vfunc_called(this, "_ZN6S786C43v87Ev");}
void  S786C4 ::v88(){vfunc_called(this, "_ZN6S786C43v88Ev");}
void  S786C4 ::v89(){vfunc_called(this, "_ZN6S786C43v89Ev");}
void  S786C4 ::v90(){vfunc_called(this, "_ZN6S786C43v90Ev");}
void  S786C4 ::v91(){vfunc_called(this, "_ZN6S786C43v91Ev");}
void  S786C4 ::v92(){vfunc_called(this, "_ZN6S786C43v92Ev");}
void  S786C4 ::v93(){vfunc_called(this, "_ZN6S786C43v93Ev");}
void  S786C4 ::v94(){vfunc_called(this, "_ZN6S786C43v94Ev");}
void  S786C4 ::v95(){vfunc_called(this, "_ZN6S786C43v95Ev");}
void  S786C4 ::v96(){vfunc_called(this, "_ZN6S786C43v96Ev");}
void  S786C4 ::v97(){vfunc_called(this, "_ZN6S786C43v97Ev");}
void  S786C4 ::v98(){vfunc_called(this, "_ZN6S786C43v98Ev");}
void  S786C4 ::v99(){vfunc_called(this, "_ZN6S786C43v99Ev");}
void  S786C4 ::v100(){vfunc_called(this, "_ZN6S786C44v100Ev");}
void  S786C4 ::v101(){vfunc_called(this, "_ZN6S786C44v101Ev");}
void  S786C4 ::v102(){vfunc_called(this, "_ZN6S786C44v102Ev");}
void  S786C4 ::v103(){vfunc_called(this, "_ZN6S786C44v103Ev");}
void  S786C4 ::v104(){vfunc_called(this, "_ZN6S786C44v104Ev");}
void  S786C4 ::v105(){vfunc_called(this, "_ZN6S786C44v105Ev");}
void  S786C4 ::v106(){vfunc_called(this, "_ZN6S786C44v106Ev");}
void  S786C4 ::v107(){vfunc_called(this, "_ZN6S786C44v107Ev");}
void  S786C4 ::v108(){vfunc_called(this, "_ZN6S786C44v108Ev");}
void  S786C4 ::v109(){vfunc_called(this, "_ZN6S786C44v109Ev");}
void  S786C4 ::v110(){vfunc_called(this, "_ZN6S786C44v110Ev");}
void  S786C4 ::v111(){vfunc_called(this, "_ZN6S786C44v111Ev");}
void  S786C4 ::v112(){vfunc_called(this, "_ZN6S786C44v112Ev");}
void  S786C4 ::v113(){vfunc_called(this, "_ZN6S786C44v113Ev");}
void  S786C4 ::v114(){vfunc_called(this, "_ZN6S786C44v114Ev");}
void  S786C4 ::v115(){vfunc_called(this, "_ZN6S786C44v115Ev");}
void  S786C4 ::v116(){vfunc_called(this, "_ZN6S786C44v116Ev");}
void  S786C4 ::v117(){vfunc_called(this, "_ZN6S786C44v117Ev");}
void  S786C4 ::v118(){vfunc_called(this, "_ZN6S786C44v118Ev");}
void  S786C4 ::v119(){vfunc_called(this, "_ZN6S786C44v119Ev");}
void  S786C4 ::v120(){vfunc_called(this, "_ZN6S786C44v120Ev");}
void  S786C4 ::v121(){vfunc_called(this, "_ZN6S786C44v121Ev");}
void  S786C4 ::v122(){vfunc_called(this, "_ZN6S786C44v122Ev");}
void  S786C4 ::v123(){vfunc_called(this, "_ZN6S786C44v123Ev");}
void  S786C4 ::v124(){vfunc_called(this, "_ZN6S786C44v124Ev");}
void  S786C4 ::v125(){vfunc_called(this, "_ZN6S786C44v125Ev");}
void  S786C4 ::v126(){vfunc_called(this, "_ZN6S786C44v126Ev");}
void  S786C4 ::v127(){vfunc_called(this, "_ZN6S786C44v127Ev");}
S786C4 ::~S786C4(){ note_dtor("S786C4", this);} // tgen
S786C4 ::S786C4(){ note_ctor("S786C4", this);} // tgen

static void Test_S786C4()
{
  extern Class_Descriptor cd_S786C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S786C4, buf);
    S786C4 *dp, &lv = *(dp=new (buf) S786C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S786C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S786C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S786C4");
    test_class_info(&lv, &cd_S786C4);
    dp->~S786C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS786C4(Test_S786C4, "S786C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S786C4C1Ev();
extern void _ZN6S786C4D1Ev();
Name_Map name_map_S786C4[] = {
  NSPAIR(_ZN6S786C4C1Ev),
  NSPAIR(_ZN6S786C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S786C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S786C4[];
extern void _ZN6S786C4D1Ev();
extern void _ZN6S786C4D0Ev();
extern void _ZN6S786C42v6Ev();
extern void _ZN6S786C42v7Ev();
extern void _ZN6S786C42v8Ev();
extern void _ZN6S786C42v9Ev();
extern void _ZN6S786C43v10Ev();
extern void _ZN6S786C43v11Ev();
extern void _ZN6S786C43v12Ev();
extern void _ZN6S786C43v13Ev();
extern void _ZN6S786C43v14Ev();
extern void _ZN6S786C43v15Ev();
extern void _ZN6S786C43v16Ev();
extern void _ZN6S786C43v17Ev();
extern void _ZN6S786C43v18Ev();
extern void _ZN6S786C43v19Ev();
extern void _ZN6S786C43v20Ev();
extern void _ZN6S786C43v21Ev();
extern void _ZN6S786C43v22Ev();
extern void _ZN6S786C43v23Ev();
extern void _ZN6S786C43v24Ev();
extern void _ZN6S786C43v25Ev();
extern void _ZN6S786C43v26Ev();
extern void _ZN6S786C43v27Ev();
extern void _ZN6S786C43v28Ev();
extern void _ZN6S786C43v29Ev();
extern void _ZN6S786C43v30Ev();
extern void _ZN6S786C43v31Ev();
extern void _ZN6S786C43v32Ev();
extern void _ZN6S786C43v33Ev();
extern void _ZN6S786C43v34Ev();
extern void _ZN6S786C43v35Ev();
extern void _ZN6S786C43v36Ev();
extern void _ZN6S786C43v37Ev();
extern void _ZN6S786C43v38Ev();
extern void _ZN6S786C43v39Ev();
extern void _ZN6S786C43v40Ev();
extern void _ZN6S786C43v41Ev();
extern void _ZN6S786C43v42Ev();
extern void _ZN6S786C43v43Ev();
extern void _ZN6S786C43v44Ev();
extern void _ZN6S786C43v45Ev();
extern void _ZN6S786C43v46Ev();
extern void _ZN6S786C43v47Ev();
extern void _ZN6S786C43v48Ev();
extern void _ZN6S786C43v49Ev();
extern void _ZN6S786C43v50Ev();
extern void _ZN6S786C43v51Ev();
extern void _ZN6S786C43v52Ev();
extern void _ZN6S786C43v53Ev();
extern void _ZN6S786C43v54Ev();
extern void _ZN6S786C43v55Ev();
extern void _ZN6S786C43v56Ev();
extern void _ZN6S786C43v57Ev();
extern void _ZN6S786C43v58Ev();
extern void _ZN6S786C43v59Ev();
extern void _ZN6S786C43v60Ev();
extern void _ZN6S786C43v61Ev();
extern void _ZN6S786C43v62Ev();
extern void _ZN6S786C43v63Ev();
extern void _ZN6S786C43v64Ev();
extern void _ZN6S786C43v65Ev();
extern void _ZN6S786C43v66Ev();
extern void _ZN6S786C43v67Ev();
extern void _ZN6S786C43v68Ev();
extern void _ZN6S786C43v69Ev();
extern void _ZN6S786C43v70Ev();
extern void _ZN6S786C43v71Ev();
extern void _ZN6S786C43v72Ev();
extern void _ZN6S786C43v73Ev();
extern void _ZN6S786C43v74Ev();
extern void _ZN6S786C43v75Ev();
extern void _ZN6S786C43v76Ev();
extern void _ZN6S786C43v77Ev();
extern void _ZN6S786C43v78Ev();
extern void _ZN6S786C43v79Ev();
extern void _ZN6S786C43v80Ev();
extern void _ZN6S786C43v81Ev();
extern void _ZN6S786C43v82Ev();
extern void _ZN6S786C43v83Ev();
extern void _ZN6S786C43v84Ev();
extern void _ZN6S786C43v85Ev();
extern void _ZN6S786C43v86Ev();
extern void _ZN6S786C43v87Ev();
extern void _ZN6S786C43v88Ev();
extern void _ZN6S786C43v89Ev();
extern void _ZN6S786C43v90Ev();
extern void _ZN6S786C43v91Ev();
extern void _ZN6S786C43v92Ev();
extern void _ZN6S786C43v93Ev();
extern void _ZN6S786C43v94Ev();
extern void _ZN6S786C43v95Ev();
extern void _ZN6S786C43v96Ev();
extern void _ZN6S786C43v97Ev();
extern void _ZN6S786C43v98Ev();
extern void _ZN6S786C43v99Ev();
extern void _ZN6S786C44v100Ev();
extern void _ZN6S786C44v101Ev();
extern void _ZN6S786C44v102Ev();
extern void _ZN6S786C44v103Ev();
extern void _ZN6S786C44v104Ev();
extern void _ZN6S786C44v105Ev();
extern void _ZN6S786C44v106Ev();
extern void _ZN6S786C44v107Ev();
extern void _ZN6S786C44v108Ev();
extern void _ZN6S786C44v109Ev();
extern void _ZN6S786C44v110Ev();
extern void _ZN6S786C44v111Ev();
extern void _ZN6S786C44v112Ev();
extern void _ZN6S786C44v113Ev();
extern void _ZN6S786C44v114Ev();
extern void _ZN6S786C44v115Ev();
extern void _ZN6S786C44v116Ev();
extern void _ZN6S786C44v117Ev();
extern void _ZN6S786C44v118Ev();
extern void _ZN6S786C44v119Ev();
extern void _ZN6S786C44v120Ev();
extern void _ZN6S786C44v121Ev();
extern void _ZN6S786C44v122Ev();
extern void _ZN6S786C44v123Ev();
extern void _ZN6S786C44v124Ev();
extern void _ZN6S786C44v125Ev();
extern void _ZN6S786C44v126Ev();
extern void _ZN6S786C44v127Ev();
static  VTBL_ENTRY vtc_S786C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S786C4[0]),
  (VTBL_ENTRY)&_ZN6S786C4D1Ev,
  (VTBL_ENTRY)&_ZN6S786C4D0Ev,
  (VTBL_ENTRY)&_ZN6S786C42v6Ev,
  (VTBL_ENTRY)&_ZN6S786C42v7Ev,
  (VTBL_ENTRY)&_ZN6S786C42v8Ev,
  (VTBL_ENTRY)&_ZN6S786C42v9Ev,
  (VTBL_ENTRY)&_ZN6S786C43v10Ev,
  (VTBL_ENTRY)&_ZN6S786C43v11Ev,
  (VTBL_ENTRY)&_ZN6S786C43v12Ev,
  (VTBL_ENTRY)&_ZN6S786C43v13Ev,
  (VTBL_ENTRY)&_ZN6S786C43v14Ev,
  (VTBL_ENTRY)&_ZN6S786C43v15Ev,
  (VTBL_ENTRY)&_ZN6S786C43v16Ev,
  (VTBL_ENTRY)&_ZN6S786C43v17Ev,
  (VTBL_ENTRY)&_ZN6S786C43v18Ev,
  (VTBL_ENTRY)&_ZN6S786C43v19Ev,
  (VTBL_ENTRY)&_ZN6S786C43v20Ev,
  (VTBL_ENTRY)&_ZN6S786C43v21Ev,
  (VTBL_ENTRY)&_ZN6S786C43v22Ev,
  (VTBL_ENTRY)&_ZN6S786C43v23Ev,
  (VTBL_ENTRY)&_ZN6S786C43v24Ev,
  (VTBL_ENTRY)&_ZN6S786C43v25Ev,
  (VTBL_ENTRY)&_ZN6S786C43v26Ev,
  (VTBL_ENTRY)&_ZN6S786C43v27Ev,
  (VTBL_ENTRY)&_ZN6S786C43v28Ev,
  (VTBL_ENTRY)&_ZN6S786C43v29Ev,
  (VTBL_ENTRY)&_ZN6S786C43v30Ev,
  (VTBL_ENTRY)&_ZN6S786C43v31Ev,
  (VTBL_ENTRY)&_ZN6S786C43v32Ev,
  (VTBL_ENTRY)&_ZN6S786C43v33Ev,
  (VTBL_ENTRY)&_ZN6S786C43v34Ev,
  (VTBL_ENTRY)&_ZN6S786C43v35Ev,
  (VTBL_ENTRY)&_ZN6S786C43v36Ev,
  (VTBL_ENTRY)&_ZN6S786C43v37Ev,
  (VTBL_ENTRY)&_ZN6S786C43v38Ev,
  (VTBL_ENTRY)&_ZN6S786C43v39Ev,
  (VTBL_ENTRY)&_ZN6S786C43v40Ev,
  (VTBL_ENTRY)&_ZN6S786C43v41Ev,
  (VTBL_ENTRY)&_ZN6S786C43v42Ev,
  (VTBL_ENTRY)&_ZN6S786C43v43Ev,
  (VTBL_ENTRY)&_ZN6S786C43v44Ev,
  (VTBL_ENTRY)&_ZN6S786C43v45Ev,
  (VTBL_ENTRY)&_ZN6S786C43v46Ev,
  (VTBL_ENTRY)&_ZN6S786C43v47Ev,
  (VTBL_ENTRY)&_ZN6S786C43v48Ev,
  (VTBL_ENTRY)&_ZN6S786C43v49Ev,
  (VTBL_ENTRY)&_ZN6S786C43v50Ev,
  (VTBL_ENTRY)&_ZN6S786C43v51Ev,
  (VTBL_ENTRY)&_ZN6S786C43v52Ev,
  (VTBL_ENTRY)&_ZN6S786C43v53Ev,
  (VTBL_ENTRY)&_ZN6S786C43v54Ev,
  (VTBL_ENTRY)&_ZN6S786C43v55Ev,
  (VTBL_ENTRY)&_ZN6S786C43v56Ev,
  (VTBL_ENTRY)&_ZN6S786C43v57Ev,
  (VTBL_ENTRY)&_ZN6S786C43v58Ev,
  (VTBL_ENTRY)&_ZN6S786C43v59Ev,
  (VTBL_ENTRY)&_ZN6S786C43v60Ev,
  (VTBL_ENTRY)&_ZN6S786C43v61Ev,
  (VTBL_ENTRY)&_ZN6S786C43v62Ev,
  (VTBL_ENTRY)&_ZN6S786C43v63Ev,
  (VTBL_ENTRY)&_ZN6S786C43v64Ev,
  (VTBL_ENTRY)&_ZN6S786C43v65Ev,
  (VTBL_ENTRY)&_ZN6S786C43v66Ev,
  (VTBL_ENTRY)&_ZN6S786C43v67Ev,
  (VTBL_ENTRY)&_ZN6S786C43v68Ev,
  (VTBL_ENTRY)&_ZN6S786C43v69Ev,
  (VTBL_ENTRY)&_ZN6S786C43v70Ev,
  (VTBL_ENTRY)&_ZN6S786C43v71Ev,
  (VTBL_ENTRY)&_ZN6S786C43v72Ev,
  (VTBL_ENTRY)&_ZN6S786C43v73Ev,
  (VTBL_ENTRY)&_ZN6S786C43v74Ev,
  (VTBL_ENTRY)&_ZN6S786C43v75Ev,
  (VTBL_ENTRY)&_ZN6S786C43v76Ev,
  (VTBL_ENTRY)&_ZN6S786C43v77Ev,
  (VTBL_ENTRY)&_ZN6S786C43v78Ev,
  (VTBL_ENTRY)&_ZN6S786C43v79Ev,
  (VTBL_ENTRY)&_ZN6S786C43v80Ev,
  (VTBL_ENTRY)&_ZN6S786C43v81Ev,
  (VTBL_ENTRY)&_ZN6S786C43v82Ev,
  (VTBL_ENTRY)&_ZN6S786C43v83Ev,
  (VTBL_ENTRY)&_ZN6S786C43v84Ev,
  (VTBL_ENTRY)&_ZN6S786C43v85Ev,
  (VTBL_ENTRY)&_ZN6S786C43v86Ev,
  (VTBL_ENTRY)&_ZN6S786C43v87Ev,
  (VTBL_ENTRY)&_ZN6S786C43v88Ev,
  (VTBL_ENTRY)&_ZN6S786C43v89Ev,
  (VTBL_ENTRY)&_ZN6S786C43v90Ev,
  (VTBL_ENTRY)&_ZN6S786C43v91Ev,
  (VTBL_ENTRY)&_ZN6S786C43v92Ev,
  (VTBL_ENTRY)&_ZN6S786C43v93Ev,
  (VTBL_ENTRY)&_ZN6S786C43v94Ev,
  (VTBL_ENTRY)&_ZN6S786C43v95Ev,
  (VTBL_ENTRY)&_ZN6S786C43v96Ev,
  (VTBL_ENTRY)&_ZN6S786C43v97Ev,
  (VTBL_ENTRY)&_ZN6S786C43v98Ev,
  (VTBL_ENTRY)&_ZN6S786C43v99Ev,
  (VTBL_ENTRY)&_ZN6S786C44v100Ev,
  (VTBL_ENTRY)&_ZN6S786C44v101Ev,
  (VTBL_ENTRY)&_ZN6S786C44v102Ev,
  (VTBL_ENTRY)&_ZN6S786C44v103Ev,
  (VTBL_ENTRY)&_ZN6S786C44v104Ev,
  (VTBL_ENTRY)&_ZN6S786C44v105Ev,
  (VTBL_ENTRY)&_ZN6S786C44v106Ev,
  (VTBL_ENTRY)&_ZN6S786C44v107Ev,
  (VTBL_ENTRY)&_ZN6S786C44v108Ev,
  (VTBL_ENTRY)&_ZN6S786C44v109Ev,
  (VTBL_ENTRY)&_ZN6S786C44v110Ev,
  (VTBL_ENTRY)&_ZN6S786C44v111Ev,
  (VTBL_ENTRY)&_ZN6S786C44v112Ev,
  (VTBL_ENTRY)&_ZN6S786C44v113Ev,
  (VTBL_ENTRY)&_ZN6S786C44v114Ev,
  (VTBL_ENTRY)&_ZN6S786C44v115Ev,
  (VTBL_ENTRY)&_ZN6S786C44v116Ev,
  (VTBL_ENTRY)&_ZN6S786C44v117Ev,
  (VTBL_ENTRY)&_ZN6S786C44v118Ev,
  (VTBL_ENTRY)&_ZN6S786C44v119Ev,
  (VTBL_ENTRY)&_ZN6S786C44v120Ev,
  (VTBL_ENTRY)&_ZN6S786C44v121Ev,
  (VTBL_ENTRY)&_ZN6S786C44v122Ev,
  (VTBL_ENTRY)&_ZN6S786C44v123Ev,
  (VTBL_ENTRY)&_ZN6S786C44v124Ev,
  (VTBL_ENTRY)&_ZN6S786C44v125Ev,
  (VTBL_ENTRY)&_ZN6S786C44v126Ev,
  (VTBL_ENTRY)&_ZN6S786C44v127Ev,
};
extern VTBL_ENTRY _ZTI6S786C4[];
extern  VTBL_ENTRY _ZTV6S786C4[];
Class_Descriptor cd_S786C4 = {  "S786C4", // class name
  bases_S786C4, 1,
  &(vtc_S786C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S786C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S786C4),126, //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  S786C3  : S786C4 {
  virtual void  v128(); // _ZN6S786C34v128Ev
  virtual void  v129(); // _ZN6S786C34v129Ev
  virtual void  v130(); // _ZN6S786C34v130Ev
  virtual void  v131(); // _ZN6S786C34v131Ev
  virtual void  v132(); // _ZN6S786C34v132Ev
  virtual void  v133(); // _ZN6S786C34v133Ev
  virtual void  v134(); // _ZN6S786C34v134Ev
  virtual void  v135(); // _ZN6S786C34v135Ev
  virtual void  v136(); // _ZN6S786C34v136Ev
  virtual void  v137(); // _ZN6S786C34v137Ev
  virtual void  v138(); // _ZN6S786C34v138Ev
  virtual void  v139(); // _ZN6S786C34v139Ev
  virtual void  v140(); // _ZN6S786C34v140Ev
  virtual void  v141(); // _ZN6S786C34v141Ev
  virtual void  v142(); // _ZN6S786C34v142Ev
  virtual void  v143(); // _ZN6S786C34v143Ev
  virtual void  v144(); // _ZN6S786C34v144Ev
  virtual void  v145(); // _ZN6S786C34v145Ev
  ~S786C3(); // tgen
  S786C3(); // tgen
};
//SIG(-1 S786C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S786C3 ::v128(){vfunc_called(this, "_ZN6S786C34v128Ev");}
void  S786C3 ::v129(){vfunc_called(this, "_ZN6S786C34v129Ev");}
void  S786C3 ::v130(){vfunc_called(this, "_ZN6S786C34v130Ev");}
void  S786C3 ::v131(){vfunc_called(this, "_ZN6S786C34v131Ev");}
void  S786C3 ::v132(){vfunc_called(this, "_ZN6S786C34v132Ev");}
void  S786C3 ::v133(){vfunc_called(this, "_ZN6S786C34v133Ev");}
void  S786C3 ::v134(){vfunc_called(this, "_ZN6S786C34v134Ev");}
void  S786C3 ::v135(){vfunc_called(this, "_ZN6S786C34v135Ev");}
void  S786C3 ::v136(){vfunc_called(this, "_ZN6S786C34v136Ev");}
void  S786C3 ::v137(){vfunc_called(this, "_ZN6S786C34v137Ev");}
void  S786C3 ::v138(){vfunc_called(this, "_ZN6S786C34v138Ev");}
void  S786C3 ::v139(){vfunc_called(this, "_ZN6S786C34v139Ev");}
void  S786C3 ::v140(){vfunc_called(this, "_ZN6S786C34v140Ev");}
void  S786C3 ::v141(){vfunc_called(this, "_ZN6S786C34v141Ev");}
void  S786C3 ::v142(){vfunc_called(this, "_ZN6S786C34v142Ev");}
void  S786C3 ::v143(){vfunc_called(this, "_ZN6S786C34v143Ev");}
void  S786C3 ::v144(){vfunc_called(this, "_ZN6S786C34v144Ev");}
void  S786C3 ::v145(){vfunc_called(this, "_ZN6S786C34v145Ev");}
S786C3 ::~S786C3(){ note_dtor("S786C3", this);} // tgen
S786C3 ::S786C3(){ note_ctor("S786C3", this);} // tgen

static void Test_S786C3()
{
  extern Class_Descriptor cd_S786C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S786C3, buf);
    S786C3 *dp, &lv = *(dp=new (buf) S786C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S786C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S786C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S786C4*), 0, "S786C3");
    check_base_class_offset(lv, (S786C4*), 0, "S786C3");
    test_class_info(&lv, &cd_S786C3);
    dp->~S786C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS786C3(Test_S786C3, "S786C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S786C3C1Ev();
extern void _ZN6S786C3D1Ev();
Name_Map name_map_S786C3[] = {
  NSPAIR(_ZN6S786C3C1Ev),
  NSPAIR(_ZN6S786C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S786C4;
extern VTBL_ENTRY _ZTI6S786C4[];
extern  VTBL_ENTRY _ZTV6S786C4[];
static Base_Class bases_S786C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S786C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S786C3[];
extern void _ZN6S786C3D1Ev();
extern void _ZN6S786C3D0Ev();
extern void _ZN6S786C42v6Ev();
extern void _ZN6S786C42v7Ev();
extern void _ZN6S786C42v8Ev();
extern void _ZN6S786C42v9Ev();
extern void _ZN6S786C43v10Ev();
extern void _ZN6S786C43v11Ev();
extern void _ZN6S786C43v12Ev();
extern void _ZN6S786C43v13Ev();
extern void _ZN6S786C43v14Ev();
extern void _ZN6S786C43v15Ev();
extern void _ZN6S786C43v16Ev();
extern void _ZN6S786C43v17Ev();
extern void _ZN6S786C43v18Ev();
extern void _ZN6S786C43v19Ev();
extern void _ZN6S786C43v20Ev();
extern void _ZN6S786C43v21Ev();
extern void _ZN6S786C43v22Ev();
extern void _ZN6S786C43v23Ev();
extern void _ZN6S786C43v24Ev();
extern void _ZN6S786C43v25Ev();
extern void _ZN6S786C43v26Ev();
extern void _ZN6S786C43v27Ev();
extern void _ZN6S786C43v28Ev();
extern void _ZN6S786C43v29Ev();
extern void _ZN6S786C43v30Ev();
extern void _ZN6S786C43v31Ev();
extern void _ZN6S786C43v32Ev();
extern void _ZN6S786C43v33Ev();
extern void _ZN6S786C43v34Ev();
extern void _ZN6S786C43v35Ev();
extern void _ZN6S786C43v36Ev();
extern void _ZN6S786C43v37Ev();
extern void _ZN6S786C43v38Ev();
extern void _ZN6S786C43v39Ev();
extern void _ZN6S786C43v40Ev();
extern void _ZN6S786C43v41Ev();
extern void _ZN6S786C43v42Ev();
extern void _ZN6S786C43v43Ev();
extern void _ZN6S786C43v44Ev();
extern void _ZN6S786C43v45Ev();
extern void _ZN6S786C43v46Ev();
extern void _ZN6S786C43v47Ev();
extern void _ZN6S786C43v48Ev();
extern void _ZN6S786C43v49Ev();
extern void _ZN6S786C43v50Ev();
extern void _ZN6S786C43v51Ev();
extern void _ZN6S786C43v52Ev();
extern void _ZN6S786C43v53Ev();
extern void _ZN6S786C43v54Ev();
extern void _ZN6S786C43v55Ev();
extern void _ZN6S786C43v56Ev();
extern void _ZN6S786C43v57Ev();
extern void _ZN6S786C43v58Ev();
extern void _ZN6S786C43v59Ev();
extern void _ZN6S786C43v60Ev();
extern void _ZN6S786C43v61Ev();
extern void _ZN6S786C43v62Ev();
extern void _ZN6S786C43v63Ev();
extern void _ZN6S786C43v64Ev();
extern void _ZN6S786C43v65Ev();
extern void _ZN6S786C43v66Ev();
extern void _ZN6S786C43v67Ev();
extern void _ZN6S786C43v68Ev();
extern void _ZN6S786C43v69Ev();
extern void _ZN6S786C43v70Ev();
extern void _ZN6S786C43v71Ev();
extern void _ZN6S786C43v72Ev();
extern void _ZN6S786C43v73Ev();
extern void _ZN6S786C43v74Ev();
extern void _ZN6S786C43v75Ev();
extern void _ZN6S786C43v76Ev();
extern void _ZN6S786C43v77Ev();
extern void _ZN6S786C43v78Ev();
extern void _ZN6S786C43v79Ev();
extern void _ZN6S786C43v80Ev();
extern void _ZN6S786C43v81Ev();
extern void _ZN6S786C43v82Ev();
extern void _ZN6S786C43v83Ev();
extern void _ZN6S786C43v84Ev();
extern void _ZN6S786C43v85Ev();
extern void _ZN6S786C43v86Ev();
extern void _ZN6S786C43v87Ev();
extern void _ZN6S786C43v88Ev();
extern void _ZN6S786C43v89Ev();
extern void _ZN6S786C43v90Ev();
extern void _ZN6S786C43v91Ev();
extern void _ZN6S786C43v92Ev();
extern void _ZN6S786C43v93Ev();
extern void _ZN6S786C43v94Ev();
extern void _ZN6S786C43v95Ev();
extern void _ZN6S786C43v96Ev();
extern void _ZN6S786C43v97Ev();
extern void _ZN6S786C43v98Ev();
extern void _ZN6S786C43v99Ev();
extern void _ZN6S786C44v100Ev();
extern void _ZN6S786C44v101Ev();
extern void _ZN6S786C44v102Ev();
extern void _ZN6S786C44v103Ev();
extern void _ZN6S786C44v104Ev();
extern void _ZN6S786C44v105Ev();
extern void _ZN6S786C44v106Ev();
extern void _ZN6S786C44v107Ev();
extern void _ZN6S786C44v108Ev();
extern void _ZN6S786C44v109Ev();
extern void _ZN6S786C44v110Ev();
extern void _ZN6S786C44v111Ev();
extern void _ZN6S786C44v112Ev();
extern void _ZN6S786C44v113Ev();
extern void _ZN6S786C44v114Ev();
extern void _ZN6S786C44v115Ev();
extern void _ZN6S786C44v116Ev();
extern void _ZN6S786C44v117Ev();
extern void _ZN6S786C44v118Ev();
extern void _ZN6S786C44v119Ev();
extern void _ZN6S786C44v120Ev();
extern void _ZN6S786C44v121Ev();
extern void _ZN6S786C44v122Ev();
extern void _ZN6S786C44v123Ev();
extern void _ZN6S786C44v124Ev();
extern void _ZN6S786C44v125Ev();
extern void _ZN6S786C44v126Ev();
extern void _ZN6S786C44v127Ev();
extern void _ZN6S786C34v128Ev();
extern void _ZN6S786C34v129Ev();
extern void _ZN6S786C34v130Ev();
extern void _ZN6S786C34v131Ev();
extern void _ZN6S786C34v132Ev();
extern void _ZN6S786C34v133Ev();
extern void _ZN6S786C34v134Ev();
extern void _ZN6S786C34v135Ev();
extern void _ZN6S786C34v136Ev();
extern void _ZN6S786C34v137Ev();
extern void _ZN6S786C34v138Ev();
extern void _ZN6S786C34v139Ev();
extern void _ZN6S786C34v140Ev();
extern void _ZN6S786C34v141Ev();
extern void _ZN6S786C34v142Ev();
extern void _ZN6S786C34v143Ev();
extern void _ZN6S786C34v144Ev();
extern void _ZN6S786C34v145Ev();
static  VTBL_ENTRY vtc_S786C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S786C3[0]),
  (VTBL_ENTRY)&_ZN6S786C3D1Ev,
  (VTBL_ENTRY)&_ZN6S786C3D0Ev,
  (VTBL_ENTRY)&_ZN6S786C42v6Ev,
  (VTBL_ENTRY)&_ZN6S786C42v7Ev,
  (VTBL_ENTRY)&_ZN6S786C42v8Ev,
  (VTBL_ENTRY)&_ZN6S786C42v9Ev,
  (VTBL_ENTRY)&_ZN6S786C43v10Ev,
  (VTBL_ENTRY)&_ZN6S786C43v11Ev,
  (VTBL_ENTRY)&_ZN6S786C43v12Ev,
  (VTBL_ENTRY)&_ZN6S786C43v13Ev,
  (VTBL_ENTRY)&_ZN6S786C43v14Ev,
  (VTBL_ENTRY)&_ZN6S786C43v15Ev,
  (VTBL_ENTRY)&_ZN6S786C43v16Ev,
  (VTBL_ENTRY)&_ZN6S786C43v17Ev,
  (VTBL_ENTRY)&_ZN6S786C43v18Ev,
  (VTBL_ENTRY)&_ZN6S786C43v19Ev,
  (VTBL_ENTRY)&_ZN6S786C43v20Ev,
  (VTBL_ENTRY)&_ZN6S786C43v21Ev,
  (VTBL_ENTRY)&_ZN6S786C43v22Ev,
  (VTBL_ENTRY)&_ZN6S786C43v23Ev,
  (VTBL_ENTRY)&_ZN6S786C43v24Ev,
  (VTBL_ENTRY)&_ZN6S786C43v25Ev,
  (VTBL_ENTRY)&_ZN6S786C43v26Ev,
  (VTBL_ENTRY)&_ZN6S786C43v27Ev,
  (VTBL_ENTRY)&_ZN6S786C43v28Ev,
  (VTBL_ENTRY)&_ZN6S786C43v29Ev,
  (VTBL_ENTRY)&_ZN6S786C43v30Ev,
  (VTBL_ENTRY)&_ZN6S786C43v31Ev,
  (VTBL_ENTRY)&_ZN6S786C43v32Ev,
  (VTBL_ENTRY)&_ZN6S786C43v33Ev,
  (VTBL_ENTRY)&_ZN6S786C43v34Ev,
  (VTBL_ENTRY)&_ZN6S786C43v35Ev,
  (VTBL_ENTRY)&_ZN6S786C43v36Ev,
  (VTBL_ENTRY)&_ZN6S786C43v37Ev,
  (VTBL_ENTRY)&_ZN6S786C43v38Ev,
  (VTBL_ENTRY)&_ZN6S786C43v39Ev,
  (VTBL_ENTRY)&_ZN6S786C43v40Ev,
  (VTBL_ENTRY)&_ZN6S786C43v41Ev,
  (VTBL_ENTRY)&_ZN6S786C43v42Ev,
  (VTBL_ENTRY)&_ZN6S786C43v43Ev,
  (VTBL_ENTRY)&_ZN6S786C43v44Ev,
  (VTBL_ENTRY)&_ZN6S786C43v45Ev,
  (VTBL_ENTRY)&_ZN6S786C43v46Ev,
  (VTBL_ENTRY)&_ZN6S786C43v47Ev,
  (VTBL_ENTRY)&_ZN6S786C43v48Ev,
  (VTBL_ENTRY)&_ZN6S786C43v49Ev,
  (VTBL_ENTRY)&_ZN6S786C43v50Ev,
  (VTBL_ENTRY)&_ZN6S786C43v51Ev,
  (VTBL_ENTRY)&_ZN6S786C43v52Ev,
  (VTBL_ENTRY)&_ZN6S786C43v53Ev,
  (VTBL_ENTRY)&_ZN6S786C43v54Ev,
  (VTBL_ENTRY)&_ZN6S786C43v55Ev,
  (VTBL_ENTRY)&_ZN6S786C43v56Ev,
  (VTBL_ENTRY)&_ZN6S786C43v57Ev,
  (VTBL_ENTRY)&_ZN6S786C43v58Ev,
  (VTBL_ENTRY)&_ZN6S786C43v59Ev,
  (VTBL_ENTRY)&_ZN6S786C43v60Ev,
  (VTBL_ENTRY)&_ZN6S786C43v61Ev,
  (VTBL_ENTRY)&_ZN6S786C43v62Ev,
  (VTBL_ENTRY)&_ZN6S786C43v63Ev,
  (VTBL_ENTRY)&_ZN6S786C43v64Ev,
  (VTBL_ENTRY)&_ZN6S786C43v65Ev,
  (VTBL_ENTRY)&_ZN6S786C43v66Ev,
  (VTBL_ENTRY)&_ZN6S786C43v67Ev,
  (VTBL_ENTRY)&_ZN6S786C43v68Ev,
  (VTBL_ENTRY)&_ZN6S786C43v69Ev,
  (VTBL_ENTRY)&_ZN6S786C43v70Ev,
  (VTBL_ENTRY)&_ZN6S786C43v71Ev,
  (VTBL_ENTRY)&_ZN6S786C43v72Ev,
  (VTBL_ENTRY)&_ZN6S786C43v73Ev,
  (VTBL_ENTRY)&_ZN6S786C43v74Ev,
  (VTBL_ENTRY)&_ZN6S786C43v75Ev,
  (VTBL_ENTRY)&_ZN6S786C43v76Ev,
  (VTBL_ENTRY)&_ZN6S786C43v77Ev,
  (VTBL_ENTRY)&_ZN6S786C43v78Ev,
  (VTBL_ENTRY)&_ZN6S786C43v79Ev,
  (VTBL_ENTRY)&_ZN6S786C43v80Ev,
  (VTBL_ENTRY)&_ZN6S786C43v81Ev,
  (VTBL_ENTRY)&_ZN6S786C43v82Ev,
  (VTBL_ENTRY)&_ZN6S786C43v83Ev,
  (VTBL_ENTRY)&_ZN6S786C43v84Ev,
  (VTBL_ENTRY)&_ZN6S786C43v85Ev,
  (VTBL_ENTRY)&_ZN6S786C43v86Ev,
  (VTBL_ENTRY)&_ZN6S786C43v87Ev,
  (VTBL_ENTRY)&_ZN6S786C43v88Ev,
  (VTBL_ENTRY)&_ZN6S786C43v89Ev,
  (VTBL_ENTRY)&_ZN6S786C43v90Ev,
  (VTBL_ENTRY)&_ZN6S786C43v91Ev,
  (VTBL_ENTRY)&_ZN6S786C43v92Ev,
  (VTBL_ENTRY)&_ZN6S786C43v93Ev,
  (VTBL_ENTRY)&_ZN6S786C43v94Ev,
  (VTBL_ENTRY)&_ZN6S786C43v95Ev,
  (VTBL_ENTRY)&_ZN6S786C43v96Ev,
  (VTBL_ENTRY)&_ZN6S786C43v97Ev,
  (VTBL_ENTRY)&_ZN6S786C43v98Ev,
  (VTBL_ENTRY)&_ZN6S786C43v99Ev,
  (VTBL_ENTRY)&_ZN6S786C44v100Ev,
  (VTBL_ENTRY)&_ZN6S786C44v101Ev,
  (VTBL_ENTRY)&_ZN6S786C44v102Ev,
  (VTBL_ENTRY)&_ZN6S786C44v103Ev,
  (VTBL_ENTRY)&_ZN6S786C44v104Ev,
  (VTBL_ENTRY)&_ZN6S786C44v105Ev,
  (VTBL_ENTRY)&_ZN6S786C44v106Ev,
  (VTBL_ENTRY)&_ZN6S786C44v107Ev,
  (VTBL_ENTRY)&_ZN6S786C44v108Ev,
  (VTBL_ENTRY)&_ZN6S786C44v109Ev,
  (VTBL_ENTRY)&_ZN6S786C44v110Ev,
  (VTBL_ENTRY)&_ZN6S786C44v111Ev,
  (VTBL_ENTRY)&_ZN6S786C44v112Ev,
  (VTBL_ENTRY)&_ZN6S786C44v113Ev,
  (VTBL_ENTRY)&_ZN6S786C44v114Ev,
  (VTBL_ENTRY)&_ZN6S786C44v115Ev,
  (VTBL_ENTRY)&_ZN6S786C44v116Ev,
  (VTBL_ENTRY)&_ZN6S786C44v117Ev,
  (VTBL_ENTRY)&_ZN6S786C44v118Ev,
  (VTBL_ENTRY)&_ZN6S786C44v119Ev,
  (VTBL_ENTRY)&_ZN6S786C44v120Ev,
  (VTBL_ENTRY)&_ZN6S786C44v121Ev,
  (VTBL_ENTRY)&_ZN6S786C44v122Ev,
  (VTBL_ENTRY)&_ZN6S786C44v123Ev,
  (VTBL_ENTRY)&_ZN6S786C44v124Ev,
  (VTBL_ENTRY)&_ZN6S786C44v125Ev,
  (VTBL_ENTRY)&_ZN6S786C44v126Ev,
  (VTBL_ENTRY)&_ZN6S786C44v127Ev,
  (VTBL_ENTRY)&_ZN6S786C34v128Ev,
  (VTBL_ENTRY)&_ZN6S786C34v129Ev,
  (VTBL_ENTRY)&_ZN6S786C34v130Ev,
  (VTBL_ENTRY)&_ZN6S786C34v131Ev,
  (VTBL_ENTRY)&_ZN6S786C34v132Ev,
  (VTBL_ENTRY)&_ZN6S786C34v133Ev,
  (VTBL_ENTRY)&_ZN6S786C34v134Ev,
  (VTBL_ENTRY)&_ZN6S786C34v135Ev,
  (VTBL_ENTRY)&_ZN6S786C34v136Ev,
  (VTBL_ENTRY)&_ZN6S786C34v137Ev,
  (VTBL_ENTRY)&_ZN6S786C34v138Ev,
  (VTBL_ENTRY)&_ZN6S786C34v139Ev,
  (VTBL_ENTRY)&_ZN6S786C34v140Ev,
  (VTBL_ENTRY)&_ZN6S786C34v141Ev,
  (VTBL_ENTRY)&_ZN6S786C34v142Ev,
  (VTBL_ENTRY)&_ZN6S786C34v143Ev,
  (VTBL_ENTRY)&_ZN6S786C34v144Ev,
  (VTBL_ENTRY)&_ZN6S786C34v145Ev,
};
extern VTBL_ENTRY _ZTI6S786C3[];
extern  VTBL_ENTRY _ZTV6S786C3[];
Class_Descriptor cd_S786C3 = {  "S786C3", // class name
  bases_S786C3, 2,
  &(vtc_S786C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S786C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S786C3),144, //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  S786C2  : S786C3 {
  virtual void  v146(); // _ZN6S786C24v146Ev
  ~S786C2(); // tgen
  S786C2(); // tgen
};
//SIG(-1 S786C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S786C2 ::v146(){vfunc_called(this, "_ZN6S786C24v146Ev");}
S786C2 ::~S786C2(){ note_dtor("S786C2", this);} // tgen
S786C2 ::S786C2(){ note_ctor("S786C2", this);} // tgen

static void Test_S786C2()
{
  extern Class_Descriptor cd_S786C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S786C2, buf);
    S786C2 *dp, &lv = *(dp=new (buf) S786C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S786C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S786C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S786C4*)(S786C3*), 0, "S786C2");
    check_base_class_offset(lv, (S786C4*)(S786C3*), 0, "S786C2");
    check_base_class_offset(lv, (S786C3*), 0, "S786C2");
    test_class_info(&lv, &cd_S786C2);
    dp->~S786C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS786C2(Test_S786C2, "S786C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S786C2C1Ev();
extern void _ZN6S786C2D1Ev();
Name_Map name_map_S786C2[] = {
  NSPAIR(_ZN6S786C2C1Ev),
  NSPAIR(_ZN6S786C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S786C4;
extern VTBL_ENTRY _ZTI6S786C4[];
extern  VTBL_ENTRY _ZTV6S786C4[];
extern Class_Descriptor cd_S786C3;
extern VTBL_ENTRY _ZTI6S786C3[];
extern  VTBL_ENTRY _ZTV6S786C3[];
static Base_Class bases_S786C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S786C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S786C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S786C2[];
extern void _ZN6S786C2D1Ev();
extern void _ZN6S786C2D0Ev();
extern void _ZN6S786C42v6Ev();
extern void _ZN6S786C42v7Ev();
extern void _ZN6S786C42v8Ev();
extern void _ZN6S786C42v9Ev();
extern void _ZN6S786C43v10Ev();
extern void _ZN6S786C43v11Ev();
extern void _ZN6S786C43v12Ev();
extern void _ZN6S786C43v13Ev();
extern void _ZN6S786C43v14Ev();
extern void _ZN6S786C43v15Ev();
extern void _ZN6S786C43v16Ev();
extern void _ZN6S786C43v17Ev();
extern void _ZN6S786C43v18Ev();
extern void _ZN6S786C43v19Ev();
extern void _ZN6S786C43v20Ev();
extern void _ZN6S786C43v21Ev();
extern void _ZN6S786C43v22Ev();
extern void _ZN6S786C43v23Ev();
extern void _ZN6S786C43v24Ev();
extern void _ZN6S786C43v25Ev();
extern void _ZN6S786C43v26Ev();
extern void _ZN6S786C43v27Ev();
extern void _ZN6S786C43v28Ev();
extern void _ZN6S786C43v29Ev();
extern void _ZN6S786C43v30Ev();
extern void _ZN6S786C43v31Ev();
extern void _ZN6S786C43v32Ev();
extern void _ZN6S786C43v33Ev();
extern void _ZN6S786C43v34Ev();
extern void _ZN6S786C43v35Ev();
extern void _ZN6S786C43v36Ev();
extern void _ZN6S786C43v37Ev();
extern void _ZN6S786C43v38Ev();
extern void _ZN6S786C43v39Ev();
extern void _ZN6S786C43v40Ev();
extern void _ZN6S786C43v41Ev();
extern void _ZN6S786C43v42Ev();
extern void _ZN6S786C43v43Ev();
extern void _ZN6S786C43v44Ev();
extern void _ZN6S786C43v45Ev();
extern void _ZN6S786C43v46Ev();
extern void _ZN6S786C43v47Ev();
extern void _ZN6S786C43v48Ev();
extern void _ZN6S786C43v49Ev();
extern void _ZN6S786C43v50Ev();
extern void _ZN6S786C43v51Ev();
extern void _ZN6S786C43v52Ev();
extern void _ZN6S786C43v53Ev();
extern void _ZN6S786C43v54Ev();
extern void _ZN6S786C43v55Ev();
extern void _ZN6S786C43v56Ev();
extern void _ZN6S786C43v57Ev();
extern void _ZN6S786C43v58Ev();
extern void _ZN6S786C43v59Ev();
extern void _ZN6S786C43v60Ev();
extern void _ZN6S786C43v61Ev();
extern void _ZN6S786C43v62Ev();
extern void _ZN6S786C43v63Ev();
extern void _ZN6S786C43v64Ev();
extern void _ZN6S786C43v65Ev();
extern void _ZN6S786C43v66Ev();
extern void _ZN6S786C43v67Ev();
extern void _ZN6S786C43v68Ev();
extern void _ZN6S786C43v69Ev();
extern void _ZN6S786C43v70Ev();
extern void _ZN6S786C43v71Ev();
extern void _ZN6S786C43v72Ev();
extern void _ZN6S786C43v73Ev();
extern void _ZN6S786C43v74Ev();
extern void _ZN6S786C43v75Ev();
extern void _ZN6S786C43v76Ev();
extern void _ZN6S786C43v77Ev();
extern void _ZN6S786C43v78Ev();
extern void _ZN6S786C43v79Ev();
extern void _ZN6S786C43v80Ev();
extern void _ZN6S786C43v81Ev();
extern void _ZN6S786C43v82Ev();
extern void _ZN6S786C43v83Ev();
extern void _ZN6S786C43v84Ev();
extern void _ZN6S786C43v85Ev();
extern void _ZN6S786C43v86Ev();
extern void _ZN6S786C43v87Ev();
extern void _ZN6S786C43v88Ev();
extern void _ZN6S786C43v89Ev();
extern void _ZN6S786C43v90Ev();
extern void _ZN6S786C43v91Ev();
extern void _ZN6S786C43v92Ev();
extern void _ZN6S786C43v93Ev();
extern void _ZN6S786C43v94Ev();
extern void _ZN6S786C43v95Ev();
extern void _ZN6S786C43v96Ev();
extern void _ZN6S786C43v97Ev();
extern void _ZN6S786C43v98Ev();
extern void _ZN6S786C43v99Ev();
extern void _ZN6S786C44v100Ev();
extern void _ZN6S786C44v101Ev();
extern void _ZN6S786C44v102Ev();
extern void _ZN6S786C44v103Ev();
extern void _ZN6S786C44v104Ev();
extern void _ZN6S786C44v105Ev();
extern void _ZN6S786C44v106Ev();
extern void _ZN6S786C44v107Ev();
extern void _ZN6S786C44v108Ev();
extern void _ZN6S786C44v109Ev();
extern void _ZN6S786C44v110Ev();
extern void _ZN6S786C44v111Ev();
extern void _ZN6S786C44v112Ev();
extern void _ZN6S786C44v113Ev();
extern void _ZN6S786C44v114Ev();
extern void _ZN6S786C44v115Ev();
extern void _ZN6S786C44v116Ev();
extern void _ZN6S786C44v117Ev();
extern void _ZN6S786C44v118Ev();
extern void _ZN6S786C44v119Ev();
extern void _ZN6S786C44v120Ev();
extern void _ZN6S786C44v121Ev();
extern void _ZN6S786C44v122Ev();
extern void _ZN6S786C44v123Ev();
extern void _ZN6S786C44v124Ev();
extern void _ZN6S786C44v125Ev();
extern void _ZN6S786C44v126Ev();
extern void _ZN6S786C44v127Ev();
extern void _ZN6S786C34v128Ev();
extern void _ZN6S786C34v129Ev();
extern void _ZN6S786C34v130Ev();
extern void _ZN6S786C34v131Ev();
extern void _ZN6S786C34v132Ev();
extern void _ZN6S786C34v133Ev();
extern void _ZN6S786C34v134Ev();
extern void _ZN6S786C34v135Ev();
extern void _ZN6S786C34v136Ev();
extern void _ZN6S786C34v137Ev();
extern void _ZN6S786C34v138Ev();
extern void _ZN6S786C34v139Ev();
extern void _ZN6S786C34v140Ev();
extern void _ZN6S786C34v141Ev();
extern void _ZN6S786C34v142Ev();
extern void _ZN6S786C34v143Ev();
extern void _ZN6S786C34v144Ev();
extern void _ZN6S786C34v145Ev();
extern void _ZN6S786C24v146Ev();
static  VTBL_ENTRY vtc_S786C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S786C2[0]),
  (VTBL_ENTRY)&_ZN6S786C2D1Ev,
  (VTBL_ENTRY)&_ZN6S786C2D0Ev,
  (VTBL_ENTRY)&_ZN6S786C42v6Ev,
  (VTBL_ENTRY)&_ZN6S786C42v7Ev,
  (VTBL_ENTRY)&_ZN6S786C42v8Ev,
  (VTBL_ENTRY)&_ZN6S786C42v9Ev,
  (VTBL_ENTRY)&_ZN6S786C43v10Ev,
  (VTBL_ENTRY)&_ZN6S786C43v11Ev,
  (VTBL_ENTRY)&_ZN6S786C43v12Ev,
  (VTBL_ENTRY)&_ZN6S786C43v13Ev,
  (VTBL_ENTRY)&_ZN6S786C43v14Ev,
  (VTBL_ENTRY)&_ZN6S786C43v15Ev,
  (VTBL_ENTRY)&_ZN6S786C43v16Ev,
  (VTBL_ENTRY)&_ZN6S786C43v17Ev,
  (VTBL_ENTRY)&_ZN6S786C43v18Ev,
  (VTBL_ENTRY)&_ZN6S786C43v19Ev,
  (VTBL_ENTRY)&_ZN6S786C43v20Ev,
  (VTBL_ENTRY)&_ZN6S786C43v21Ev,
  (VTBL_ENTRY)&_ZN6S786C43v22Ev,
  (VTBL_ENTRY)&_ZN6S786C43v23Ev,
  (VTBL_ENTRY)&_ZN6S786C43v24Ev,
  (VTBL_ENTRY)&_ZN6S786C43v25Ev,
  (VTBL_ENTRY)&_ZN6S786C43v26Ev,
  (VTBL_ENTRY)&_ZN6S786C43v27Ev,
  (VTBL_ENTRY)&_ZN6S786C43v28Ev,
  (VTBL_ENTRY)&_ZN6S786C43v29Ev,
  (VTBL_ENTRY)&_ZN6S786C43v30Ev,
  (VTBL_ENTRY)&_ZN6S786C43v31Ev,
  (VTBL_ENTRY)&_ZN6S786C43v32Ev,
  (VTBL_ENTRY)&_ZN6S786C43v33Ev,
  (VTBL_ENTRY)&_ZN6S786C43v34Ev,
  (VTBL_ENTRY)&_ZN6S786C43v35Ev,
  (VTBL_ENTRY)&_ZN6S786C43v36Ev,
  (VTBL_ENTRY)&_ZN6S786C43v37Ev,
  (VTBL_ENTRY)&_ZN6S786C43v38Ev,
  (VTBL_ENTRY)&_ZN6S786C43v39Ev,
  (VTBL_ENTRY)&_ZN6S786C43v40Ev,
  (VTBL_ENTRY)&_ZN6S786C43v41Ev,
  (VTBL_ENTRY)&_ZN6S786C43v42Ev,
  (VTBL_ENTRY)&_ZN6S786C43v43Ev,
  (VTBL_ENTRY)&_ZN6S786C43v44Ev,
  (VTBL_ENTRY)&_ZN6S786C43v45Ev,
  (VTBL_ENTRY)&_ZN6S786C43v46Ev,
  (VTBL_ENTRY)&_ZN6S786C43v47Ev,
  (VTBL_ENTRY)&_ZN6S786C43v48Ev,
  (VTBL_ENTRY)&_ZN6S786C43v49Ev,
  (VTBL_ENTRY)&_ZN6S786C43v50Ev,
  (VTBL_ENTRY)&_ZN6S786C43v51Ev,
  (VTBL_ENTRY)&_ZN6S786C43v52Ev,
  (VTBL_ENTRY)&_ZN6S786C43v53Ev,
  (VTBL_ENTRY)&_ZN6S786C43v54Ev,
  (VTBL_ENTRY)&_ZN6S786C43v55Ev,
  (VTBL_ENTRY)&_ZN6S786C43v56Ev,
  (VTBL_ENTRY)&_ZN6S786C43v57Ev,
  (VTBL_ENTRY)&_ZN6S786C43v58Ev,
  (VTBL_ENTRY)&_ZN6S786C43v59Ev,
  (VTBL_ENTRY)&_ZN6S786C43v60Ev,
  (VTBL_ENTRY)&_ZN6S786C43v61Ev,
  (VTBL_ENTRY)&_ZN6S786C43v62Ev,
  (VTBL_ENTRY)&_ZN6S786C43v63Ev,
  (VTBL_ENTRY)&_ZN6S786C43v64Ev,
  (VTBL_ENTRY)&_ZN6S786C43v65Ev,
  (VTBL_ENTRY)&_ZN6S786C43v66Ev,
  (VTBL_ENTRY)&_ZN6S786C43v67Ev,
  (VTBL_ENTRY)&_ZN6S786C43v68Ev,
  (VTBL_ENTRY)&_ZN6S786C43v69Ev,
  (VTBL_ENTRY)&_ZN6S786C43v70Ev,
  (VTBL_ENTRY)&_ZN6S786C43v71Ev,
  (VTBL_ENTRY)&_ZN6S786C43v72Ev,
  (VTBL_ENTRY)&_ZN6S786C43v73Ev,
  (VTBL_ENTRY)&_ZN6S786C43v74Ev,
  (VTBL_ENTRY)&_ZN6S786C43v75Ev,
  (VTBL_ENTRY)&_ZN6S786C43v76Ev,
  (VTBL_ENTRY)&_ZN6S786C43v77Ev,
  (VTBL_ENTRY)&_ZN6S786C43v78Ev,
  (VTBL_ENTRY)&_ZN6S786C43v79Ev,
  (VTBL_ENTRY)&_ZN6S786C43v80Ev,
  (VTBL_ENTRY)&_ZN6S786C43v81Ev,
  (VTBL_ENTRY)&_ZN6S786C43v82Ev,
  (VTBL_ENTRY)&_ZN6S786C43v83Ev,
  (VTBL_ENTRY)&_ZN6S786C43v84Ev,
  (VTBL_ENTRY)&_ZN6S786C43v85Ev,
  (VTBL_ENTRY)&_ZN6S786C43v86Ev,
  (VTBL_ENTRY)&_ZN6S786C43v87Ev,
  (VTBL_ENTRY)&_ZN6S786C43v88Ev,
  (VTBL_ENTRY)&_ZN6S786C43v89Ev,
  (VTBL_ENTRY)&_ZN6S786C43v90Ev,
  (VTBL_ENTRY)&_ZN6S786C43v91Ev,
  (VTBL_ENTRY)&_ZN6S786C43v92Ev,
  (VTBL_ENTRY)&_ZN6S786C43v93Ev,
  (VTBL_ENTRY)&_ZN6S786C43v94Ev,
  (VTBL_ENTRY)&_ZN6S786C43v95Ev,
  (VTBL_ENTRY)&_ZN6S786C43v96Ev,
  (VTBL_ENTRY)&_ZN6S786C43v97Ev,
  (VTBL_ENTRY)&_ZN6S786C43v98Ev,
  (VTBL_ENTRY)&_ZN6S786C43v99Ev,
  (VTBL_ENTRY)&_ZN6S786C44v100Ev,
  (VTBL_ENTRY)&_ZN6S786C44v101Ev,
  (VTBL_ENTRY)&_ZN6S786C44v102Ev,
  (VTBL_ENTRY)&_ZN6S786C44v103Ev,
  (VTBL_ENTRY)&_ZN6S786C44v104Ev,
  (VTBL_ENTRY)&_ZN6S786C44v105Ev,
  (VTBL_ENTRY)&_ZN6S786C44v106Ev,
  (VTBL_ENTRY)&_ZN6S786C44v107Ev,
  (VTBL_ENTRY)&_ZN6S786C44v108Ev,
  (VTBL_ENTRY)&_ZN6S786C44v109Ev,
  (VTBL_ENTRY)&_ZN6S786C44v110Ev,
  (VTBL_ENTRY)&_ZN6S786C44v111Ev,
  (VTBL_ENTRY)&_ZN6S786C44v112Ev,
  (VTBL_ENTRY)&_ZN6S786C44v113Ev,
  (VTBL_ENTRY)&_ZN6S786C44v114Ev,
  (VTBL_ENTRY)&_ZN6S786C44v115Ev,
  (VTBL_ENTRY)&_ZN6S786C44v116Ev,
  (VTBL_ENTRY)&_ZN6S786C44v117Ev,
  (VTBL_ENTRY)&_ZN6S786C44v118Ev,
  (VTBL_ENTRY)&_ZN6S786C44v119Ev,
  (VTBL_ENTRY)&_ZN6S786C44v120Ev,
  (VTBL_ENTRY)&_ZN6S786C44v121Ev,
  (VTBL_ENTRY)&_ZN6S786C44v122Ev,
  (VTBL_ENTRY)&_ZN6S786C44v123Ev,
  (VTBL_ENTRY)&_ZN6S786C44v124Ev,
  (VTBL_ENTRY)&_ZN6S786C44v125Ev,
  (VTBL_ENTRY)&_ZN6S786C44v126Ev,
  (VTBL_ENTRY)&_ZN6S786C44v127Ev,
  (VTBL_ENTRY)&_ZN6S786C34v128Ev,
  (VTBL_ENTRY)&_ZN6S786C34v129Ev,
  (VTBL_ENTRY)&_ZN6S786C34v130Ev,
  (VTBL_ENTRY)&_ZN6S786C34v131Ev,
  (VTBL_ENTRY)&_ZN6S786C34v132Ev,
  (VTBL_ENTRY)&_ZN6S786C34v133Ev,
  (VTBL_ENTRY)&_ZN6S786C34v134Ev,
  (VTBL_ENTRY)&_ZN6S786C34v135Ev,
  (VTBL_ENTRY)&_ZN6S786C34v136Ev,
  (VTBL_ENTRY)&_ZN6S786C34v137Ev,
  (VTBL_ENTRY)&_ZN6S786C34v138Ev,
  (VTBL_ENTRY)&_ZN6S786C34v139Ev,
  (VTBL_ENTRY)&_ZN6S786C34v140Ev,
  (VTBL_ENTRY)&_ZN6S786C34v141Ev,
  (VTBL_ENTRY)&_ZN6S786C34v142Ev,
  (VTBL_ENTRY)&_ZN6S786C34v143Ev,
  (VTBL_ENTRY)&_ZN6S786C34v144Ev,
  (VTBL_ENTRY)&_ZN6S786C34v145Ev,
  (VTBL_ENTRY)&_ZN6S786C24v146Ev,
};
extern VTBL_ENTRY _ZTI6S786C2[];
extern  VTBL_ENTRY _ZTV6S786C2[];
Class_Descriptor cd_S786C2 = {  "S786C2", // class name
  bases_S786C2, 3,
  &(vtc_S786C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S786C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S786C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S786C1  : S786C2 {
  virtual void  v1(); // _ZN6S786C12v1Ev
  virtual void  v2(); // _ZN6S786C12v2Ev
  virtual void  v3(); // _ZN6S786C12v3Ev
  virtual void  v4(); // _ZN6S786C12v4Ev
  virtual void  v5(); // _ZN6S786C12v5Ev
  ~S786C1(); // tgen
  S786C1(); // tgen
};
//SIG(1 S786C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5}


void  S786C1 ::v1(){vfunc_called(this, "_ZN6S786C12v1Ev");}
void  S786C1 ::v2(){vfunc_called(this, "_ZN6S786C12v2Ev");}
void  S786C1 ::v3(){vfunc_called(this, "_ZN6S786C12v3Ev");}
void  S786C1 ::v4(){vfunc_called(this, "_ZN6S786C12v4Ev");}
void  S786C1 ::v5(){vfunc_called(this, "_ZN6S786C12v5Ev");}
S786C1 ::~S786C1(){ note_dtor("S786C1", this);} // tgen
S786C1 ::S786C1(){ note_ctor("S786C1", this);} // tgen

static void Test_S786C1()
{
  extern Class_Descriptor cd_S786C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S786C1, buf);
    S786C1 *dp, &lv = *(dp=new (buf) S786C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S786C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S786C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S786C4*)(S786C3*)(S786C2*), 0, "S786C1");
    check_base_class_offset(lv, (S786C4*)(S786C3*)(S786C2*), 0, "S786C1");
    check_base_class_offset(lv, (S786C3*)(S786C2*), 0, "S786C1");
    check_base_class_offset(lv, (S786C2*), 0, "S786C1");
    test_class_info(&lv, &cd_S786C1);
    dp->~S786C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS786C1(Test_S786C1, "S786C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S786C1C1Ev();
extern void _ZN6S786C1D1Ev();
Name_Map name_map_S786C1[] = {
  NSPAIR(_ZN6S786C1C1Ev),
  NSPAIR(_ZN6S786C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S786C4;
extern VTBL_ENTRY _ZTI6S786C4[];
extern  VTBL_ENTRY _ZTV6S786C4[];
extern Class_Descriptor cd_S786C3;
extern VTBL_ENTRY _ZTI6S786C3[];
extern  VTBL_ENTRY _ZTV6S786C3[];
extern Class_Descriptor cd_S786C2;
extern VTBL_ENTRY _ZTI6S786C2[];
extern  VTBL_ENTRY _ZTV6S786C2[];
static Base_Class bases_S786C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S786C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S786C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S786C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S786C1[];
extern void _ZN6S786C1D1Ev();
extern void _ZN6S786C1D0Ev();
extern void _ZN6S786C42v6Ev();
extern void _ZN6S786C42v7Ev();
extern void _ZN6S786C42v8Ev();
extern void _ZN6S786C42v9Ev();
extern void _ZN6S786C43v10Ev();
extern void _ZN6S786C43v11Ev();
extern void _ZN6S786C43v12Ev();
extern void _ZN6S786C43v13Ev();
extern void _ZN6S786C43v14Ev();
extern void _ZN6S786C43v15Ev();
extern void _ZN6S786C43v16Ev();
extern void _ZN6S786C43v17Ev();
extern void _ZN6S786C43v18Ev();
extern void _ZN6S786C43v19Ev();
extern void _ZN6S786C43v20Ev();
extern void _ZN6S786C43v21Ev();
extern void _ZN6S786C43v22Ev();
extern void _ZN6S786C43v23Ev();
extern void _ZN6S786C43v24Ev();
extern void _ZN6S786C43v25Ev();
extern void _ZN6S786C43v26Ev();
extern void _ZN6S786C43v27Ev();
extern void _ZN6S786C43v28Ev();
extern void _ZN6S786C43v29Ev();
extern void _ZN6S786C43v30Ev();
extern void _ZN6S786C43v31Ev();
extern void _ZN6S786C43v32Ev();
extern void _ZN6S786C43v33Ev();
extern void _ZN6S786C43v34Ev();
extern void _ZN6S786C43v35Ev();
extern void _ZN6S786C43v36Ev();
extern void _ZN6S786C43v37Ev();
extern void _ZN6S786C43v38Ev();
extern void _ZN6S786C43v39Ev();
extern void _ZN6S786C43v40Ev();
extern void _ZN6S786C43v41Ev();
extern void _ZN6S786C43v42Ev();
extern void _ZN6S786C43v43Ev();
extern void _ZN6S786C43v44Ev();
extern void _ZN6S786C43v45Ev();
extern void _ZN6S786C43v46Ev();
extern void _ZN6S786C43v47Ev();
extern void _ZN6S786C43v48Ev();
extern void _ZN6S786C43v49Ev();
extern void _ZN6S786C43v50Ev();
extern void _ZN6S786C43v51Ev();
extern void _ZN6S786C43v52Ev();
extern void _ZN6S786C43v53Ev();
extern void _ZN6S786C43v54Ev();
extern void _ZN6S786C43v55Ev();
extern void _ZN6S786C43v56Ev();
extern void _ZN6S786C43v57Ev();
extern void _ZN6S786C43v58Ev();
extern void _ZN6S786C43v59Ev();
extern void _ZN6S786C43v60Ev();
extern void _ZN6S786C43v61Ev();
extern void _ZN6S786C43v62Ev();
extern void _ZN6S786C43v63Ev();
extern void _ZN6S786C43v64Ev();
extern void _ZN6S786C43v65Ev();
extern void _ZN6S786C43v66Ev();
extern void _ZN6S786C43v67Ev();
extern void _ZN6S786C43v68Ev();
extern void _ZN6S786C43v69Ev();
extern void _ZN6S786C43v70Ev();
extern void _ZN6S786C43v71Ev();
extern void _ZN6S786C43v72Ev();
extern void _ZN6S786C43v73Ev();
extern void _ZN6S786C43v74Ev();
extern void _ZN6S786C43v75Ev();
extern void _ZN6S786C43v76Ev();
extern void _ZN6S786C43v77Ev();
extern void _ZN6S786C43v78Ev();
extern void _ZN6S786C43v79Ev();
extern void _ZN6S786C43v80Ev();
extern void _ZN6S786C43v81Ev();
extern void _ZN6S786C43v82Ev();
extern void _ZN6S786C43v83Ev();
extern void _ZN6S786C43v84Ev();
extern void _ZN6S786C43v85Ev();
extern void _ZN6S786C43v86Ev();
extern void _ZN6S786C43v87Ev();
extern void _ZN6S786C43v88Ev();
extern void _ZN6S786C43v89Ev();
extern void _ZN6S786C43v90Ev();
extern void _ZN6S786C43v91Ev();
extern void _ZN6S786C43v92Ev();
extern void _ZN6S786C43v93Ev();
extern void _ZN6S786C43v94Ev();
extern void _ZN6S786C43v95Ev();
extern void _ZN6S786C43v96Ev();
extern void _ZN6S786C43v97Ev();
extern void _ZN6S786C43v98Ev();
extern void _ZN6S786C43v99Ev();
extern void _ZN6S786C44v100Ev();
extern void _ZN6S786C44v101Ev();
extern void _ZN6S786C44v102Ev();
extern void _ZN6S786C44v103Ev();
extern void _ZN6S786C44v104Ev();
extern void _ZN6S786C44v105Ev();
extern void _ZN6S786C44v106Ev();
extern void _ZN6S786C44v107Ev();
extern void _ZN6S786C44v108Ev();
extern void _ZN6S786C44v109Ev();
extern void _ZN6S786C44v110Ev();
extern void _ZN6S786C44v111Ev();
extern void _ZN6S786C44v112Ev();
extern void _ZN6S786C44v113Ev();
extern void _ZN6S786C44v114Ev();
extern void _ZN6S786C44v115Ev();
extern void _ZN6S786C44v116Ev();
extern void _ZN6S786C44v117Ev();
extern void _ZN6S786C44v118Ev();
extern void _ZN6S786C44v119Ev();
extern void _ZN6S786C44v120Ev();
extern void _ZN6S786C44v121Ev();
extern void _ZN6S786C44v122Ev();
extern void _ZN6S786C44v123Ev();
extern void _ZN6S786C44v124Ev();
extern void _ZN6S786C44v125Ev();
extern void _ZN6S786C44v126Ev();
extern void _ZN6S786C44v127Ev();
extern void _ZN6S786C34v128Ev();
extern void _ZN6S786C34v129Ev();
extern void _ZN6S786C34v130Ev();
extern void _ZN6S786C34v131Ev();
extern void _ZN6S786C34v132Ev();
extern void _ZN6S786C34v133Ev();
extern void _ZN6S786C34v134Ev();
extern void _ZN6S786C34v135Ev();
extern void _ZN6S786C34v136Ev();
extern void _ZN6S786C34v137Ev();
extern void _ZN6S786C34v138Ev();
extern void _ZN6S786C34v139Ev();
extern void _ZN6S786C34v140Ev();
extern void _ZN6S786C34v141Ev();
extern void _ZN6S786C34v142Ev();
extern void _ZN6S786C34v143Ev();
extern void _ZN6S786C34v144Ev();
extern void _ZN6S786C34v145Ev();
extern void _ZN6S786C24v146Ev();
extern void _ZN6S786C12v1Ev();
extern void _ZN6S786C12v2Ev();
extern void _ZN6S786C12v3Ev();
extern void _ZN6S786C12v4Ev();
extern void _ZN6S786C12v5Ev();
static  VTBL_ENTRY vtc_S786C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S786C1[0]),
  (VTBL_ENTRY)&_ZN6S786C1D1Ev,
  (VTBL_ENTRY)&_ZN6S786C1D0Ev,
  (VTBL_ENTRY)&_ZN6S786C42v6Ev,
  (VTBL_ENTRY)&_ZN6S786C42v7Ev,
  (VTBL_ENTRY)&_ZN6S786C42v8Ev,
  (VTBL_ENTRY)&_ZN6S786C42v9Ev,
  (VTBL_ENTRY)&_ZN6S786C43v10Ev,
  (VTBL_ENTRY)&_ZN6S786C43v11Ev,
  (VTBL_ENTRY)&_ZN6S786C43v12Ev,
  (VTBL_ENTRY)&_ZN6S786C43v13Ev,
  (VTBL_ENTRY)&_ZN6S786C43v14Ev,
  (VTBL_ENTRY)&_ZN6S786C43v15Ev,
  (VTBL_ENTRY)&_ZN6S786C43v16Ev,
  (VTBL_ENTRY)&_ZN6S786C43v17Ev,
  (VTBL_ENTRY)&_ZN6S786C43v18Ev,
  (VTBL_ENTRY)&_ZN6S786C43v19Ev,
  (VTBL_ENTRY)&_ZN6S786C43v20Ev,
  (VTBL_ENTRY)&_ZN6S786C43v21Ev,
  (VTBL_ENTRY)&_ZN6S786C43v22Ev,
  (VTBL_ENTRY)&_ZN6S786C43v23Ev,
  (VTBL_ENTRY)&_ZN6S786C43v24Ev,
  (VTBL_ENTRY)&_ZN6S786C43v25Ev,
  (VTBL_ENTRY)&_ZN6S786C43v26Ev,
  (VTBL_ENTRY)&_ZN6S786C43v27Ev,
  (VTBL_ENTRY)&_ZN6S786C43v28Ev,
  (VTBL_ENTRY)&_ZN6S786C43v29Ev,
  (VTBL_ENTRY)&_ZN6S786C43v30Ev,
  (VTBL_ENTRY)&_ZN6S786C43v31Ev,
  (VTBL_ENTRY)&_ZN6S786C43v32Ev,
  (VTBL_ENTRY)&_ZN6S786C43v33Ev,
  (VTBL_ENTRY)&_ZN6S786C43v34Ev,
  (VTBL_ENTRY)&_ZN6S786C43v35Ev,
  (VTBL_ENTRY)&_ZN6S786C43v36Ev,
  (VTBL_ENTRY)&_ZN6S786C43v37Ev,
  (VTBL_ENTRY)&_ZN6S786C43v38Ev,
  (VTBL_ENTRY)&_ZN6S786C43v39Ev,
  (VTBL_ENTRY)&_ZN6S786C43v40Ev,
  (VTBL_ENTRY)&_ZN6S786C43v41Ev,
  (VTBL_ENTRY)&_ZN6S786C43v42Ev,
  (VTBL_ENTRY)&_ZN6S786C43v43Ev,
  (VTBL_ENTRY)&_ZN6S786C43v44Ev,
  (VTBL_ENTRY)&_ZN6S786C43v45Ev,
  (VTBL_ENTRY)&_ZN6S786C43v46Ev,
  (VTBL_ENTRY)&_ZN6S786C43v47Ev,
  (VTBL_ENTRY)&_ZN6S786C43v48Ev,
  (VTBL_ENTRY)&_ZN6S786C43v49Ev,
  (VTBL_ENTRY)&_ZN6S786C43v50Ev,
  (VTBL_ENTRY)&_ZN6S786C43v51Ev,
  (VTBL_ENTRY)&_ZN6S786C43v52Ev,
  (VTBL_ENTRY)&_ZN6S786C43v53Ev,
  (VTBL_ENTRY)&_ZN6S786C43v54Ev,
  (VTBL_ENTRY)&_ZN6S786C43v55Ev,
  (VTBL_ENTRY)&_ZN6S786C43v56Ev,
  (VTBL_ENTRY)&_ZN6S786C43v57Ev,
  (VTBL_ENTRY)&_ZN6S786C43v58Ev,
  (VTBL_ENTRY)&_ZN6S786C43v59Ev,
  (VTBL_ENTRY)&_ZN6S786C43v60Ev,
  (VTBL_ENTRY)&_ZN6S786C43v61Ev,
  (VTBL_ENTRY)&_ZN6S786C43v62Ev,
  (VTBL_ENTRY)&_ZN6S786C43v63Ev,
  (VTBL_ENTRY)&_ZN6S786C43v64Ev,
  (VTBL_ENTRY)&_ZN6S786C43v65Ev,
  (VTBL_ENTRY)&_ZN6S786C43v66Ev,
  (VTBL_ENTRY)&_ZN6S786C43v67Ev,
  (VTBL_ENTRY)&_ZN6S786C43v68Ev,
  (VTBL_ENTRY)&_ZN6S786C43v69Ev,
  (VTBL_ENTRY)&_ZN6S786C43v70Ev,
  (VTBL_ENTRY)&_ZN6S786C43v71Ev,
  (VTBL_ENTRY)&_ZN6S786C43v72Ev,
  (VTBL_ENTRY)&_ZN6S786C43v73Ev,
  (VTBL_ENTRY)&_ZN6S786C43v74Ev,
  (VTBL_ENTRY)&_ZN6S786C43v75Ev,
  (VTBL_ENTRY)&_ZN6S786C43v76Ev,
  (VTBL_ENTRY)&_ZN6S786C43v77Ev,
  (VTBL_ENTRY)&_ZN6S786C43v78Ev,
  (VTBL_ENTRY)&_ZN6S786C43v79Ev,
  (VTBL_ENTRY)&_ZN6S786C43v80Ev,
  (VTBL_ENTRY)&_ZN6S786C43v81Ev,
  (VTBL_ENTRY)&_ZN6S786C43v82Ev,
  (VTBL_ENTRY)&_ZN6S786C43v83Ev,
  (VTBL_ENTRY)&_ZN6S786C43v84Ev,
  (VTBL_ENTRY)&_ZN6S786C43v85Ev,
  (VTBL_ENTRY)&_ZN6S786C43v86Ev,
  (VTBL_ENTRY)&_ZN6S786C43v87Ev,
  (VTBL_ENTRY)&_ZN6S786C43v88Ev,
  (VTBL_ENTRY)&_ZN6S786C43v89Ev,
  (VTBL_ENTRY)&_ZN6S786C43v90Ev,
  (VTBL_ENTRY)&_ZN6S786C43v91Ev,
  (VTBL_ENTRY)&_ZN6S786C43v92Ev,
  (VTBL_ENTRY)&_ZN6S786C43v93Ev,
  (VTBL_ENTRY)&_ZN6S786C43v94Ev,
  (VTBL_ENTRY)&_ZN6S786C43v95Ev,
  (VTBL_ENTRY)&_ZN6S786C43v96Ev,
  (VTBL_ENTRY)&_ZN6S786C43v97Ev,
  (VTBL_ENTRY)&_ZN6S786C43v98Ev,
  (VTBL_ENTRY)&_ZN6S786C43v99Ev,
  (VTBL_ENTRY)&_ZN6S786C44v100Ev,
  (VTBL_ENTRY)&_ZN6S786C44v101Ev,
  (VTBL_ENTRY)&_ZN6S786C44v102Ev,
  (VTBL_ENTRY)&_ZN6S786C44v103Ev,
  (VTBL_ENTRY)&_ZN6S786C44v104Ev,
  (VTBL_ENTRY)&_ZN6S786C44v105Ev,
  (VTBL_ENTRY)&_ZN6S786C44v106Ev,
  (VTBL_ENTRY)&_ZN6S786C44v107Ev,
  (VTBL_ENTRY)&_ZN6S786C44v108Ev,
  (VTBL_ENTRY)&_ZN6S786C44v109Ev,
  (VTBL_ENTRY)&_ZN6S786C44v110Ev,
  (VTBL_ENTRY)&_ZN6S786C44v111Ev,
  (VTBL_ENTRY)&_ZN6S786C44v112Ev,
  (VTBL_ENTRY)&_ZN6S786C44v113Ev,
  (VTBL_ENTRY)&_ZN6S786C44v114Ev,
  (VTBL_ENTRY)&_ZN6S786C44v115Ev,
  (VTBL_ENTRY)&_ZN6S786C44v116Ev,
  (VTBL_ENTRY)&_ZN6S786C44v117Ev,
  (VTBL_ENTRY)&_ZN6S786C44v118Ev,
  (VTBL_ENTRY)&_ZN6S786C44v119Ev,
  (VTBL_ENTRY)&_ZN6S786C44v120Ev,
  (VTBL_ENTRY)&_ZN6S786C44v121Ev,
  (VTBL_ENTRY)&_ZN6S786C44v122Ev,
  (VTBL_ENTRY)&_ZN6S786C44v123Ev,
  (VTBL_ENTRY)&_ZN6S786C44v124Ev,
  (VTBL_ENTRY)&_ZN6S786C44v125Ev,
  (VTBL_ENTRY)&_ZN6S786C44v126Ev,
  (VTBL_ENTRY)&_ZN6S786C44v127Ev,
  (VTBL_ENTRY)&_ZN6S786C34v128Ev,
  (VTBL_ENTRY)&_ZN6S786C34v129Ev,
  (VTBL_ENTRY)&_ZN6S786C34v130Ev,
  (VTBL_ENTRY)&_ZN6S786C34v131Ev,
  (VTBL_ENTRY)&_ZN6S786C34v132Ev,
  (VTBL_ENTRY)&_ZN6S786C34v133Ev,
  (VTBL_ENTRY)&_ZN6S786C34v134Ev,
  (VTBL_ENTRY)&_ZN6S786C34v135Ev,
  (VTBL_ENTRY)&_ZN6S786C34v136Ev,
  (VTBL_ENTRY)&_ZN6S786C34v137Ev,
  (VTBL_ENTRY)&_ZN6S786C34v138Ev,
  (VTBL_ENTRY)&_ZN6S786C34v139Ev,
  (VTBL_ENTRY)&_ZN6S786C34v140Ev,
  (VTBL_ENTRY)&_ZN6S786C34v141Ev,
  (VTBL_ENTRY)&_ZN6S786C34v142Ev,
  (VTBL_ENTRY)&_ZN6S786C34v143Ev,
  (VTBL_ENTRY)&_ZN6S786C34v144Ev,
  (VTBL_ENTRY)&_ZN6S786C34v145Ev,
  (VTBL_ENTRY)&_ZN6S786C24v146Ev,
  (VTBL_ENTRY)&_ZN6S786C12v1Ev,
  (VTBL_ENTRY)&_ZN6S786C12v2Ev,
  (VTBL_ENTRY)&_ZN6S786C12v3Ev,
  (VTBL_ENTRY)&_ZN6S786C12v4Ev,
  (VTBL_ENTRY)&_ZN6S786C12v5Ev,
};
extern VTBL_ENTRY _ZTI6S786C1[];
extern  VTBL_ENTRY _ZTV6S786C1[];
Class_Descriptor cd_S786C1 = {  "S786C1", // class name
  bases_S786C1, 4,
  &(vtc_S786C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S786C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S786C1),150, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S784C4  : S785C5_nt {
  virtual void  v5(); // _ZN6S784C42v5Ev
  virtual void  v6(); // _ZN6S784C42v6Ev
  virtual void  v7(); // _ZN6S784C42v7Ev
  virtual void  v8(); // _ZN6S784C42v8Ev
  virtual void  v9(); // _ZN6S784C42v9Ev
  virtual void  v10(); // _ZN6S784C43v10Ev
  virtual void  v11(); // _ZN6S784C43v11Ev
  virtual void  v12(); // _ZN6S784C43v12Ev
  virtual void  v13(); // _ZN6S784C43v13Ev
  virtual void  v14(); // _ZN6S784C43v14Ev
  virtual void  v15(); // _ZN6S784C43v15Ev
  virtual void  v16(); // _ZN6S784C43v16Ev
  virtual void  v17(); // _ZN6S784C43v17Ev
  virtual void  v18(); // _ZN6S784C43v18Ev
  virtual void  v19(); // _ZN6S784C43v19Ev
  virtual void  v20(); // _ZN6S784C43v20Ev
  virtual void  v21(); // _ZN6S784C43v21Ev
  virtual void  v22(); // _ZN6S784C43v22Ev
  virtual void  v23(); // _ZN6S784C43v23Ev
  virtual void  v24(); // _ZN6S784C43v24Ev
  virtual void  v25(); // _ZN6S784C43v25Ev
  virtual void  v26(); // _ZN6S784C43v26Ev
  virtual void  v27(); // _ZN6S784C43v27Ev
  virtual void  v28(); // _ZN6S784C43v28Ev
  virtual void  v29(); // _ZN6S784C43v29Ev
  virtual void  v30(); // _ZN6S784C43v30Ev
  virtual void  v31(); // _ZN6S784C43v31Ev
  virtual void  v32(); // _ZN6S784C43v32Ev
  virtual void  v33(); // _ZN6S784C43v33Ev
  virtual void  v34(); // _ZN6S784C43v34Ev
  virtual void  v35(); // _ZN6S784C43v35Ev
  virtual void  v36(); // _ZN6S784C43v36Ev
  virtual void  v37(); // _ZN6S784C43v37Ev
  virtual void  v38(); // _ZN6S784C43v38Ev
  virtual void  v39(); // _ZN6S784C43v39Ev
  virtual void  v40(); // _ZN6S784C43v40Ev
  virtual void  v41(); // _ZN6S784C43v41Ev
  virtual void  v42(); // _ZN6S784C43v42Ev
  virtual void  v43(); // _ZN6S784C43v43Ev
  virtual void  v44(); // _ZN6S784C43v44Ev
  virtual void  v45(); // _ZN6S784C43v45Ev
  virtual void  v46(); // _ZN6S784C43v46Ev
  virtual void  v47(); // _ZN6S784C43v47Ev
  virtual void  v48(); // _ZN6S784C43v48Ev
  virtual void  v49(); // _ZN6S784C43v49Ev
  virtual void  v50(); // _ZN6S784C43v50Ev
  virtual void  v51(); // _ZN6S784C43v51Ev
  virtual void  v52(); // _ZN6S784C43v52Ev
  virtual void  v53(); // _ZN6S784C43v53Ev
  virtual void  v54(); // _ZN6S784C43v54Ev
  virtual void  v55(); // _ZN6S784C43v55Ev
  virtual void  v56(); // _ZN6S784C43v56Ev
  virtual void  v57(); // _ZN6S784C43v57Ev
  virtual void  v58(); // _ZN6S784C43v58Ev
  virtual void  v59(); // _ZN6S784C43v59Ev
  virtual void  v60(); // _ZN6S784C43v60Ev
  virtual void  v61(); // _ZN6S784C43v61Ev
  virtual void  v62(); // _ZN6S784C43v62Ev
  virtual void  v63(); // _ZN6S784C43v63Ev
  virtual void  v64(); // _ZN6S784C43v64Ev
  virtual void  v65(); // _ZN6S784C43v65Ev
  virtual void  v66(); // _ZN6S784C43v66Ev
  virtual void  v67(); // _ZN6S784C43v67Ev
  virtual void  v68(); // _ZN6S784C43v68Ev
  virtual void  v69(); // _ZN6S784C43v69Ev
  virtual void  v70(); // _ZN6S784C43v70Ev
  virtual void  v71(); // _ZN6S784C43v71Ev
  virtual void  v72(); // _ZN6S784C43v72Ev
  virtual void  v73(); // _ZN6S784C43v73Ev
  virtual void  v74(); // _ZN6S784C43v74Ev
  virtual void  v75(); // _ZN6S784C43v75Ev
  virtual void  v76(); // _ZN6S784C43v76Ev
  virtual void  v77(); // _ZN6S784C43v77Ev
  virtual void  v78(); // _ZN6S784C43v78Ev
  virtual void  v79(); // _ZN6S784C43v79Ev
  virtual void  v80(); // _ZN6S784C43v80Ev
  virtual void  v81(); // _ZN6S784C43v81Ev
  virtual void  v82(); // _ZN6S784C43v82Ev
  virtual void  v83(); // _ZN6S784C43v83Ev
  virtual void  v84(); // _ZN6S784C43v84Ev
  virtual void  v85(); // _ZN6S784C43v85Ev
  virtual void  v86(); // _ZN6S784C43v86Ev
  virtual void  v87(); // _ZN6S784C43v87Ev
  virtual void  v88(); // _ZN6S784C43v88Ev
  virtual void  v89(); // _ZN6S784C43v89Ev
  virtual void  v90(); // _ZN6S784C43v90Ev
  virtual void  v91(); // _ZN6S784C43v91Ev
  virtual void  v92(); // _ZN6S784C43v92Ev
  virtual void  v93(); // _ZN6S784C43v93Ev
  virtual void  v94(); // _ZN6S784C43v94Ev
  virtual void  v95(); // _ZN6S784C43v95Ev
  virtual void  v96(); // _ZN6S784C43v96Ev
  virtual void  v97(); // _ZN6S784C43v97Ev
  virtual void  v98(); // _ZN6S784C43v98Ev
  virtual void  v99(); // _ZN6S784C43v99Ev
  virtual void  v100(); // _ZN6S784C44v100Ev
  virtual void  v101(); // _ZN6S784C44v101Ev
  virtual void  v102(); // _ZN6S784C44v102Ev
  virtual void  v103(); // _ZN6S784C44v103Ev
  virtual void  v104(); // _ZN6S784C44v104Ev
  virtual void  v105(); // _ZN6S784C44v105Ev
  virtual void  v106(); // _ZN6S784C44v106Ev
  virtual void  v107(); // _ZN6S784C44v107Ev
  virtual void  v108(); // _ZN6S784C44v108Ev
  virtual void  v109(); // _ZN6S784C44v109Ev
  virtual void  v110(); // _ZN6S784C44v110Ev
  virtual void  v111(); // _ZN6S784C44v111Ev
  virtual void  v112(); // _ZN6S784C44v112Ev
  virtual void  v113(); // _ZN6S784C44v113Ev
  virtual void  v114(); // _ZN6S784C44v114Ev
  virtual void  v115(); // _ZN6S784C44v115Ev
  virtual void  v116(); // _ZN6S784C44v116Ev
  virtual void  v117(); // _ZN6S784C44v117Ev
  virtual void  v118(); // _ZN6S784C44v118Ev
  virtual void  v119(); // _ZN6S784C44v119Ev
  virtual void  v120(); // _ZN6S784C44v120Ev
  virtual void  v121(); // _ZN6S784C44v121Ev
  virtual void  v122(); // _ZN6S784C44v122Ev
  virtual void  v123(); // _ZN6S784C44v123Ev
  virtual void  v124(); // _ZN6S784C44v124Ev
  virtual void  v125(); // _ZN6S784C44v125Ev
  virtual void  v126(); // _ZN6S784C44v126Ev
  ~S784C4(); // tgen
  S784C4(); // tgen
};
//SIG(-1 S784C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S784C4 ::v5(){vfunc_called(this, "_ZN6S784C42v5Ev");}
void  S784C4 ::v6(){vfunc_called(this, "_ZN6S784C42v6Ev");}
void  S784C4 ::v7(){vfunc_called(this, "_ZN6S784C42v7Ev");}
void  S784C4 ::v8(){vfunc_called(this, "_ZN6S784C42v8Ev");}
void  S784C4 ::v9(){vfunc_called(this, "_ZN6S784C42v9Ev");}
void  S784C4 ::v10(){vfunc_called(this, "_ZN6S784C43v10Ev");}
void  S784C4 ::v11(){vfunc_called(this, "_ZN6S784C43v11Ev");}
void  S784C4 ::v12(){vfunc_called(this, "_ZN6S784C43v12Ev");}
void  S784C4 ::v13(){vfunc_called(this, "_ZN6S784C43v13Ev");}
void  S784C4 ::v14(){vfunc_called(this, "_ZN6S784C43v14Ev");}
void  S784C4 ::v15(){vfunc_called(this, "_ZN6S784C43v15Ev");}
void  S784C4 ::v16(){vfunc_called(this, "_ZN6S784C43v16Ev");}
void  S784C4 ::v17(){vfunc_called(this, "_ZN6S784C43v17Ev");}
void  S784C4 ::v18(){vfunc_called(this, "_ZN6S784C43v18Ev");}
void  S784C4 ::v19(){vfunc_called(this, "_ZN6S784C43v19Ev");}
void  S784C4 ::v20(){vfunc_called(this, "_ZN6S784C43v20Ev");}
void  S784C4 ::v21(){vfunc_called(this, "_ZN6S784C43v21Ev");}
void  S784C4 ::v22(){vfunc_called(this, "_ZN6S784C43v22Ev");}
void  S784C4 ::v23(){vfunc_called(this, "_ZN6S784C43v23Ev");}
void  S784C4 ::v24(){vfunc_called(this, "_ZN6S784C43v24Ev");}
void  S784C4 ::v25(){vfunc_called(this, "_ZN6S784C43v25Ev");}
void  S784C4 ::v26(){vfunc_called(this, "_ZN6S784C43v26Ev");}
void  S784C4 ::v27(){vfunc_called(this, "_ZN6S784C43v27Ev");}
void  S784C4 ::v28(){vfunc_called(this, "_ZN6S784C43v28Ev");}
void  S784C4 ::v29(){vfunc_called(this, "_ZN6S784C43v29Ev");}
void  S784C4 ::v30(){vfunc_called(this, "_ZN6S784C43v30Ev");}
void  S784C4 ::v31(){vfunc_called(this, "_ZN6S784C43v31Ev");}
void  S784C4 ::v32(){vfunc_called(this, "_ZN6S784C43v32Ev");}
void  S784C4 ::v33(){vfunc_called(this, "_ZN6S784C43v33Ev");}
void  S784C4 ::v34(){vfunc_called(this, "_ZN6S784C43v34Ev");}
void  S784C4 ::v35(){vfunc_called(this, "_ZN6S784C43v35Ev");}
void  S784C4 ::v36(){vfunc_called(this, "_ZN6S784C43v36Ev");}
void  S784C4 ::v37(){vfunc_called(this, "_ZN6S784C43v37Ev");}
void  S784C4 ::v38(){vfunc_called(this, "_ZN6S784C43v38Ev");}
void  S784C4 ::v39(){vfunc_called(this, "_ZN6S784C43v39Ev");}
void  S784C4 ::v40(){vfunc_called(this, "_ZN6S784C43v40Ev");}
void  S784C4 ::v41(){vfunc_called(this, "_ZN6S784C43v41Ev");}
void  S784C4 ::v42(){vfunc_called(this, "_ZN6S784C43v42Ev");}
void  S784C4 ::v43(){vfunc_called(this, "_ZN6S784C43v43Ev");}
void  S784C4 ::v44(){vfunc_called(this, "_ZN6S784C43v44Ev");}
void  S784C4 ::v45(){vfunc_called(this, "_ZN6S784C43v45Ev");}
void  S784C4 ::v46(){vfunc_called(this, "_ZN6S784C43v46Ev");}
void  S784C4 ::v47(){vfunc_called(this, "_ZN6S784C43v47Ev");}
void  S784C4 ::v48(){vfunc_called(this, "_ZN6S784C43v48Ev");}
void  S784C4 ::v49(){vfunc_called(this, "_ZN6S784C43v49Ev");}
void  S784C4 ::v50(){vfunc_called(this, "_ZN6S784C43v50Ev");}
void  S784C4 ::v51(){vfunc_called(this, "_ZN6S784C43v51Ev");}
void  S784C4 ::v52(){vfunc_called(this, "_ZN6S784C43v52Ev");}
void  S784C4 ::v53(){vfunc_called(this, "_ZN6S784C43v53Ev");}
void  S784C4 ::v54(){vfunc_called(this, "_ZN6S784C43v54Ev");}
void  S784C4 ::v55(){vfunc_called(this, "_ZN6S784C43v55Ev");}
void  S784C4 ::v56(){vfunc_called(this, "_ZN6S784C43v56Ev");}
void  S784C4 ::v57(){vfunc_called(this, "_ZN6S784C43v57Ev");}
void  S784C4 ::v58(){vfunc_called(this, "_ZN6S784C43v58Ev");}
void  S784C4 ::v59(){vfunc_called(this, "_ZN6S784C43v59Ev");}
void  S784C4 ::v60(){vfunc_called(this, "_ZN6S784C43v60Ev");}
void  S784C4 ::v61(){vfunc_called(this, "_ZN6S784C43v61Ev");}
void  S784C4 ::v62(){vfunc_called(this, "_ZN6S784C43v62Ev");}
void  S784C4 ::v63(){vfunc_called(this, "_ZN6S784C43v63Ev");}
void  S784C4 ::v64(){vfunc_called(this, "_ZN6S784C43v64Ev");}
void  S784C4 ::v65(){vfunc_called(this, "_ZN6S784C43v65Ev");}
void  S784C4 ::v66(){vfunc_called(this, "_ZN6S784C43v66Ev");}
void  S784C4 ::v67(){vfunc_called(this, "_ZN6S784C43v67Ev");}
void  S784C4 ::v68(){vfunc_called(this, "_ZN6S784C43v68Ev");}
void  S784C4 ::v69(){vfunc_called(this, "_ZN6S784C43v69Ev");}
void  S784C4 ::v70(){vfunc_called(this, "_ZN6S784C43v70Ev");}
void  S784C4 ::v71(){vfunc_called(this, "_ZN6S784C43v71Ev");}
void  S784C4 ::v72(){vfunc_called(this, "_ZN6S784C43v72Ev");}
void  S784C4 ::v73(){vfunc_called(this, "_ZN6S784C43v73Ev");}
void  S784C4 ::v74(){vfunc_called(this, "_ZN6S784C43v74Ev");}
void  S784C4 ::v75(){vfunc_called(this, "_ZN6S784C43v75Ev");}
void  S784C4 ::v76(){vfunc_called(this, "_ZN6S784C43v76Ev");}
void  S784C4 ::v77(){vfunc_called(this, "_ZN6S784C43v77Ev");}
void  S784C4 ::v78(){vfunc_called(this, "_ZN6S784C43v78Ev");}
void  S784C4 ::v79(){vfunc_called(this, "_ZN6S784C43v79Ev");}
void  S784C4 ::v80(){vfunc_called(this, "_ZN6S784C43v80Ev");}
void  S784C4 ::v81(){vfunc_called(this, "_ZN6S784C43v81Ev");}
void  S784C4 ::v82(){vfunc_called(this, "_ZN6S784C43v82Ev");}
void  S784C4 ::v83(){vfunc_called(this, "_ZN6S784C43v83Ev");}
void  S784C4 ::v84(){vfunc_called(this, "_ZN6S784C43v84Ev");}
void  S784C4 ::v85(){vfunc_called(this, "_ZN6S784C43v85Ev");}
void  S784C4 ::v86(){vfunc_called(this, "_ZN6S784C43v86Ev");}
void  S784C4 ::v87(){vfunc_called(this, "_ZN6S784C43v87Ev");}
void  S784C4 ::v88(){vfunc_called(this, "_ZN6S784C43v88Ev");}
void  S784C4 ::v89(){vfunc_called(this, "_ZN6S784C43v89Ev");}
void  S784C4 ::v90(){vfunc_called(this, "_ZN6S784C43v90Ev");}
void  S784C4 ::v91(){vfunc_called(this, "_ZN6S784C43v91Ev");}
void  S784C4 ::v92(){vfunc_called(this, "_ZN6S784C43v92Ev");}
void  S784C4 ::v93(){vfunc_called(this, "_ZN6S784C43v93Ev");}
void  S784C4 ::v94(){vfunc_called(this, "_ZN6S784C43v94Ev");}
void  S784C4 ::v95(){vfunc_called(this, "_ZN6S784C43v95Ev");}
void  S784C4 ::v96(){vfunc_called(this, "_ZN6S784C43v96Ev");}
void  S784C4 ::v97(){vfunc_called(this, "_ZN6S784C43v97Ev");}
void  S784C4 ::v98(){vfunc_called(this, "_ZN6S784C43v98Ev");}
void  S784C4 ::v99(){vfunc_called(this, "_ZN6S784C43v99Ev");}
void  S784C4 ::v100(){vfunc_called(this, "_ZN6S784C44v100Ev");}
void  S784C4 ::v101(){vfunc_called(this, "_ZN6S784C44v101Ev");}
void  S784C4 ::v102(){vfunc_called(this, "_ZN6S784C44v102Ev");}
void  S784C4 ::v103(){vfunc_called(this, "_ZN6S784C44v103Ev");}
void  S784C4 ::v104(){vfunc_called(this, "_ZN6S784C44v104Ev");}
void  S784C4 ::v105(){vfunc_called(this, "_ZN6S784C44v105Ev");}
void  S784C4 ::v106(){vfunc_called(this, "_ZN6S784C44v106Ev");}
void  S784C4 ::v107(){vfunc_called(this, "_ZN6S784C44v107Ev");}
void  S784C4 ::v108(){vfunc_called(this, "_ZN6S784C44v108Ev");}
void  S784C4 ::v109(){vfunc_called(this, "_ZN6S784C44v109Ev");}
void  S784C4 ::v110(){vfunc_called(this, "_ZN6S784C44v110Ev");}
void  S784C4 ::v111(){vfunc_called(this, "_ZN6S784C44v111Ev");}
void  S784C4 ::v112(){vfunc_called(this, "_ZN6S784C44v112Ev");}
void  S784C4 ::v113(){vfunc_called(this, "_ZN6S784C44v113Ev");}
void  S784C4 ::v114(){vfunc_called(this, "_ZN6S784C44v114Ev");}
void  S784C4 ::v115(){vfunc_called(this, "_ZN6S784C44v115Ev");}
void  S784C4 ::v116(){vfunc_called(this, "_ZN6S784C44v116Ev");}
void  S784C4 ::v117(){vfunc_called(this, "_ZN6S784C44v117Ev");}
void  S784C4 ::v118(){vfunc_called(this, "_ZN6S784C44v118Ev");}
void  S784C4 ::v119(){vfunc_called(this, "_ZN6S784C44v119Ev");}
void  S784C4 ::v120(){vfunc_called(this, "_ZN6S784C44v120Ev");}
void  S784C4 ::v121(){vfunc_called(this, "_ZN6S784C44v121Ev");}
void  S784C4 ::v122(){vfunc_called(this, "_ZN6S784C44v122Ev");}
void  S784C4 ::v123(){vfunc_called(this, "_ZN6S784C44v123Ev");}
void  S784C4 ::v124(){vfunc_called(this, "_ZN6S784C44v124Ev");}
void  S784C4 ::v125(){vfunc_called(this, "_ZN6S784C44v125Ev");}
void  S784C4 ::v126(){vfunc_called(this, "_ZN6S784C44v126Ev");}
S784C4 ::~S784C4(){ note_dtor("S784C4", this);} // tgen
S784C4 ::S784C4(){ note_ctor("S784C4", this);} // tgen

static void Test_S784C4()
{
  extern Class_Descriptor cd_S784C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S784C4, buf);
    S784C4 *dp, &lv = *(dp=new (buf) S784C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S784C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S784C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S784C4");
    test_class_info(&lv, &cd_S784C4);
    dp->~S784C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS784C4(Test_S784C4, "S784C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S784C4C1Ev();
extern void _ZN6S784C4D1Ev();
Name_Map name_map_S784C4[] = {
  NSPAIR(_ZN6S784C4C1Ev),
  NSPAIR(_ZN6S784C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S784C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S784C4[];
extern void _ZN6S784C4D1Ev();
extern void _ZN6S784C4D0Ev();
extern void _ZN6S784C42v5Ev();
extern void _ZN6S784C42v6Ev();
extern void _ZN6S784C42v7Ev();
extern void _ZN6S784C42v8Ev();
extern void _ZN6S784C42v9Ev();
extern void _ZN6S784C43v10Ev();
extern void _ZN6S784C43v11Ev();
extern void _ZN6S784C43v12Ev();
extern void _ZN6S784C43v13Ev();
extern void _ZN6S784C43v14Ev();
extern void _ZN6S784C43v15Ev();
extern void _ZN6S784C43v16Ev();
extern void _ZN6S784C43v17Ev();
extern void _ZN6S784C43v18Ev();
extern void _ZN6S784C43v19Ev();
extern void _ZN6S784C43v20Ev();
extern void _ZN6S784C43v21Ev();
extern void _ZN6S784C43v22Ev();
extern void _ZN6S784C43v23Ev();
extern void _ZN6S784C43v24Ev();
extern void _ZN6S784C43v25Ev();
extern void _ZN6S784C43v26Ev();
extern void _ZN6S784C43v27Ev();
extern void _ZN6S784C43v28Ev();
extern void _ZN6S784C43v29Ev();
extern void _ZN6S784C43v30Ev();
extern void _ZN6S784C43v31Ev();
extern void _ZN6S784C43v32Ev();
extern void _ZN6S784C43v33Ev();
extern void _ZN6S784C43v34Ev();
extern void _ZN6S784C43v35Ev();
extern void _ZN6S784C43v36Ev();
extern void _ZN6S784C43v37Ev();
extern void _ZN6S784C43v38Ev();
extern void _ZN6S784C43v39Ev();
extern void _ZN6S784C43v40Ev();
extern void _ZN6S784C43v41Ev();
extern void _ZN6S784C43v42Ev();
extern void _ZN6S784C43v43Ev();
extern void _ZN6S784C43v44Ev();
extern void _ZN6S784C43v45Ev();
extern void _ZN6S784C43v46Ev();
extern void _ZN6S784C43v47Ev();
extern void _ZN6S784C43v48Ev();
extern void _ZN6S784C43v49Ev();
extern void _ZN6S784C43v50Ev();
extern void _ZN6S784C43v51Ev();
extern void _ZN6S784C43v52Ev();
extern void _ZN6S784C43v53Ev();
extern void _ZN6S784C43v54Ev();
extern void _ZN6S784C43v55Ev();
extern void _ZN6S784C43v56Ev();
extern void _ZN6S784C43v57Ev();
extern void _ZN6S784C43v58Ev();
extern void _ZN6S784C43v59Ev();
extern void _ZN6S784C43v60Ev();
extern void _ZN6S784C43v61Ev();
extern void _ZN6S784C43v62Ev();
extern void _ZN6S784C43v63Ev();
extern void _ZN6S784C43v64Ev();
extern void _ZN6S784C43v65Ev();
extern void _ZN6S784C43v66Ev();
extern void _ZN6S784C43v67Ev();
extern void _ZN6S784C43v68Ev();
extern void _ZN6S784C43v69Ev();
extern void _ZN6S784C43v70Ev();
extern void _ZN6S784C43v71Ev();
extern void _ZN6S784C43v72Ev();
extern void _ZN6S784C43v73Ev();
extern void _ZN6S784C43v74Ev();
extern void _ZN6S784C43v75Ev();
extern void _ZN6S784C43v76Ev();
extern void _ZN6S784C43v77Ev();
extern void _ZN6S784C43v78Ev();
extern void _ZN6S784C43v79Ev();
extern void _ZN6S784C43v80Ev();
extern void _ZN6S784C43v81Ev();
extern void _ZN6S784C43v82Ev();
extern void _ZN6S784C43v83Ev();
extern void _ZN6S784C43v84Ev();
extern void _ZN6S784C43v85Ev();
extern void _ZN6S784C43v86Ev();
extern void _ZN6S784C43v87Ev();
extern void _ZN6S784C43v88Ev();
extern void _ZN6S784C43v89Ev();
extern void _ZN6S784C43v90Ev();
extern void _ZN6S784C43v91Ev();
extern void _ZN6S784C43v92Ev();
extern void _ZN6S784C43v93Ev();
extern void _ZN6S784C43v94Ev();
extern void _ZN6S784C43v95Ev();
extern void _ZN6S784C43v96Ev();
extern void _ZN6S784C43v97Ev();
extern void _ZN6S784C43v98Ev();
extern void _ZN6S784C43v99Ev();
extern void _ZN6S784C44v100Ev();
extern void _ZN6S784C44v101Ev();
extern void _ZN6S784C44v102Ev();
extern void _ZN6S784C44v103Ev();
extern void _ZN6S784C44v104Ev();
extern void _ZN6S784C44v105Ev();
extern void _ZN6S784C44v106Ev();
extern void _ZN6S784C44v107Ev();
extern void _ZN6S784C44v108Ev();
extern void _ZN6S784C44v109Ev();
extern void _ZN6S784C44v110Ev();
extern void _ZN6S784C44v111Ev();
extern void _ZN6S784C44v112Ev();
extern void _ZN6S784C44v113Ev();
extern void _ZN6S784C44v114Ev();
extern void _ZN6S784C44v115Ev();
extern void _ZN6S784C44v116Ev();
extern void _ZN6S784C44v117Ev();
extern void _ZN6S784C44v118Ev();
extern void _ZN6S784C44v119Ev();
extern void _ZN6S784C44v120Ev();
extern void _ZN6S784C44v121Ev();
extern void _ZN6S784C44v122Ev();
extern void _ZN6S784C44v123Ev();
extern void _ZN6S784C44v124Ev();
extern void _ZN6S784C44v125Ev();
extern void _ZN6S784C44v126Ev();
static  VTBL_ENTRY vtc_S784C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S784C4[0]),
  (VTBL_ENTRY)&_ZN6S784C4D1Ev,
  (VTBL_ENTRY)&_ZN6S784C4D0Ev,
  (VTBL_ENTRY)&_ZN6S784C42v5Ev,
  (VTBL_ENTRY)&_ZN6S784C42v6Ev,
  (VTBL_ENTRY)&_ZN6S784C42v7Ev,
  (VTBL_ENTRY)&_ZN6S784C42v8Ev,
  (VTBL_ENTRY)&_ZN6S784C42v9Ev,
  (VTBL_ENTRY)&_ZN6S784C43v10Ev,
  (VTBL_ENTRY)&_ZN6S784C43v11Ev,
  (VTBL_ENTRY)&_ZN6S784C43v12Ev,
  (VTBL_ENTRY)&_ZN6S784C43v13Ev,
  (VTBL_ENTRY)&_ZN6S784C43v14Ev,
  (VTBL_ENTRY)&_ZN6S784C43v15Ev,
  (VTBL_ENTRY)&_ZN6S784C43v16Ev,
  (VTBL_ENTRY)&_ZN6S784C43v17Ev,
  (VTBL_ENTRY)&_ZN6S784C43v18Ev,
  (VTBL_ENTRY)&_ZN6S784C43v19Ev,
  (VTBL_ENTRY)&_ZN6S784C43v20Ev,
  (VTBL_ENTRY)&_ZN6S784C43v21Ev,
  (VTBL_ENTRY)&_ZN6S784C43v22Ev,
  (VTBL_ENTRY)&_ZN6S784C43v23Ev,
  (VTBL_ENTRY)&_ZN6S784C43v24Ev,
  (VTBL_ENTRY)&_ZN6S784C43v25Ev,
  (VTBL_ENTRY)&_ZN6S784C43v26Ev,
  (VTBL_ENTRY)&_ZN6S784C43v27Ev,
  (VTBL_ENTRY)&_ZN6S784C43v28Ev,
  (VTBL_ENTRY)&_ZN6S784C43v29Ev,
  (VTBL_ENTRY)&_ZN6S784C43v30Ev,
  (VTBL_ENTRY)&_ZN6S784C43v31Ev,
  (VTBL_ENTRY)&_ZN6S784C43v32Ev,
  (VTBL_ENTRY)&_ZN6S784C43v33Ev,
  (VTBL_ENTRY)&_ZN6S784C43v34Ev,
  (VTBL_ENTRY)&_ZN6S784C43v35Ev,
  (VTBL_ENTRY)&_ZN6S784C43v36Ev,
  (VTBL_ENTRY)&_ZN6S784C43v37Ev,
  (VTBL_ENTRY)&_ZN6S784C43v38Ev,
  (VTBL_ENTRY)&_ZN6S784C43v39Ev,
  (VTBL_ENTRY)&_ZN6S784C43v40Ev,
  (VTBL_ENTRY)&_ZN6S784C43v41Ev,
  (VTBL_ENTRY)&_ZN6S784C43v42Ev,
  (VTBL_ENTRY)&_ZN6S784C43v43Ev,
  (VTBL_ENTRY)&_ZN6S784C43v44Ev,
  (VTBL_ENTRY)&_ZN6S784C43v45Ev,
  (VTBL_ENTRY)&_ZN6S784C43v46Ev,
  (VTBL_ENTRY)&_ZN6S784C43v47Ev,
  (VTBL_ENTRY)&_ZN6S784C43v48Ev,
  (VTBL_ENTRY)&_ZN6S784C43v49Ev,
  (VTBL_ENTRY)&_ZN6S784C43v50Ev,
  (VTBL_ENTRY)&_ZN6S784C43v51Ev,
  (VTBL_ENTRY)&_ZN6S784C43v52Ev,
  (VTBL_ENTRY)&_ZN6S784C43v53Ev,
  (VTBL_ENTRY)&_ZN6S784C43v54Ev,
  (VTBL_ENTRY)&_ZN6S784C43v55Ev,
  (VTBL_ENTRY)&_ZN6S784C43v56Ev,
  (VTBL_ENTRY)&_ZN6S784C43v57Ev,
  (VTBL_ENTRY)&_ZN6S784C43v58Ev,
  (VTBL_ENTRY)&_ZN6S784C43v59Ev,
  (VTBL_ENTRY)&_ZN6S784C43v60Ev,
  (VTBL_ENTRY)&_ZN6S784C43v61Ev,
  (VTBL_ENTRY)&_ZN6S784C43v62Ev,
  (VTBL_ENTRY)&_ZN6S784C43v63Ev,
  (VTBL_ENTRY)&_ZN6S784C43v64Ev,
  (VTBL_ENTRY)&_ZN6S784C43v65Ev,
  (VTBL_ENTRY)&_ZN6S784C43v66Ev,
  (VTBL_ENTRY)&_ZN6S784C43v67Ev,
  (VTBL_ENTRY)&_ZN6S784C43v68Ev,
  (VTBL_ENTRY)&_ZN6S784C43v69Ev,
  (VTBL_ENTRY)&_ZN6S784C43v70Ev,
  (VTBL_ENTRY)&_ZN6S784C43v71Ev,
  (VTBL_ENTRY)&_ZN6S784C43v72Ev,
  (VTBL_ENTRY)&_ZN6S784C43v73Ev,
  (VTBL_ENTRY)&_ZN6S784C43v74Ev,
  (VTBL_ENTRY)&_ZN6S784C43v75Ev,
  (VTBL_ENTRY)&_ZN6S784C43v76Ev,
  (VTBL_ENTRY)&_ZN6S784C43v77Ev,
  (VTBL_ENTRY)&_ZN6S784C43v78Ev,
  (VTBL_ENTRY)&_ZN6S784C43v79Ev,
  (VTBL_ENTRY)&_ZN6S784C43v80Ev,
  (VTBL_ENTRY)&_ZN6S784C43v81Ev,
  (VTBL_ENTRY)&_ZN6S784C43v82Ev,
  (VTBL_ENTRY)&_ZN6S784C43v83Ev,
  (VTBL_ENTRY)&_ZN6S784C43v84Ev,
  (VTBL_ENTRY)&_ZN6S784C43v85Ev,
  (VTBL_ENTRY)&_ZN6S784C43v86Ev,
  (VTBL_ENTRY)&_ZN6S784C43v87Ev,
  (VTBL_ENTRY)&_ZN6S784C43v88Ev,
  (VTBL_ENTRY)&_ZN6S784C43v89Ev,
  (VTBL_ENTRY)&_ZN6S784C43v90Ev,
  (VTBL_ENTRY)&_ZN6S784C43v91Ev,
  (VTBL_ENTRY)&_ZN6S784C43v92Ev,
  (VTBL_ENTRY)&_ZN6S784C43v93Ev,
  (VTBL_ENTRY)&_ZN6S784C43v94Ev,
  (VTBL_ENTRY)&_ZN6S784C43v95Ev,
  (VTBL_ENTRY)&_ZN6S784C43v96Ev,
  (VTBL_ENTRY)&_ZN6S784C43v97Ev,
  (VTBL_ENTRY)&_ZN6S784C43v98Ev,
  (VTBL_ENTRY)&_ZN6S784C43v99Ev,
  (VTBL_ENTRY)&_ZN6S784C44v100Ev,
  (VTBL_ENTRY)&_ZN6S784C44v101Ev,
  (VTBL_ENTRY)&_ZN6S784C44v102Ev,
  (VTBL_ENTRY)&_ZN6S784C44v103Ev,
  (VTBL_ENTRY)&_ZN6S784C44v104Ev,
  (VTBL_ENTRY)&_ZN6S784C44v105Ev,
  (VTBL_ENTRY)&_ZN6S784C44v106Ev,
  (VTBL_ENTRY)&_ZN6S784C44v107Ev,
  (VTBL_ENTRY)&_ZN6S784C44v108Ev,
  (VTBL_ENTRY)&_ZN6S784C44v109Ev,
  (VTBL_ENTRY)&_ZN6S784C44v110Ev,
  (VTBL_ENTRY)&_ZN6S784C44v111Ev,
  (VTBL_ENTRY)&_ZN6S784C44v112Ev,
  (VTBL_ENTRY)&_ZN6S784C44v113Ev,
  (VTBL_ENTRY)&_ZN6S784C44v114Ev,
  (VTBL_ENTRY)&_ZN6S784C44v115Ev,
  (VTBL_ENTRY)&_ZN6S784C44v116Ev,
  (VTBL_ENTRY)&_ZN6S784C44v117Ev,
  (VTBL_ENTRY)&_ZN6S784C44v118Ev,
  (VTBL_ENTRY)&_ZN6S784C44v119Ev,
  (VTBL_ENTRY)&_ZN6S784C44v120Ev,
  (VTBL_ENTRY)&_ZN6S784C44v121Ev,
  (VTBL_ENTRY)&_ZN6S784C44v122Ev,
  (VTBL_ENTRY)&_ZN6S784C44v123Ev,
  (VTBL_ENTRY)&_ZN6S784C44v124Ev,
  (VTBL_ENTRY)&_ZN6S784C44v125Ev,
  (VTBL_ENTRY)&_ZN6S784C44v126Ev,
};
extern VTBL_ENTRY _ZTI6S784C4[];
extern  VTBL_ENTRY _ZTV6S784C4[];
Class_Descriptor cd_S784C4 = {  "S784C4", // class name
  bases_S784C4, 1,
  &(vtc_S784C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S784C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S784C4),126, //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  S784C3  : S784C4 {
  virtual void  v127(); // _ZN6S784C34v127Ev
  virtual void  v128(); // _ZN6S784C34v128Ev
  virtual void  v129(); // _ZN6S784C34v129Ev
  virtual void  v130(); // _ZN6S784C34v130Ev
  virtual void  v131(); // _ZN6S784C34v131Ev
  virtual void  v132(); // _ZN6S784C34v132Ev
  virtual void  v133(); // _ZN6S784C34v133Ev
  virtual void  v134(); // _ZN6S784C34v134Ev
  virtual void  v135(); // _ZN6S784C34v135Ev
  virtual void  v136(); // _ZN6S784C34v136Ev
  virtual void  v137(); // _ZN6S784C34v137Ev
  virtual void  v138(); // _ZN6S784C34v138Ev
  virtual void  v139(); // _ZN6S784C34v139Ev
  virtual void  v140(); // _ZN6S784C34v140Ev
  virtual void  v141(); // _ZN6S784C34v141Ev
  virtual void  v142(); // _ZN6S784C34v142Ev
  virtual void  v143(); // _ZN6S784C34v143Ev
  virtual void  v144(); // _ZN6S784C34v144Ev
  ~S784C3(); // tgen
  S784C3(); // tgen
};
//SIG(-1 S784C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S784C3 ::v127(){vfunc_called(this, "_ZN6S784C34v127Ev");}
void  S784C3 ::v128(){vfunc_called(this, "_ZN6S784C34v128Ev");}
void  S784C3 ::v129(){vfunc_called(this, "_ZN6S784C34v129Ev");}
void  S784C3 ::v130(){vfunc_called(this, "_ZN6S784C34v130Ev");}
void  S784C3 ::v131(){vfunc_called(this, "_ZN6S784C34v131Ev");}
void  S784C3 ::v132(){vfunc_called(this, "_ZN6S784C34v132Ev");}
void  S784C3 ::v133(){vfunc_called(this, "_ZN6S784C34v133Ev");}
void  S784C3 ::v134(){vfunc_called(this, "_ZN6S784C34v134Ev");}
void  S784C3 ::v135(){vfunc_called(this, "_ZN6S784C34v135Ev");}
void  S784C3 ::v136(){vfunc_called(this, "_ZN6S784C34v136Ev");}
void  S784C3 ::v137(){vfunc_called(this, "_ZN6S784C34v137Ev");}
void  S784C3 ::v138(){vfunc_called(this, "_ZN6S784C34v138Ev");}
void  S784C3 ::v139(){vfunc_called(this, "_ZN6S784C34v139Ev");}
void  S784C3 ::v140(){vfunc_called(this, "_ZN6S784C34v140Ev");}
void  S784C3 ::v141(){vfunc_called(this, "_ZN6S784C34v141Ev");}
void  S784C3 ::v142(){vfunc_called(this, "_ZN6S784C34v142Ev");}
void  S784C3 ::v143(){vfunc_called(this, "_ZN6S784C34v143Ev");}
void  S784C3 ::v144(){vfunc_called(this, "_ZN6S784C34v144Ev");}
S784C3 ::~S784C3(){ note_dtor("S784C3", this);} // tgen
S784C3 ::S784C3(){ note_ctor("S784C3", this);} // tgen

static void Test_S784C3()
{
  extern Class_Descriptor cd_S784C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S784C3, buf);
    S784C3 *dp, &lv = *(dp=new (buf) S784C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S784C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S784C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S784C4*), 0, "S784C3");
    check_base_class_offset(lv, (S784C4*), 0, "S784C3");
    test_class_info(&lv, &cd_S784C3);
    dp->~S784C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS784C3(Test_S784C3, "S784C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S784C3C1Ev();
extern void _ZN6S784C3D1Ev();
Name_Map name_map_S784C3[] = {
  NSPAIR(_ZN6S784C3C1Ev),
  NSPAIR(_ZN6S784C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S784C4;
extern VTBL_ENTRY _ZTI6S784C4[];
extern  VTBL_ENTRY _ZTV6S784C4[];
static Base_Class bases_S784C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S784C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S784C3[];
extern void _ZN6S784C3D1Ev();
extern void _ZN6S784C3D0Ev();
extern void _ZN6S784C42v5Ev();
extern void _ZN6S784C42v6Ev();
extern void _ZN6S784C42v7Ev();
extern void _ZN6S784C42v8Ev();
extern void _ZN6S784C42v9Ev();
extern void _ZN6S784C43v10Ev();
extern void _ZN6S784C43v11Ev();
extern void _ZN6S784C43v12Ev();
extern void _ZN6S784C43v13Ev();
extern void _ZN6S784C43v14Ev();
extern void _ZN6S784C43v15Ev();
extern void _ZN6S784C43v16Ev();
extern void _ZN6S784C43v17Ev();
extern void _ZN6S784C43v18Ev();
extern void _ZN6S784C43v19Ev();
extern void _ZN6S784C43v20Ev();
extern void _ZN6S784C43v21Ev();
extern void _ZN6S784C43v22Ev();
extern void _ZN6S784C43v23Ev();
extern void _ZN6S784C43v24Ev();
extern void _ZN6S784C43v25Ev();
extern void _ZN6S784C43v26Ev();
extern void _ZN6S784C43v27Ev();
extern void _ZN6S784C43v28Ev();
extern void _ZN6S784C43v29Ev();
extern void _ZN6S784C43v30Ev();
extern void _ZN6S784C43v31Ev();
extern void _ZN6S784C43v32Ev();
extern void _ZN6S784C43v33Ev();
extern void _ZN6S784C43v34Ev();
extern void _ZN6S784C43v35Ev();
extern void _ZN6S784C43v36Ev();
extern void _ZN6S784C43v37Ev();
extern void _ZN6S784C43v38Ev();
extern void _ZN6S784C43v39Ev();
extern void _ZN6S784C43v40Ev();
extern void _ZN6S784C43v41Ev();
extern void _ZN6S784C43v42Ev();
extern void _ZN6S784C43v43Ev();
extern void _ZN6S784C43v44Ev();
extern void _ZN6S784C43v45Ev();
extern void _ZN6S784C43v46Ev();
extern void _ZN6S784C43v47Ev();
extern void _ZN6S784C43v48Ev();
extern void _ZN6S784C43v49Ev();
extern void _ZN6S784C43v50Ev();
extern void _ZN6S784C43v51Ev();
extern void _ZN6S784C43v52Ev();
extern void _ZN6S784C43v53Ev();
extern void _ZN6S784C43v54Ev();
extern void _ZN6S784C43v55Ev();
extern void _ZN6S784C43v56Ev();
extern void _ZN6S784C43v57Ev();
extern void _ZN6S784C43v58Ev();
extern void _ZN6S784C43v59Ev();
extern void _ZN6S784C43v60Ev();
extern void _ZN6S784C43v61Ev();
extern void _ZN6S784C43v62Ev();
extern void _ZN6S784C43v63Ev();
extern void _ZN6S784C43v64Ev();
extern void _ZN6S784C43v65Ev();
extern void _ZN6S784C43v66Ev();
extern void _ZN6S784C43v67Ev();
extern void _ZN6S784C43v68Ev();
extern void _ZN6S784C43v69Ev();
extern void _ZN6S784C43v70Ev();
extern void _ZN6S784C43v71Ev();
extern void _ZN6S784C43v72Ev();
extern void _ZN6S784C43v73Ev();
extern void _ZN6S784C43v74Ev();
extern void _ZN6S784C43v75Ev();
extern void _ZN6S784C43v76Ev();
extern void _ZN6S784C43v77Ev();
extern void _ZN6S784C43v78Ev();
extern void _ZN6S784C43v79Ev();
extern void _ZN6S784C43v80Ev();
extern void _ZN6S784C43v81Ev();
extern void _ZN6S784C43v82Ev();
extern void _ZN6S784C43v83Ev();
extern void _ZN6S784C43v84Ev();
extern void _ZN6S784C43v85Ev();
extern void _ZN6S784C43v86Ev();
extern void _ZN6S784C43v87Ev();
extern void _ZN6S784C43v88Ev();
extern void _ZN6S784C43v89Ev();
extern void _ZN6S784C43v90Ev();
extern void _ZN6S784C43v91Ev();
extern void _ZN6S784C43v92Ev();
extern void _ZN6S784C43v93Ev();
extern void _ZN6S784C43v94Ev();
extern void _ZN6S784C43v95Ev();
extern void _ZN6S784C43v96Ev();
extern void _ZN6S784C43v97Ev();
extern void _ZN6S784C43v98Ev();
extern void _ZN6S784C43v99Ev();
extern void _ZN6S784C44v100Ev();
extern void _ZN6S784C44v101Ev();
extern void _ZN6S784C44v102Ev();
extern void _ZN6S784C44v103Ev();
extern void _ZN6S784C44v104Ev();
extern void _ZN6S784C44v105Ev();
extern void _ZN6S784C44v106Ev();
extern void _ZN6S784C44v107Ev();
extern void _ZN6S784C44v108Ev();
extern void _ZN6S784C44v109Ev();
extern void _ZN6S784C44v110Ev();
extern void _ZN6S784C44v111Ev();
extern void _ZN6S784C44v112Ev();
extern void _ZN6S784C44v113Ev();
extern void _ZN6S784C44v114Ev();
extern void _ZN6S784C44v115Ev();
extern void _ZN6S784C44v116Ev();
extern void _ZN6S784C44v117Ev();
extern void _ZN6S784C44v118Ev();
extern void _ZN6S784C44v119Ev();
extern void _ZN6S784C44v120Ev();
extern void _ZN6S784C44v121Ev();
extern void _ZN6S784C44v122Ev();
extern void _ZN6S784C44v123Ev();
extern void _ZN6S784C44v124Ev();
extern void _ZN6S784C44v125Ev();
extern void _ZN6S784C44v126Ev();
extern void _ZN6S784C34v127Ev();
extern void _ZN6S784C34v128Ev();
extern void _ZN6S784C34v129Ev();
extern void _ZN6S784C34v130Ev();
extern void _ZN6S784C34v131Ev();
extern void _ZN6S784C34v132Ev();
extern void _ZN6S784C34v133Ev();
extern void _ZN6S784C34v134Ev();
extern void _ZN6S784C34v135Ev();
extern void _ZN6S784C34v136Ev();
extern void _ZN6S784C34v137Ev();
extern void _ZN6S784C34v138Ev();
extern void _ZN6S784C34v139Ev();
extern void _ZN6S784C34v140Ev();
extern void _ZN6S784C34v141Ev();
extern void _ZN6S784C34v142Ev();
extern void _ZN6S784C34v143Ev();
extern void _ZN6S784C34v144Ev();
static  VTBL_ENTRY vtc_S784C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S784C3[0]),
  (VTBL_ENTRY)&_ZN6S784C3D1Ev,
  (VTBL_ENTRY)&_ZN6S784C3D0Ev,
  (VTBL_ENTRY)&_ZN6S784C42v5Ev,
  (VTBL_ENTRY)&_ZN6S784C42v6Ev,
  (VTBL_ENTRY)&_ZN6S784C42v7Ev,
  (VTBL_ENTRY)&_ZN6S784C42v8Ev,
  (VTBL_ENTRY)&_ZN6S784C42v9Ev,
  (VTBL_ENTRY)&_ZN6S784C43v10Ev,
  (VTBL_ENTRY)&_ZN6S784C43v11Ev,
  (VTBL_ENTRY)&_ZN6S784C43v12Ev,
  (VTBL_ENTRY)&_ZN6S784C43v13Ev,
  (VTBL_ENTRY)&_ZN6S784C43v14Ev,
  (VTBL_ENTRY)&_ZN6S784C43v15Ev,
  (VTBL_ENTRY)&_ZN6S784C43v16Ev,
  (VTBL_ENTRY)&_ZN6S784C43v17Ev,
  (VTBL_ENTRY)&_ZN6S784C43v18Ev,
  (VTBL_ENTRY)&_ZN6S784C43v19Ev,
  (VTBL_ENTRY)&_ZN6S784C43v20Ev,
  (VTBL_ENTRY)&_ZN6S784C43v21Ev,
  (VTBL_ENTRY)&_ZN6S784C43v22Ev,
  (VTBL_ENTRY)&_ZN6S784C43v23Ev,
  (VTBL_ENTRY)&_ZN6S784C43v24Ev,
  (VTBL_ENTRY)&_ZN6S784C43v25Ev,
  (VTBL_ENTRY)&_ZN6S784C43v26Ev,
  (VTBL_ENTRY)&_ZN6S784C43v27Ev,
  (VTBL_ENTRY)&_ZN6S784C43v28Ev,
  (VTBL_ENTRY)&_ZN6S784C43v29Ev,
  (VTBL_ENTRY)&_ZN6S784C43v30Ev,
  (VTBL_ENTRY)&_ZN6S784C43v31Ev,
  (VTBL_ENTRY)&_ZN6S784C43v32Ev,
  (VTBL_ENTRY)&_ZN6S784C43v33Ev,
  (VTBL_ENTRY)&_ZN6S784C43v34Ev,
  (VTBL_ENTRY)&_ZN6S784C43v35Ev,
  (VTBL_ENTRY)&_ZN6S784C43v36Ev,
  (VTBL_ENTRY)&_ZN6S784C43v37Ev,
  (VTBL_ENTRY)&_ZN6S784C43v38Ev,
  (VTBL_ENTRY)&_ZN6S784C43v39Ev,
  (VTBL_ENTRY)&_ZN6S784C43v40Ev,
  (VTBL_ENTRY)&_ZN6S784C43v41Ev,
  (VTBL_ENTRY)&_ZN6S784C43v42Ev,
  (VTBL_ENTRY)&_ZN6S784C43v43Ev,
  (VTBL_ENTRY)&_ZN6S784C43v44Ev,
  (VTBL_ENTRY)&_ZN6S784C43v45Ev,
  (VTBL_ENTRY)&_ZN6S784C43v46Ev,
  (VTBL_ENTRY)&_ZN6S784C43v47Ev,
  (VTBL_ENTRY)&_ZN6S784C43v48Ev,
  (VTBL_ENTRY)&_ZN6S784C43v49Ev,
  (VTBL_ENTRY)&_ZN6S784C43v50Ev,
  (VTBL_ENTRY)&_ZN6S784C43v51Ev,
  (VTBL_ENTRY)&_ZN6S784C43v52Ev,
  (VTBL_ENTRY)&_ZN6S784C43v53Ev,
  (VTBL_ENTRY)&_ZN6S784C43v54Ev,
  (VTBL_ENTRY)&_ZN6S784C43v55Ev,
  (VTBL_ENTRY)&_ZN6S784C43v56Ev,
  (VTBL_ENTRY)&_ZN6S784C43v57Ev,
  (VTBL_ENTRY)&_ZN6S784C43v58Ev,
  (VTBL_ENTRY)&_ZN6S784C43v59Ev,
  (VTBL_ENTRY)&_ZN6S784C43v60Ev,
  (VTBL_ENTRY)&_ZN6S784C43v61Ev,
  (VTBL_ENTRY)&_ZN6S784C43v62Ev,
  (VTBL_ENTRY)&_ZN6S784C43v63Ev,
  (VTBL_ENTRY)&_ZN6S784C43v64Ev,
  (VTBL_ENTRY)&_ZN6S784C43v65Ev,
  (VTBL_ENTRY)&_ZN6S784C43v66Ev,
  (VTBL_ENTRY)&_ZN6S784C43v67Ev,
  (VTBL_ENTRY)&_ZN6S784C43v68Ev,
  (VTBL_ENTRY)&_ZN6S784C43v69Ev,
  (VTBL_ENTRY)&_ZN6S784C43v70Ev,
  (VTBL_ENTRY)&_ZN6S784C43v71Ev,
  (VTBL_ENTRY)&_ZN6S784C43v72Ev,
  (VTBL_ENTRY)&_ZN6S784C43v73Ev,
  (VTBL_ENTRY)&_ZN6S784C43v74Ev,
  (VTBL_ENTRY)&_ZN6S784C43v75Ev,
  (VTBL_ENTRY)&_ZN6S784C43v76Ev,
  (VTBL_ENTRY)&_ZN6S784C43v77Ev,
  (VTBL_ENTRY)&_ZN6S784C43v78Ev,
  (VTBL_ENTRY)&_ZN6S784C43v79Ev,
  (VTBL_ENTRY)&_ZN6S784C43v80Ev,
  (VTBL_ENTRY)&_ZN6S784C43v81Ev,
  (VTBL_ENTRY)&_ZN6S784C43v82Ev,
  (VTBL_ENTRY)&_ZN6S784C43v83Ev,
  (VTBL_ENTRY)&_ZN6S784C43v84Ev,
  (VTBL_ENTRY)&_ZN6S784C43v85Ev,
  (VTBL_ENTRY)&_ZN6S784C43v86Ev,
  (VTBL_ENTRY)&_ZN6S784C43v87Ev,
  (VTBL_ENTRY)&_ZN6S784C43v88Ev,
  (VTBL_ENTRY)&_ZN6S784C43v89Ev,
  (VTBL_ENTRY)&_ZN6S784C43v90Ev,
  (VTBL_ENTRY)&_ZN6S784C43v91Ev,
  (VTBL_ENTRY)&_ZN6S784C43v92Ev,
  (VTBL_ENTRY)&_ZN6S784C43v93Ev,
  (VTBL_ENTRY)&_ZN6S784C43v94Ev,
  (VTBL_ENTRY)&_ZN6S784C43v95Ev,
  (VTBL_ENTRY)&_ZN6S784C43v96Ev,
  (VTBL_ENTRY)&_ZN6S784C43v97Ev,
  (VTBL_ENTRY)&_ZN6S784C43v98Ev,
  (VTBL_ENTRY)&_ZN6S784C43v99Ev,
  (VTBL_ENTRY)&_ZN6S784C44v100Ev,
  (VTBL_ENTRY)&_ZN6S784C44v101Ev,
  (VTBL_ENTRY)&_ZN6S784C44v102Ev,
  (VTBL_ENTRY)&_ZN6S784C44v103Ev,
  (VTBL_ENTRY)&_ZN6S784C44v104Ev,
  (VTBL_ENTRY)&_ZN6S784C44v105Ev,
  (VTBL_ENTRY)&_ZN6S784C44v106Ev,
  (VTBL_ENTRY)&_ZN6S784C44v107Ev,
  (VTBL_ENTRY)&_ZN6S784C44v108Ev,
  (VTBL_ENTRY)&_ZN6S784C44v109Ev,
  (VTBL_ENTRY)&_ZN6S784C44v110Ev,
  (VTBL_ENTRY)&_ZN6S784C44v111Ev,
  (VTBL_ENTRY)&_ZN6S784C44v112Ev,
  (VTBL_ENTRY)&_ZN6S784C44v113Ev,
  (VTBL_ENTRY)&_ZN6S784C44v114Ev,
  (VTBL_ENTRY)&_ZN6S784C44v115Ev,
  (VTBL_ENTRY)&_ZN6S784C44v116Ev,
  (VTBL_ENTRY)&_ZN6S784C44v117Ev,
  (VTBL_ENTRY)&_ZN6S784C44v118Ev,
  (VTBL_ENTRY)&_ZN6S784C44v119Ev,
  (VTBL_ENTRY)&_ZN6S784C44v120Ev,
  (VTBL_ENTRY)&_ZN6S784C44v121Ev,
  (VTBL_ENTRY)&_ZN6S784C44v122Ev,
  (VTBL_ENTRY)&_ZN6S784C44v123Ev,
  (VTBL_ENTRY)&_ZN6S784C44v124Ev,
  (VTBL_ENTRY)&_ZN6S784C44v125Ev,
  (VTBL_ENTRY)&_ZN6S784C44v126Ev,
  (VTBL_ENTRY)&_ZN6S784C34v127Ev,
  (VTBL_ENTRY)&_ZN6S784C34v128Ev,
  (VTBL_ENTRY)&_ZN6S784C34v129Ev,
  (VTBL_ENTRY)&_ZN6S784C34v130Ev,
  (VTBL_ENTRY)&_ZN6S784C34v131Ev,
  (VTBL_ENTRY)&_ZN6S784C34v132Ev,
  (VTBL_ENTRY)&_ZN6S784C34v133Ev,
  (VTBL_ENTRY)&_ZN6S784C34v134Ev,
  (VTBL_ENTRY)&_ZN6S784C34v135Ev,
  (VTBL_ENTRY)&_ZN6S784C34v136Ev,
  (VTBL_ENTRY)&_ZN6S784C34v137Ev,
  (VTBL_ENTRY)&_ZN6S784C34v138Ev,
  (VTBL_ENTRY)&_ZN6S784C34v139Ev,
  (VTBL_ENTRY)&_ZN6S784C34v140Ev,
  (VTBL_ENTRY)&_ZN6S784C34v141Ev,
  (VTBL_ENTRY)&_ZN6S784C34v142Ev,
  (VTBL_ENTRY)&_ZN6S784C34v143Ev,
  (VTBL_ENTRY)&_ZN6S784C34v144Ev,
};
extern VTBL_ENTRY _ZTI6S784C3[];
extern  VTBL_ENTRY _ZTV6S784C3[];
Class_Descriptor cd_S784C3 = {  "S784C3", // class name
  bases_S784C3, 2,
  &(vtc_S784C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S784C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S784C3),144, //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  S784C2  : S784C3 {
  virtual void  v145(); // _ZN6S784C24v145Ev
  ~S784C2(); // tgen
  S784C2(); // tgen
};
//SIG(-1 S784C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S784C2 ::v145(){vfunc_called(this, "_ZN6S784C24v145Ev");}
S784C2 ::~S784C2(){ note_dtor("S784C2", this);} // tgen
S784C2 ::S784C2(){ note_ctor("S784C2", this);} // tgen

static void Test_S784C2()
{
  extern Class_Descriptor cd_S784C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S784C2, buf);
    S784C2 *dp, &lv = *(dp=new (buf) S784C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S784C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S784C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S784C4*)(S784C3*), 0, "S784C2");
    check_base_class_offset(lv, (S784C4*)(S784C3*), 0, "S784C2");
    check_base_class_offset(lv, (S784C3*), 0, "S784C2");
    test_class_info(&lv, &cd_S784C2);
    dp->~S784C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS784C2(Test_S784C2, "S784C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S784C2C1Ev();
extern void _ZN6S784C2D1Ev();
Name_Map name_map_S784C2[] = {
  NSPAIR(_ZN6S784C2C1Ev),
  NSPAIR(_ZN6S784C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S784C4;
extern VTBL_ENTRY _ZTI6S784C4[];
extern  VTBL_ENTRY _ZTV6S784C4[];
extern Class_Descriptor cd_S784C3;
extern VTBL_ENTRY _ZTI6S784C3[];
extern  VTBL_ENTRY _ZTV6S784C3[];
static Base_Class bases_S784C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S784C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S784C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S784C2[];
extern void _ZN6S784C2D1Ev();
extern void _ZN6S784C2D0Ev();
extern void _ZN6S784C42v5Ev();
extern void _ZN6S784C42v6Ev();
extern void _ZN6S784C42v7Ev();
extern void _ZN6S784C42v8Ev();
extern void _ZN6S784C42v9Ev();
extern void _ZN6S784C43v10Ev();
extern void _ZN6S784C43v11Ev();
extern void _ZN6S784C43v12Ev();
extern void _ZN6S784C43v13Ev();
extern void _ZN6S784C43v14Ev();
extern void _ZN6S784C43v15Ev();
extern void _ZN6S784C43v16Ev();
extern void _ZN6S784C43v17Ev();
extern void _ZN6S784C43v18Ev();
extern void _ZN6S784C43v19Ev();
extern void _ZN6S784C43v20Ev();
extern void _ZN6S784C43v21Ev();
extern void _ZN6S784C43v22Ev();
extern void _ZN6S784C43v23Ev();
extern void _ZN6S784C43v24Ev();
extern void _ZN6S784C43v25Ev();
extern void _ZN6S784C43v26Ev();
extern void _ZN6S784C43v27Ev();
extern void _ZN6S784C43v28Ev();
extern void _ZN6S784C43v29Ev();
extern void _ZN6S784C43v30Ev();
extern void _ZN6S784C43v31Ev();
extern void _ZN6S784C43v32Ev();
extern void _ZN6S784C43v33Ev();
extern void _ZN6S784C43v34Ev();
extern void _ZN6S784C43v35Ev();
extern void _ZN6S784C43v36Ev();
extern void _ZN6S784C43v37Ev();
extern void _ZN6S784C43v38Ev();
extern void _ZN6S784C43v39Ev();
extern void _ZN6S784C43v40Ev();
extern void _ZN6S784C43v41Ev();
extern void _ZN6S784C43v42Ev();
extern void _ZN6S784C43v43Ev();
extern void _ZN6S784C43v44Ev();
extern void _ZN6S784C43v45Ev();
extern void _ZN6S784C43v46Ev();
extern void _ZN6S784C43v47Ev();
extern void _ZN6S784C43v48Ev();
extern void _ZN6S784C43v49Ev();
extern void _ZN6S784C43v50Ev();
extern void _ZN6S784C43v51Ev();
extern void _ZN6S784C43v52Ev();
extern void _ZN6S784C43v53Ev();
extern void _ZN6S784C43v54Ev();
extern void _ZN6S784C43v55Ev();
extern void _ZN6S784C43v56Ev();
extern void _ZN6S784C43v57Ev();
extern void _ZN6S784C43v58Ev();
extern void _ZN6S784C43v59Ev();
extern void _ZN6S784C43v60Ev();
extern void _ZN6S784C43v61Ev();
extern void _ZN6S784C43v62Ev();
extern void _ZN6S784C43v63Ev();
extern void _ZN6S784C43v64Ev();
extern void _ZN6S784C43v65Ev();
extern void _ZN6S784C43v66Ev();
extern void _ZN6S784C43v67Ev();
extern void _ZN6S784C43v68Ev();
extern void _ZN6S784C43v69Ev();
extern void _ZN6S784C43v70Ev();
extern void _ZN6S784C43v71Ev();
extern void _ZN6S784C43v72Ev();
extern void _ZN6S784C43v73Ev();
extern void _ZN6S784C43v74Ev();
extern void _ZN6S784C43v75Ev();
extern void _ZN6S784C43v76Ev();
extern void _ZN6S784C43v77Ev();
extern void _ZN6S784C43v78Ev();
extern void _ZN6S784C43v79Ev();
extern void _ZN6S784C43v80Ev();
extern void _ZN6S784C43v81Ev();
extern void _ZN6S784C43v82Ev();
extern void _ZN6S784C43v83Ev();
extern void _ZN6S784C43v84Ev();
extern void _ZN6S784C43v85Ev();
extern void _ZN6S784C43v86Ev();
extern void _ZN6S784C43v87Ev();
extern void _ZN6S784C43v88Ev();
extern void _ZN6S784C43v89Ev();
extern void _ZN6S784C43v90Ev();
extern void _ZN6S784C43v91Ev();
extern void _ZN6S784C43v92Ev();
extern void _ZN6S784C43v93Ev();
extern void _ZN6S784C43v94Ev();
extern void _ZN6S784C43v95Ev();
extern void _ZN6S784C43v96Ev();
extern void _ZN6S784C43v97Ev();
extern void _ZN6S784C43v98Ev();
extern void _ZN6S784C43v99Ev();
extern void _ZN6S784C44v100Ev();
extern void _ZN6S784C44v101Ev();
extern void _ZN6S784C44v102Ev();
extern void _ZN6S784C44v103Ev();
extern void _ZN6S784C44v104Ev();
extern void _ZN6S784C44v105Ev();
extern void _ZN6S784C44v106Ev();
extern void _ZN6S784C44v107Ev();
extern void _ZN6S784C44v108Ev();
extern void _ZN6S784C44v109Ev();
extern void _ZN6S784C44v110Ev();
extern void _ZN6S784C44v111Ev();
extern void _ZN6S784C44v112Ev();
extern void _ZN6S784C44v113Ev();
extern void _ZN6S784C44v114Ev();
extern void _ZN6S784C44v115Ev();
extern void _ZN6S784C44v116Ev();
extern void _ZN6S784C44v117Ev();
extern void _ZN6S784C44v118Ev();
extern void _ZN6S784C44v119Ev();
extern void _ZN6S784C44v120Ev();
extern void _ZN6S784C44v121Ev();
extern void _ZN6S784C44v122Ev();
extern void _ZN6S784C44v123Ev();
extern void _ZN6S784C44v124Ev();
extern void _ZN6S784C44v125Ev();
extern void _ZN6S784C44v126Ev();
extern void _ZN6S784C34v127Ev();
extern void _ZN6S784C34v128Ev();
extern void _ZN6S784C34v129Ev();
extern void _ZN6S784C34v130Ev();
extern void _ZN6S784C34v131Ev();
extern void _ZN6S784C34v132Ev();
extern void _ZN6S784C34v133Ev();
extern void _ZN6S784C34v134Ev();
extern void _ZN6S784C34v135Ev();
extern void _ZN6S784C34v136Ev();
extern void _ZN6S784C34v137Ev();
extern void _ZN6S784C34v138Ev();
extern void _ZN6S784C34v139Ev();
extern void _ZN6S784C34v140Ev();
extern void _ZN6S784C34v141Ev();
extern void _ZN6S784C34v142Ev();
extern void _ZN6S784C34v143Ev();
extern void _ZN6S784C34v144Ev();
extern void _ZN6S784C24v145Ev();
static  VTBL_ENTRY vtc_S784C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S784C2[0]),
  (VTBL_ENTRY)&_ZN6S784C2D1Ev,
  (VTBL_ENTRY)&_ZN6S784C2D0Ev,
  (VTBL_ENTRY)&_ZN6S784C42v5Ev,
  (VTBL_ENTRY)&_ZN6S784C42v6Ev,
  (VTBL_ENTRY)&_ZN6S784C42v7Ev,
  (VTBL_ENTRY)&_ZN6S784C42v8Ev,
  (VTBL_ENTRY)&_ZN6S784C42v9Ev,
  (VTBL_ENTRY)&_ZN6S784C43v10Ev,
  (VTBL_ENTRY)&_ZN6S784C43v11Ev,
  (VTBL_ENTRY)&_ZN6S784C43v12Ev,
  (VTBL_ENTRY)&_ZN6S784C43v13Ev,
  (VTBL_ENTRY)&_ZN6S784C43v14Ev,
  (VTBL_ENTRY)&_ZN6S784C43v15Ev,
  (VTBL_ENTRY)&_ZN6S784C43v16Ev,
  (VTBL_ENTRY)&_ZN6S784C43v17Ev,
  (VTBL_ENTRY)&_ZN6S784C43v18Ev,
  (VTBL_ENTRY)&_ZN6S784C43v19Ev,
  (VTBL_ENTRY)&_ZN6S784C43v20Ev,
  (VTBL_ENTRY)&_ZN6S784C43v21Ev,
  (VTBL_ENTRY)&_ZN6S784C43v22Ev,
  (VTBL_ENTRY)&_ZN6S784C43v23Ev,
  (VTBL_ENTRY)&_ZN6S784C43v24Ev,
  (VTBL_ENTRY)&_ZN6S784C43v25Ev,
  (VTBL_ENTRY)&_ZN6S784C43v26Ev,
  (VTBL_ENTRY)&_ZN6S784C43v27Ev,
  (VTBL_ENTRY)&_ZN6S784C43v28Ev,
  (VTBL_ENTRY)&_ZN6S784C43v29Ev,
  (VTBL_ENTRY)&_ZN6S784C43v30Ev,
  (VTBL_ENTRY)&_ZN6S784C43v31Ev,
  (VTBL_ENTRY)&_ZN6S784C43v32Ev,
  (VTBL_ENTRY)&_ZN6S784C43v33Ev,
  (VTBL_ENTRY)&_ZN6S784C43v34Ev,
  (VTBL_ENTRY)&_ZN6S784C43v35Ev,
  (VTBL_ENTRY)&_ZN6S784C43v36Ev,
  (VTBL_ENTRY)&_ZN6S784C43v37Ev,
  (VTBL_ENTRY)&_ZN6S784C43v38Ev,
  (VTBL_ENTRY)&_ZN6S784C43v39Ev,
  (VTBL_ENTRY)&_ZN6S784C43v40Ev,
  (VTBL_ENTRY)&_ZN6S784C43v41Ev,
  (VTBL_ENTRY)&_ZN6S784C43v42Ev,
  (VTBL_ENTRY)&_ZN6S784C43v43Ev,
  (VTBL_ENTRY)&_ZN6S784C43v44Ev,
  (VTBL_ENTRY)&_ZN6S784C43v45Ev,
  (VTBL_ENTRY)&_ZN6S784C43v46Ev,
  (VTBL_ENTRY)&_ZN6S784C43v47Ev,
  (VTBL_ENTRY)&_ZN6S784C43v48Ev,
  (VTBL_ENTRY)&_ZN6S784C43v49Ev,
  (VTBL_ENTRY)&_ZN6S784C43v50Ev,
  (VTBL_ENTRY)&_ZN6S784C43v51Ev,
  (VTBL_ENTRY)&_ZN6S784C43v52Ev,
  (VTBL_ENTRY)&_ZN6S784C43v53Ev,
  (VTBL_ENTRY)&_ZN6S784C43v54Ev,
  (VTBL_ENTRY)&_ZN6S784C43v55Ev,
  (VTBL_ENTRY)&_ZN6S784C43v56Ev,
  (VTBL_ENTRY)&_ZN6S784C43v57Ev,
  (VTBL_ENTRY)&_ZN6S784C43v58Ev,
  (VTBL_ENTRY)&_ZN6S784C43v59Ev,
  (VTBL_ENTRY)&_ZN6S784C43v60Ev,
  (VTBL_ENTRY)&_ZN6S784C43v61Ev,
  (VTBL_ENTRY)&_ZN6S784C43v62Ev,
  (VTBL_ENTRY)&_ZN6S784C43v63Ev,
  (VTBL_ENTRY)&_ZN6S784C43v64Ev,
  (VTBL_ENTRY)&_ZN6S784C43v65Ev,
  (VTBL_ENTRY)&_ZN6S784C43v66Ev,
  (VTBL_ENTRY)&_ZN6S784C43v67Ev,
  (VTBL_ENTRY)&_ZN6S784C43v68Ev,
  (VTBL_ENTRY)&_ZN6S784C43v69Ev,
  (VTBL_ENTRY)&_ZN6S784C43v70Ev,
  (VTBL_ENTRY)&_ZN6S784C43v71Ev,
  (VTBL_ENTRY)&_ZN6S784C43v72Ev,
  (VTBL_ENTRY)&_ZN6S784C43v73Ev,
  (VTBL_ENTRY)&_ZN6S784C43v74Ev,
  (VTBL_ENTRY)&_ZN6S784C43v75Ev,
  (VTBL_ENTRY)&_ZN6S784C43v76Ev,
  (VTBL_ENTRY)&_ZN6S784C43v77Ev,
  (VTBL_ENTRY)&_ZN6S784C43v78Ev,
  (VTBL_ENTRY)&_ZN6S784C43v79Ev,
  (VTBL_ENTRY)&_ZN6S784C43v80Ev,
  (VTBL_ENTRY)&_ZN6S784C43v81Ev,
  (VTBL_ENTRY)&_ZN6S784C43v82Ev,
  (VTBL_ENTRY)&_ZN6S784C43v83Ev,
  (VTBL_ENTRY)&_ZN6S784C43v84Ev,
  (VTBL_ENTRY)&_ZN6S784C43v85Ev,
  (VTBL_ENTRY)&_ZN6S784C43v86Ev,
  (VTBL_ENTRY)&_ZN6S784C43v87Ev,
  (VTBL_ENTRY)&_ZN6S784C43v88Ev,
  (VTBL_ENTRY)&_ZN6S784C43v89Ev,
  (VTBL_ENTRY)&_ZN6S784C43v90Ev,
  (VTBL_ENTRY)&_ZN6S784C43v91Ev,
  (VTBL_ENTRY)&_ZN6S784C43v92Ev,
  (VTBL_ENTRY)&_ZN6S784C43v93Ev,
  (VTBL_ENTRY)&_ZN6S784C43v94Ev,
  (VTBL_ENTRY)&_ZN6S784C43v95Ev,
  (VTBL_ENTRY)&_ZN6S784C43v96Ev,
  (VTBL_ENTRY)&_ZN6S784C43v97Ev,
  (VTBL_ENTRY)&_ZN6S784C43v98Ev,
  (VTBL_ENTRY)&_ZN6S784C43v99Ev,
  (VTBL_ENTRY)&_ZN6S784C44v100Ev,
  (VTBL_ENTRY)&_ZN6S784C44v101Ev,
  (VTBL_ENTRY)&_ZN6S784C44v102Ev,
  (VTBL_ENTRY)&_ZN6S784C44v103Ev,
  (VTBL_ENTRY)&_ZN6S784C44v104Ev,
  (VTBL_ENTRY)&_ZN6S784C44v105Ev,
  (VTBL_ENTRY)&_ZN6S784C44v106Ev,
  (VTBL_ENTRY)&_ZN6S784C44v107Ev,
  (VTBL_ENTRY)&_ZN6S784C44v108Ev,
  (VTBL_ENTRY)&_ZN6S784C44v109Ev,
  (VTBL_ENTRY)&_ZN6S784C44v110Ev,
  (VTBL_ENTRY)&_ZN6S784C44v111Ev,
  (VTBL_ENTRY)&_ZN6S784C44v112Ev,
  (VTBL_ENTRY)&_ZN6S784C44v113Ev,
  (VTBL_ENTRY)&_ZN6S784C44v114Ev,
  (VTBL_ENTRY)&_ZN6S784C44v115Ev,
  (VTBL_ENTRY)&_ZN6S784C44v116Ev,
  (VTBL_ENTRY)&_ZN6S784C44v117Ev,
  (VTBL_ENTRY)&_ZN6S784C44v118Ev,
  (VTBL_ENTRY)&_ZN6S784C44v119Ev,
  (VTBL_ENTRY)&_ZN6S784C44v120Ev,
  (VTBL_ENTRY)&_ZN6S784C44v121Ev,
  (VTBL_ENTRY)&_ZN6S784C44v122Ev,
  (VTBL_ENTRY)&_ZN6S784C44v123Ev,
  (VTBL_ENTRY)&_ZN6S784C44v124Ev,
  (VTBL_ENTRY)&_ZN6S784C44v125Ev,
  (VTBL_ENTRY)&_ZN6S784C44v126Ev,
  (VTBL_ENTRY)&_ZN6S784C34v127Ev,
  (VTBL_ENTRY)&_ZN6S784C34v128Ev,
  (VTBL_ENTRY)&_ZN6S784C34v129Ev,
  (VTBL_ENTRY)&_ZN6S784C34v130Ev,
  (VTBL_ENTRY)&_ZN6S784C34v131Ev,
  (VTBL_ENTRY)&_ZN6S784C34v132Ev,
  (VTBL_ENTRY)&_ZN6S784C34v133Ev,
  (VTBL_ENTRY)&_ZN6S784C34v134Ev,
  (VTBL_ENTRY)&_ZN6S784C34v135Ev,
  (VTBL_ENTRY)&_ZN6S784C34v136Ev,
  (VTBL_ENTRY)&_ZN6S784C34v137Ev,
  (VTBL_ENTRY)&_ZN6S784C34v138Ev,
  (VTBL_ENTRY)&_ZN6S784C34v139Ev,
  (VTBL_ENTRY)&_ZN6S784C34v140Ev,
  (VTBL_ENTRY)&_ZN6S784C34v141Ev,
  (VTBL_ENTRY)&_ZN6S784C34v142Ev,
  (VTBL_ENTRY)&_ZN6S784C34v143Ev,
  (VTBL_ENTRY)&_ZN6S784C34v144Ev,
  (VTBL_ENTRY)&_ZN6S784C24v145Ev,
};
extern VTBL_ENTRY _ZTI6S784C2[];
extern  VTBL_ENTRY _ZTV6S784C2[];
Class_Descriptor cd_S784C2 = {  "S784C2", // class name
  bases_S784C2, 3,
  &(vtc_S784C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S784C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S784C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S784C1  : S784C2 {
  virtual void  v1(); // _ZN6S784C12v1Ev
  virtual void  v2(); // _ZN6S784C12v2Ev
  virtual void  v3(); // _ZN6S784C12v3Ev
  virtual void  v4(); // _ZN6S784C12v4Ev
  ~S784C1(); // tgen
  S784C1(); // tgen
};
//SIG(1 S784C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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} v1 v2 v3 v4}


void  S784C1 ::v1(){vfunc_called(this, "_ZN6S784C12v1Ev");}
void  S784C1 ::v2(){vfunc_called(this, "_ZN6S784C12v2Ev");}
void  S784C1 ::v3(){vfunc_called(this, "_ZN6S784C12v3Ev");}
void  S784C1 ::v4(){vfunc_called(this, "_ZN6S784C12v4Ev");}
S784C1 ::~S784C1(){ note_dtor("S784C1", this);} // tgen
S784C1 ::S784C1(){ note_ctor("S784C1", this);} // tgen

static void Test_S784C1()
{
  extern Class_Descriptor cd_S784C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S784C1, buf);
    S784C1 *dp, &lv = *(dp=new (buf) S784C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S784C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S784C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S784C4*)(S784C3*)(S784C2*), 0, "S784C1");
    check_base_class_offset(lv, (S784C4*)(S784C3*)(S784C2*), 0, "S784C1");
    check_base_class_offset(lv, (S784C3*)(S784C2*), 0, "S784C1");
    check_base_class_offset(lv, (S784C2*), 0, "S784C1");
    test_class_info(&lv, &cd_S784C1);
    dp->~S784C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS784C1(Test_S784C1, "S784C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S784C1C1Ev();
extern void _ZN6S784C1D1Ev();
Name_Map name_map_S784C1[] = {
  NSPAIR(_ZN6S784C1C1Ev),
  NSPAIR(_ZN6S784C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S784C4;
extern VTBL_ENTRY _ZTI6S784C4[];
extern  VTBL_ENTRY _ZTV6S784C4[];
extern Class_Descriptor cd_S784C3;
extern VTBL_ENTRY _ZTI6S784C3[];
extern  VTBL_ENTRY _ZTV6S784C3[];
extern Class_Descriptor cd_S784C2;
extern VTBL_ENTRY _ZTI6S784C2[];
extern  VTBL_ENTRY _ZTV6S784C2[];
static Base_Class bases_S784C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S784C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S784C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S784C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S784C1[];
extern void _ZN6S784C1D1Ev();
extern void _ZN6S784C1D0Ev();
extern void _ZN6S784C42v5Ev();
extern void _ZN6S784C42v6Ev();
extern void _ZN6S784C42v7Ev();
extern void _ZN6S784C42v8Ev();
extern void _ZN6S784C42v9Ev();
extern void _ZN6S784C43v10Ev();
extern void _ZN6S784C43v11Ev();
extern void _ZN6S784C43v12Ev();
extern void _ZN6S784C43v13Ev();
extern void _ZN6S784C43v14Ev();
extern void _ZN6S784C43v15Ev();
extern void _ZN6S784C43v16Ev();
extern void _ZN6S784C43v17Ev();
extern void _ZN6S784C43v18Ev();
extern void _ZN6S784C43v19Ev();
extern void _ZN6S784C43v20Ev();
extern void _ZN6S784C43v21Ev();
extern void _ZN6S784C43v22Ev();
extern void _ZN6S784C43v23Ev();
extern void _ZN6S784C43v24Ev();
extern void _ZN6S784C43v25Ev();
extern void _ZN6S784C43v26Ev();
extern void _ZN6S784C43v27Ev();
extern void _ZN6S784C43v28Ev();
extern void _ZN6S784C43v29Ev();
extern void _ZN6S784C43v30Ev();
extern void _ZN6S784C43v31Ev();
extern void _ZN6S784C43v32Ev();
extern void _ZN6S784C43v33Ev();
extern void _ZN6S784C43v34Ev();
extern void _ZN6S784C43v35Ev();
extern void _ZN6S784C43v36Ev();
extern void _ZN6S784C43v37Ev();
extern void _ZN6S784C43v38Ev();
extern void _ZN6S784C43v39Ev();
extern void _ZN6S784C43v40Ev();
extern void _ZN6S784C43v41Ev();
extern void _ZN6S784C43v42Ev();
extern void _ZN6S784C43v43Ev();
extern void _ZN6S784C43v44Ev();
extern void _ZN6S784C43v45Ev();
extern void _ZN6S784C43v46Ev();
extern void _ZN6S784C43v47Ev();
extern void _ZN6S784C43v48Ev();
extern void _ZN6S784C43v49Ev();
extern void _ZN6S784C43v50Ev();
extern void _ZN6S784C43v51Ev();
extern void _ZN6S784C43v52Ev();
extern void _ZN6S784C43v53Ev();
extern void _ZN6S784C43v54Ev();
extern void _ZN6S784C43v55Ev();
extern void _ZN6S784C43v56Ev();
extern void _ZN6S784C43v57Ev();
extern void _ZN6S784C43v58Ev();
extern void _ZN6S784C43v59Ev();
extern void _ZN6S784C43v60Ev();
extern void _ZN6S784C43v61Ev();
extern void _ZN6S784C43v62Ev();
extern void _ZN6S784C43v63Ev();
extern void _ZN6S784C43v64Ev();
extern void _ZN6S784C43v65Ev();
extern void _ZN6S784C43v66Ev();
extern void _ZN6S784C43v67Ev();
extern void _ZN6S784C43v68Ev();
extern void _ZN6S784C43v69Ev();
extern void _ZN6S784C43v70Ev();
extern void _ZN6S784C43v71Ev();
extern void _ZN6S784C43v72Ev();
extern void _ZN6S784C43v73Ev();
extern void _ZN6S784C43v74Ev();
extern void _ZN6S784C43v75Ev();
extern void _ZN6S784C43v76Ev();
extern void _ZN6S784C43v77Ev();
extern void _ZN6S784C43v78Ev();
extern void _ZN6S784C43v79Ev();
extern void _ZN6S784C43v80Ev();
extern void _ZN6S784C43v81Ev();
extern void _ZN6S784C43v82Ev();
extern void _ZN6S784C43v83Ev();
extern void _ZN6S784C43v84Ev();
extern void _ZN6S784C43v85Ev();
extern void _ZN6S784C43v86Ev();
extern void _ZN6S784C43v87Ev();
extern void _ZN6S784C43v88Ev();
extern void _ZN6S784C43v89Ev();
extern void _ZN6S784C43v90Ev();
extern void _ZN6S784C43v91Ev();
extern void _ZN6S784C43v92Ev();
extern void _ZN6S784C43v93Ev();
extern void _ZN6S784C43v94Ev();
extern void _ZN6S784C43v95Ev();
extern void _ZN6S784C43v96Ev();
extern void _ZN6S784C43v97Ev();
extern void _ZN6S784C43v98Ev();
extern void _ZN6S784C43v99Ev();
extern void _ZN6S784C44v100Ev();
extern void _ZN6S784C44v101Ev();
extern void _ZN6S784C44v102Ev();
extern void _ZN6S784C44v103Ev();
extern void _ZN6S784C44v104Ev();
extern void _ZN6S784C44v105Ev();
extern void _ZN6S784C44v106Ev();
extern void _ZN6S784C44v107Ev();
extern void _ZN6S784C44v108Ev();
extern void _ZN6S784C44v109Ev();
extern void _ZN6S784C44v110Ev();
extern void _ZN6S784C44v111Ev();
extern void _ZN6S784C44v112Ev();
extern void _ZN6S784C44v113Ev();
extern void _ZN6S784C44v114Ev();
extern void _ZN6S784C44v115Ev();
extern void _ZN6S784C44v116Ev();
extern void _ZN6S784C44v117Ev();
extern void _ZN6S784C44v118Ev();
extern void _ZN6S784C44v119Ev();
extern void _ZN6S784C44v120Ev();
extern void _ZN6S784C44v121Ev();
extern void _ZN6S784C44v122Ev();
extern void _ZN6S784C44v123Ev();
extern void _ZN6S784C44v124Ev();
extern void _ZN6S784C44v125Ev();
extern void _ZN6S784C44v126Ev();
extern void _ZN6S784C34v127Ev();
extern void _ZN6S784C34v128Ev();
extern void _ZN6S784C34v129Ev();
extern void _ZN6S784C34v130Ev();
extern void _ZN6S784C34v131Ev();
extern void _ZN6S784C34v132Ev();
extern void _ZN6S784C34v133Ev();
extern void _ZN6S784C34v134Ev();
extern void _ZN6S784C34v135Ev();
extern void _ZN6S784C34v136Ev();
extern void _ZN6S784C34v137Ev();
extern void _ZN6S784C34v138Ev();
extern void _ZN6S784C34v139Ev();
extern void _ZN6S784C34v140Ev();
extern void _ZN6S784C34v141Ev();
extern void _ZN6S784C34v142Ev();
extern void _ZN6S784C34v143Ev();
extern void _ZN6S784C34v144Ev();
extern void _ZN6S784C24v145Ev();
extern void _ZN6S784C12v1Ev();
extern void _ZN6S784C12v2Ev();
extern void _ZN6S784C12v3Ev();
extern void _ZN6S784C12v4Ev();
static  VTBL_ENTRY vtc_S784C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S784C1[0]),
  (VTBL_ENTRY)&_ZN6S784C1D1Ev,
  (VTBL_ENTRY)&_ZN6S784C1D0Ev,
  (VTBL_ENTRY)&_ZN6S784C42v5Ev,
  (VTBL_ENTRY)&_ZN6S784C42v6Ev,
  (VTBL_ENTRY)&_ZN6S784C42v7Ev,
  (VTBL_ENTRY)&_ZN6S784C42v8Ev,
  (VTBL_ENTRY)&_ZN6S784C42v9Ev,
  (VTBL_ENTRY)&_ZN6S784C43v10Ev,
  (VTBL_ENTRY)&_ZN6S784C43v11Ev,
  (VTBL_ENTRY)&_ZN6S784C43v12Ev,
  (VTBL_ENTRY)&_ZN6S784C43v13Ev,
  (VTBL_ENTRY)&_ZN6S784C43v14Ev,
  (VTBL_ENTRY)&_ZN6S784C43v15Ev,
  (VTBL_ENTRY)&_ZN6S784C43v16Ev,
  (VTBL_ENTRY)&_ZN6S784C43v17Ev,
  (VTBL_ENTRY)&_ZN6S784C43v18Ev,
  (VTBL_ENTRY)&_ZN6S784C43v19Ev,
  (VTBL_ENTRY)&_ZN6S784C43v20Ev,
  (VTBL_ENTRY)&_ZN6S784C43v21Ev,
  (VTBL_ENTRY)&_ZN6S784C43v22Ev,
  (VTBL_ENTRY)&_ZN6S784C43v23Ev,
  (VTBL_ENTRY)&_ZN6S784C43v24Ev,
  (VTBL_ENTRY)&_ZN6S784C43v25Ev,
  (VTBL_ENTRY)&_ZN6S784C43v26Ev,
  (VTBL_ENTRY)&_ZN6S784C43v27Ev,
  (VTBL_ENTRY)&_ZN6S784C43v28Ev,
  (VTBL_ENTRY)&_ZN6S784C43v29Ev,
  (VTBL_ENTRY)&_ZN6S784C43v30Ev,
  (VTBL_ENTRY)&_ZN6S784C43v31Ev,
  (VTBL_ENTRY)&_ZN6S784C43v32Ev,
  (VTBL_ENTRY)&_ZN6S784C43v33Ev,
  (VTBL_ENTRY)&_ZN6S784C43v34Ev,
  (VTBL_ENTRY)&_ZN6S784C43v35Ev,
  (VTBL_ENTRY)&_ZN6S784C43v36Ev,
  (VTBL_ENTRY)&_ZN6S784C43v37Ev,
  (VTBL_ENTRY)&_ZN6S784C43v38Ev,
  (VTBL_ENTRY)&_ZN6S784C43v39Ev,
  (VTBL_ENTRY)&_ZN6S784C43v40Ev,
  (VTBL_ENTRY)&_ZN6S784C43v41Ev,
  (VTBL_ENTRY)&_ZN6S784C43v42Ev,
  (VTBL_ENTRY)&_ZN6S784C43v43Ev,
  (VTBL_ENTRY)&_ZN6S784C43v44Ev,
  (VTBL_ENTRY)&_ZN6S784C43v45Ev,
  (VTBL_ENTRY)&_ZN6S784C43v46Ev,
  (VTBL_ENTRY)&_ZN6S784C43v47Ev,
  (VTBL_ENTRY)&_ZN6S784C43v48Ev,
  (VTBL_ENTRY)&_ZN6S784C43v49Ev,
  (VTBL_ENTRY)&_ZN6S784C43v50Ev,
  (VTBL_ENTRY)&_ZN6S784C43v51Ev,
  (VTBL_ENTRY)&_ZN6S784C43v52Ev,
  (VTBL_ENTRY)&_ZN6S784C43v53Ev,
  (VTBL_ENTRY)&_ZN6S784C43v54Ev,
  (VTBL_ENTRY)&_ZN6S784C43v55Ev,
  (VTBL_ENTRY)&_ZN6S784C43v56Ev,
  (VTBL_ENTRY)&_ZN6S784C43v57Ev,
  (VTBL_ENTRY)&_ZN6S784C43v58Ev,
  (VTBL_ENTRY)&_ZN6S784C43v59Ev,
  (VTBL_ENTRY)&_ZN6S784C43v60Ev,
  (VTBL_ENTRY)&_ZN6S784C43v61Ev,
  (VTBL_ENTRY)&_ZN6S784C43v62Ev,
  (VTBL_ENTRY)&_ZN6S784C43v63Ev,
  (VTBL_ENTRY)&_ZN6S784C43v64Ev,
  (VTBL_ENTRY)&_ZN6S784C43v65Ev,
  (VTBL_ENTRY)&_ZN6S784C43v66Ev,
  (VTBL_ENTRY)&_ZN6S784C43v67Ev,
  (VTBL_ENTRY)&_ZN6S784C43v68Ev,
  (VTBL_ENTRY)&_ZN6S784C43v69Ev,
  (VTBL_ENTRY)&_ZN6S784C43v70Ev,
  (VTBL_ENTRY)&_ZN6S784C43v71Ev,
  (VTBL_ENTRY)&_ZN6S784C43v72Ev,
  (VTBL_ENTRY)&_ZN6S784C43v73Ev,
  (VTBL_ENTRY)&_ZN6S784C43v74Ev,
  (VTBL_ENTRY)&_ZN6S784C43v75Ev,
  (VTBL_ENTRY)&_ZN6S784C43v76Ev,
  (VTBL_ENTRY)&_ZN6S784C43v77Ev,
  (VTBL_ENTRY)&_ZN6S784C43v78Ev,
  (VTBL_ENTRY)&_ZN6S784C43v79Ev,
  (VTBL_ENTRY)&_ZN6S784C43v80Ev,
  (VTBL_ENTRY)&_ZN6S784C43v81Ev,
  (VTBL_ENTRY)&_ZN6S784C43v82Ev,
  (VTBL_ENTRY)&_ZN6S784C43v83Ev,
  (VTBL_ENTRY)&_ZN6S784C43v84Ev,
  (VTBL_ENTRY)&_ZN6S784C43v85Ev,
  (VTBL_ENTRY)&_ZN6S784C43v86Ev,
  (VTBL_ENTRY)&_ZN6S784C43v87Ev,
  (VTBL_ENTRY)&_ZN6S784C43v88Ev,
  (VTBL_ENTRY)&_ZN6S784C43v89Ev,
  (VTBL_ENTRY)&_ZN6S784C43v90Ev,
  (VTBL_ENTRY)&_ZN6S784C43v91Ev,
  (VTBL_ENTRY)&_ZN6S784C43v92Ev,
  (VTBL_ENTRY)&_ZN6S784C43v93Ev,
  (VTBL_ENTRY)&_ZN6S784C43v94Ev,
  (VTBL_ENTRY)&_ZN6S784C43v95Ev,
  (VTBL_ENTRY)&_ZN6S784C43v96Ev,
  (VTBL_ENTRY)&_ZN6S784C43v97Ev,
  (VTBL_ENTRY)&_ZN6S784C43v98Ev,
  (VTBL_ENTRY)&_ZN6S784C43v99Ev,
  (VTBL_ENTRY)&_ZN6S784C44v100Ev,
  (VTBL_ENTRY)&_ZN6S784C44v101Ev,
  (VTBL_ENTRY)&_ZN6S784C44v102Ev,
  (VTBL_ENTRY)&_ZN6S784C44v103Ev,
  (VTBL_ENTRY)&_ZN6S784C44v104Ev,
  (VTBL_ENTRY)&_ZN6S784C44v105Ev,
  (VTBL_ENTRY)&_ZN6S784C44v106Ev,
  (VTBL_ENTRY)&_ZN6S784C44v107Ev,
  (VTBL_ENTRY)&_ZN6S784C44v108Ev,
  (VTBL_ENTRY)&_ZN6S784C44v109Ev,
  (VTBL_ENTRY)&_ZN6S784C44v110Ev,
  (VTBL_ENTRY)&_ZN6S784C44v111Ev,
  (VTBL_ENTRY)&_ZN6S784C44v112Ev,
  (VTBL_ENTRY)&_ZN6S784C44v113Ev,
  (VTBL_ENTRY)&_ZN6S784C44v114Ev,
  (VTBL_ENTRY)&_ZN6S784C44v115Ev,
  (VTBL_ENTRY)&_ZN6S784C44v116Ev,
  (VTBL_ENTRY)&_ZN6S784C44v117Ev,
  (VTBL_ENTRY)&_ZN6S784C44v118Ev,
  (VTBL_ENTRY)&_ZN6S784C44v119Ev,
  (VTBL_ENTRY)&_ZN6S784C44v120Ev,
  (VTBL_ENTRY)&_ZN6S784C44v121Ev,
  (VTBL_ENTRY)&_ZN6S784C44v122Ev,
  (VTBL_ENTRY)&_ZN6S784C44v123Ev,
  (VTBL_ENTRY)&_ZN6S784C44v124Ev,
  (VTBL_ENTRY)&_ZN6S784C44v125Ev,
  (VTBL_ENTRY)&_ZN6S784C44v126Ev,
  (VTBL_ENTRY)&_ZN6S784C34v127Ev,
  (VTBL_ENTRY)&_ZN6S784C34v128Ev,
  (VTBL_ENTRY)&_ZN6S784C34v129Ev,
  (VTBL_ENTRY)&_ZN6S784C34v130Ev,
  (VTBL_ENTRY)&_ZN6S784C34v131Ev,
  (VTBL_ENTRY)&_ZN6S784C34v132Ev,
  (VTBL_ENTRY)&_ZN6S784C34v133Ev,
  (VTBL_ENTRY)&_ZN6S784C34v134Ev,
  (VTBL_ENTRY)&_ZN6S784C34v135Ev,
  (VTBL_ENTRY)&_ZN6S784C34v136Ev,
  (VTBL_ENTRY)&_ZN6S784C34v137Ev,
  (VTBL_ENTRY)&_ZN6S784C34v138Ev,
  (VTBL_ENTRY)&_ZN6S784C34v139Ev,
  (VTBL_ENTRY)&_ZN6S784C34v140Ev,
  (VTBL_ENTRY)&_ZN6S784C34v141Ev,
  (VTBL_ENTRY)&_ZN6S784C34v142Ev,
  (VTBL_ENTRY)&_ZN6S784C34v143Ev,
  (VTBL_ENTRY)&_ZN6S784C34v144Ev,
  (VTBL_ENTRY)&_ZN6S784C24v145Ev,
  (VTBL_ENTRY)&_ZN6S784C12v1Ev,
  (VTBL_ENTRY)&_ZN6S784C12v2Ev,
  (VTBL_ENTRY)&_ZN6S784C12v3Ev,
  (VTBL_ENTRY)&_ZN6S784C12v4Ev,
};
extern VTBL_ENTRY _ZTI6S784C1[];
extern  VTBL_ENTRY _ZTV6S784C1[];
Class_Descriptor cd_S784C1 = {  "S784C1", // class name
  bases_S784C1, 4,
  &(vtc_S784C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S784C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S784C1),149, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1821C3  : S785C5_nt {
  virtual void  v6(); // _ZN7S1821C32v6Ev
  virtual void  v7(); // _ZN7S1821C32v7Ev
  virtual void  v8(); // _ZN7S1821C32v8Ev
  virtual void  v9(); // _ZN7S1821C32v9Ev
  virtual void  v10(); // _ZN7S1821C33v10Ev
  virtual void  v11(); // _ZN7S1821C33v11Ev
  virtual void  v12(); // _ZN7S1821C33v12Ev
  virtual void  v13(); // _ZN7S1821C33v13Ev
  virtual void  v14(); // _ZN7S1821C33v14Ev
  virtual void  v15(); // _ZN7S1821C33v15Ev
  virtual void  v16(); // _ZN7S1821C33v16Ev
  virtual void  v17(); // _ZN7S1821C33v17Ev
  virtual void  v18(); // _ZN7S1821C33v18Ev
  virtual void  v19(); // _ZN7S1821C33v19Ev
  virtual void  v20(); // _ZN7S1821C33v20Ev
  virtual void  v21(); // _ZN7S1821C33v21Ev
  virtual void  v22(); // _ZN7S1821C33v22Ev
  virtual void  v23(); // _ZN7S1821C33v23Ev
  virtual void  v24(); // _ZN7S1821C33v24Ev
  virtual void  v25(); // _ZN7S1821C33v25Ev
  virtual void  v26(); // _ZN7S1821C33v26Ev
  virtual void  v27(); // _ZN7S1821C33v27Ev
  virtual void  v28(); // _ZN7S1821C33v28Ev
  virtual void  v29(); // _ZN7S1821C33v29Ev
  virtual void  v30(); // _ZN7S1821C33v30Ev
  virtual void  v31(); // _ZN7S1821C33v31Ev
  virtual void  v32(); // _ZN7S1821C33v32Ev
  virtual void  v33(); // _ZN7S1821C33v33Ev
  virtual void  v34(); // _ZN7S1821C33v34Ev
  virtual void  v35(); // _ZN7S1821C33v35Ev
  virtual void  v36(); // _ZN7S1821C33v36Ev
  virtual void  v37(); // _ZN7S1821C33v37Ev
  virtual void  v38(); // _ZN7S1821C33v38Ev
  virtual void  v39(); // _ZN7S1821C33v39Ev
  virtual void  v40(); // _ZN7S1821C33v40Ev
  virtual void  v41(); // _ZN7S1821C33v41Ev
  virtual void  v42(); // _ZN7S1821C33v42Ev
  virtual void  v43(); // _ZN7S1821C33v43Ev
  virtual void  v44(); // _ZN7S1821C33v44Ev
  virtual void  v45(); // _ZN7S1821C33v45Ev
  virtual void  v46(); // _ZN7S1821C33v46Ev
  virtual void  v47(); // _ZN7S1821C33v47Ev
  virtual void  v48(); // _ZN7S1821C33v48Ev
  virtual void  v49(); // _ZN7S1821C33v49Ev
  virtual void  v50(); // _ZN7S1821C33v50Ev
  virtual void  v51(); // _ZN7S1821C33v51Ev
  virtual void  v52(); // _ZN7S1821C33v52Ev
  virtual void  v53(); // _ZN7S1821C33v53Ev
  virtual void  v54(); // _ZN7S1821C33v54Ev
  virtual void  v55(); // _ZN7S1821C33v55Ev
  virtual void  v56(); // _ZN7S1821C33v56Ev
  virtual void  v57(); // _ZN7S1821C33v57Ev
  virtual void  v58(); // _ZN7S1821C33v58Ev
  virtual void  v59(); // _ZN7S1821C33v59Ev
  virtual void  v60(); // _ZN7S1821C33v60Ev
  virtual void  v61(); // _ZN7S1821C33v61Ev
  virtual void  v62(); // _ZN7S1821C33v62Ev
  virtual void  v63(); // _ZN7S1821C33v63Ev
  virtual void  v64(); // _ZN7S1821C33v64Ev
  virtual void  v65(); // _ZN7S1821C33v65Ev
  virtual void  v66(); // _ZN7S1821C33v66Ev
  virtual void  v67(); // _ZN7S1821C33v67Ev
  virtual void  v68(); // _ZN7S1821C33v68Ev
  virtual void  v69(); // _ZN7S1821C33v69Ev
  virtual void  v70(); // _ZN7S1821C33v70Ev
  virtual void  v71(); // _ZN7S1821C33v71Ev
  virtual void  v72(); // _ZN7S1821C33v72Ev
  virtual void  v73(); // _ZN7S1821C33v73Ev
  virtual void  v74(); // _ZN7S1821C33v74Ev
  virtual void  v75(); // _ZN7S1821C33v75Ev
  virtual void  v76(); // _ZN7S1821C33v76Ev
  virtual void  v77(); // _ZN7S1821C33v77Ev
  virtual void  v78(); // _ZN7S1821C33v78Ev
  virtual void  v79(); // _ZN7S1821C33v79Ev
  virtual void  v80(); // _ZN7S1821C33v80Ev
  virtual void  v81(); // _ZN7S1821C33v81Ev
  virtual void  v82(); // _ZN7S1821C33v82Ev
  virtual void  v83(); // _ZN7S1821C33v83Ev
  virtual void  v84(); // _ZN7S1821C33v84Ev
  virtual void  v85(); // _ZN7S1821C33v85Ev
  virtual void  v86(); // _ZN7S1821C33v86Ev
  virtual void  v87(); // _ZN7S1821C33v87Ev
  virtual void  v88(); // _ZN7S1821C33v88Ev
  virtual void  v89(); // _ZN7S1821C33v89Ev
  virtual void  v90(); // _ZN7S1821C33v90Ev
  virtual void  v91(); // _ZN7S1821C33v91Ev
  virtual void  v92(); // _ZN7S1821C33v92Ev
  virtual void  v93(); // _ZN7S1821C33v93Ev
  virtual void  v94(); // _ZN7S1821C33v94Ev
  virtual void  v95(); // _ZN7S1821C33v95Ev
  virtual void  v96(); // _ZN7S1821C33v96Ev
  virtual void  v97(); // _ZN7S1821C33v97Ev
  virtual void  v98(); // _ZN7S1821C33v98Ev
  virtual void  v99(); // _ZN7S1821C33v99Ev
  virtual void  v100(); // _ZN7S1821C34v100Ev
  virtual void  v101(); // _ZN7S1821C34v101Ev
  virtual void  v102(); // _ZN7S1821C34v102Ev
  virtual void  v103(); // _ZN7S1821C34v103Ev
  virtual void  v104(); // _ZN7S1821C34v104Ev
  virtual void  v105(); // _ZN7S1821C34v105Ev
  virtual void  v106(); // _ZN7S1821C34v106Ev
  virtual void  v107(); // _ZN7S1821C34v107Ev
  virtual void  v108(); // _ZN7S1821C34v108Ev
  virtual void  v109(); // _ZN7S1821C34v109Ev
  virtual void  v110(); // _ZN7S1821C34v110Ev
  virtual void  v111(); // _ZN7S1821C34v111Ev
  virtual void  v112(); // _ZN7S1821C34v112Ev
  virtual void  v113(); // _ZN7S1821C34v113Ev
  virtual void  v114(); // _ZN7S1821C34v114Ev
  virtual void  v115(); // _ZN7S1821C34v115Ev
  virtual void  v116(); // _ZN7S1821C34v116Ev
  virtual void  v117(); // _ZN7S1821C34v117Ev
  virtual void  v118(); // _ZN7S1821C34v118Ev
  virtual void  v119(); // _ZN7S1821C34v119Ev
  virtual void  v120(); // _ZN7S1821C34v120Ev
  virtual void  v121(); // _ZN7S1821C34v121Ev
  virtual void  v122(); // _ZN7S1821C34v122Ev
  virtual void  v123(); // _ZN7S1821C34v123Ev
  virtual void  v124(); // _ZN7S1821C34v124Ev
  virtual void  v125(); // _ZN7S1821C34v125Ev
  virtual void  v126(); // _ZN7S1821C34v126Ev
  virtual void  v127(); // _ZN7S1821C34v127Ev
  ~S1821C3(); // tgen
  S1821C3(); // tgen
};
//SIG(-1 S1821C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1821C3 ::v6(){vfunc_called(this, "_ZN7S1821C32v6Ev");}
void  S1821C3 ::v7(){vfunc_called(this, "_ZN7S1821C32v7Ev");}
void  S1821C3 ::v8(){vfunc_called(this, "_ZN7S1821C32v8Ev");}
void  S1821C3 ::v9(){vfunc_called(this, "_ZN7S1821C32v9Ev");}
void  S1821C3 ::v10(){vfunc_called(this, "_ZN7S1821C33v10Ev");}
void  S1821C3 ::v11(){vfunc_called(this, "_ZN7S1821C33v11Ev");}
void  S1821C3 ::v12(){vfunc_called(this, "_ZN7S1821C33v12Ev");}
void  S1821C3 ::v13(){vfunc_called(this, "_ZN7S1821C33v13Ev");}
void  S1821C3 ::v14(){vfunc_called(this, "_ZN7S1821C33v14Ev");}
void  S1821C3 ::v15(){vfunc_called(this, "_ZN7S1821C33v15Ev");}
void  S1821C3 ::v16(){vfunc_called(this, "_ZN7S1821C33v16Ev");}
void  S1821C3 ::v17(){vfunc_called(this, "_ZN7S1821C33v17Ev");}
void  S1821C3 ::v18(){vfunc_called(this, "_ZN7S1821C33v18Ev");}
void  S1821C3 ::v19(){vfunc_called(this, "_ZN7S1821C33v19Ev");}
void  S1821C3 ::v20(){vfunc_called(this, "_ZN7S1821C33v20Ev");}
void  S1821C3 ::v21(){vfunc_called(this, "_ZN7S1821C33v21Ev");}
void  S1821C3 ::v22(){vfunc_called(this, "_ZN7S1821C33v22Ev");}
void  S1821C3 ::v23(){vfunc_called(this, "_ZN7S1821C33v23Ev");}
void  S1821C3 ::v24(){vfunc_called(this, "_ZN7S1821C33v24Ev");}
void  S1821C3 ::v25(){vfunc_called(this, "_ZN7S1821C33v25Ev");}
void  S1821C3 ::v26(){vfunc_called(this, "_ZN7S1821C33v26Ev");}
void  S1821C3 ::v27(){vfunc_called(this, "_ZN7S1821C33v27Ev");}
void  S1821C3 ::v28(){vfunc_called(this, "_ZN7S1821C33v28Ev");}
void  S1821C3 ::v29(){vfunc_called(this, "_ZN7S1821C33v29Ev");}
void  S1821C3 ::v30(){vfunc_called(this, "_ZN7S1821C33v30Ev");}
void  S1821C3 ::v31(){vfunc_called(this, "_ZN7S1821C33v31Ev");}
void  S1821C3 ::v32(){vfunc_called(this, "_ZN7S1821C33v32Ev");}
void  S1821C3 ::v33(){vfunc_called(this, "_ZN7S1821C33v33Ev");}
void  S1821C3 ::v34(){vfunc_called(this, "_ZN7S1821C33v34Ev");}
void  S1821C3 ::v35(){vfunc_called(this, "_ZN7S1821C33v35Ev");}
void  S1821C3 ::v36(){vfunc_called(this, "_ZN7S1821C33v36Ev");}
void  S1821C3 ::v37(){vfunc_called(this, "_ZN7S1821C33v37Ev");}
void  S1821C3 ::v38(){vfunc_called(this, "_ZN7S1821C33v38Ev");}
void  S1821C3 ::v39(){vfunc_called(this, "_ZN7S1821C33v39Ev");}
void  S1821C3 ::v40(){vfunc_called(this, "_ZN7S1821C33v40Ev");}
void  S1821C3 ::v41(){vfunc_called(this, "_ZN7S1821C33v41Ev");}
void  S1821C3 ::v42(){vfunc_called(this, "_ZN7S1821C33v42Ev");}
void  S1821C3 ::v43(){vfunc_called(this, "_ZN7S1821C33v43Ev");}
void  S1821C3 ::v44(){vfunc_called(this, "_ZN7S1821C33v44Ev");}
void  S1821C3 ::v45(){vfunc_called(this, "_ZN7S1821C33v45Ev");}
void  S1821C3 ::v46(){vfunc_called(this, "_ZN7S1821C33v46Ev");}
void  S1821C3 ::v47(){vfunc_called(this, "_ZN7S1821C33v47Ev");}
void  S1821C3 ::v48(){vfunc_called(this, "_ZN7S1821C33v48Ev");}
void  S1821C3 ::v49(){vfunc_called(this, "_ZN7S1821C33v49Ev");}
void  S1821C3 ::v50(){vfunc_called(this, "_ZN7S1821C33v50Ev");}
void  S1821C3 ::v51(){vfunc_called(this, "_ZN7S1821C33v51Ev");}
void  S1821C3 ::v52(){vfunc_called(this, "_ZN7S1821C33v52Ev");}
void  S1821C3 ::v53(){vfunc_called(this, "_ZN7S1821C33v53Ev");}
void  S1821C3 ::v54(){vfunc_called(this, "_ZN7S1821C33v54Ev");}
void  S1821C3 ::v55(){vfunc_called(this, "_ZN7S1821C33v55Ev");}
void  S1821C3 ::v56(){vfunc_called(this, "_ZN7S1821C33v56Ev");}
void  S1821C3 ::v57(){vfunc_called(this, "_ZN7S1821C33v57Ev");}
void  S1821C3 ::v58(){vfunc_called(this, "_ZN7S1821C33v58Ev");}
void  S1821C3 ::v59(){vfunc_called(this, "_ZN7S1821C33v59Ev");}
void  S1821C3 ::v60(){vfunc_called(this, "_ZN7S1821C33v60Ev");}
void  S1821C3 ::v61(){vfunc_called(this, "_ZN7S1821C33v61Ev");}
void  S1821C3 ::v62(){vfunc_called(this, "_ZN7S1821C33v62Ev");}
void  S1821C3 ::v63(){vfunc_called(this, "_ZN7S1821C33v63Ev");}
void  S1821C3 ::v64(){vfunc_called(this, "_ZN7S1821C33v64Ev");}
void  S1821C3 ::v65(){vfunc_called(this, "_ZN7S1821C33v65Ev");}
void  S1821C3 ::v66(){vfunc_called(this, "_ZN7S1821C33v66Ev");}
void  S1821C3 ::v67(){vfunc_called(this, "_ZN7S1821C33v67Ev");}
void  S1821C3 ::v68(){vfunc_called(this, "_ZN7S1821C33v68Ev");}
void  S1821C3 ::v69(){vfunc_called(this, "_ZN7S1821C33v69Ev");}
void  S1821C3 ::v70(){vfunc_called(this, "_ZN7S1821C33v70Ev");}
void  S1821C3 ::v71(){vfunc_called(this, "_ZN7S1821C33v71Ev");}
void  S1821C3 ::v72(){vfunc_called(this, "_ZN7S1821C33v72Ev");}
void  S1821C3 ::v73(){vfunc_called(this, "_ZN7S1821C33v73Ev");}
void  S1821C3 ::v74(){vfunc_called(this, "_ZN7S1821C33v74Ev");}
void  S1821C3 ::v75(){vfunc_called(this, "_ZN7S1821C33v75Ev");}
void  S1821C3 ::v76(){vfunc_called(this, "_ZN7S1821C33v76Ev");}
void  S1821C3 ::v77(){vfunc_called(this, "_ZN7S1821C33v77Ev");}
void  S1821C3 ::v78(){vfunc_called(this, "_ZN7S1821C33v78Ev");}
void  S1821C3 ::v79(){vfunc_called(this, "_ZN7S1821C33v79Ev");}
void  S1821C3 ::v80(){vfunc_called(this, "_ZN7S1821C33v80Ev");}
void  S1821C3 ::v81(){vfunc_called(this, "_ZN7S1821C33v81Ev");}
void  S1821C3 ::v82(){vfunc_called(this, "_ZN7S1821C33v82Ev");}
void  S1821C3 ::v83(){vfunc_called(this, "_ZN7S1821C33v83Ev");}
void  S1821C3 ::v84(){vfunc_called(this, "_ZN7S1821C33v84Ev");}
void  S1821C3 ::v85(){vfunc_called(this, "_ZN7S1821C33v85Ev");}
void  S1821C3 ::v86(){vfunc_called(this, "_ZN7S1821C33v86Ev");}
void  S1821C3 ::v87(){vfunc_called(this, "_ZN7S1821C33v87Ev");}
void  S1821C3 ::v88(){vfunc_called(this, "_ZN7S1821C33v88Ev");}
void  S1821C3 ::v89(){vfunc_called(this, "_ZN7S1821C33v89Ev");}
void  S1821C3 ::v90(){vfunc_called(this, "_ZN7S1821C33v90Ev");}
void  S1821C3 ::v91(){vfunc_called(this, "_ZN7S1821C33v91Ev");}
void  S1821C3 ::v92(){vfunc_called(this, "_ZN7S1821C33v92Ev");}
void  S1821C3 ::v93(){vfunc_called(this, "_ZN7S1821C33v93Ev");}
void  S1821C3 ::v94(){vfunc_called(this, "_ZN7S1821C33v94Ev");}
void  S1821C3 ::v95(){vfunc_called(this, "_ZN7S1821C33v95Ev");}
void  S1821C3 ::v96(){vfunc_called(this, "_ZN7S1821C33v96Ev");}
void  S1821C3 ::v97(){vfunc_called(this, "_ZN7S1821C33v97Ev");}
void  S1821C3 ::v98(){vfunc_called(this, "_ZN7S1821C33v98Ev");}
void  S1821C3 ::v99(){vfunc_called(this, "_ZN7S1821C33v99Ev");}
void  S1821C3 ::v100(){vfunc_called(this, "_ZN7S1821C34v100Ev");}
void  S1821C3 ::v101(){vfunc_called(this, "_ZN7S1821C34v101Ev");}
void  S1821C3 ::v102(){vfunc_called(this, "_ZN7S1821C34v102Ev");}
void  S1821C3 ::v103(){vfunc_called(this, "_ZN7S1821C34v103Ev");}
void  S1821C3 ::v104(){vfunc_called(this, "_ZN7S1821C34v104Ev");}
void  S1821C3 ::v105(){vfunc_called(this, "_ZN7S1821C34v105Ev");}
void  S1821C3 ::v106(){vfunc_called(this, "_ZN7S1821C34v106Ev");}
void  S1821C3 ::v107(){vfunc_called(this, "_ZN7S1821C34v107Ev");}
void  S1821C3 ::v108(){vfunc_called(this, "_ZN7S1821C34v108Ev");}
void  S1821C3 ::v109(){vfunc_called(this, "_ZN7S1821C34v109Ev");}
void  S1821C3 ::v110(){vfunc_called(this, "_ZN7S1821C34v110Ev");}
void  S1821C3 ::v111(){vfunc_called(this, "_ZN7S1821C34v111Ev");}
void  S1821C3 ::v112(){vfunc_called(this, "_ZN7S1821C34v112Ev");}
void  S1821C3 ::v113(){vfunc_called(this, "_ZN7S1821C34v113Ev");}
void  S1821C3 ::v114(){vfunc_called(this, "_ZN7S1821C34v114Ev");}
void  S1821C3 ::v115(){vfunc_called(this, "_ZN7S1821C34v115Ev");}
void  S1821C3 ::v116(){vfunc_called(this, "_ZN7S1821C34v116Ev");}
void  S1821C3 ::v117(){vfunc_called(this, "_ZN7S1821C34v117Ev");}
void  S1821C3 ::v118(){vfunc_called(this, "_ZN7S1821C34v118Ev");}
void  S1821C3 ::v119(){vfunc_called(this, "_ZN7S1821C34v119Ev");}
void  S1821C3 ::v120(){vfunc_called(this, "_ZN7S1821C34v120Ev");}
void  S1821C3 ::v121(){vfunc_called(this, "_ZN7S1821C34v121Ev");}
void  S1821C3 ::v122(){vfunc_called(this, "_ZN7S1821C34v122Ev");}
void  S1821C3 ::v123(){vfunc_called(this, "_ZN7S1821C34v123Ev");}
void  S1821C3 ::v124(){vfunc_called(this, "_ZN7S1821C34v124Ev");}
void  S1821C3 ::v125(){vfunc_called(this, "_ZN7S1821C34v125Ev");}
void  S1821C3 ::v126(){vfunc_called(this, "_ZN7S1821C34v126Ev");}
void  S1821C3 ::v127(){vfunc_called(this, "_ZN7S1821C34v127Ev");}
S1821C3 ::~S1821C3(){ note_dtor("S1821C3", this);} // tgen
S1821C3 ::S1821C3(){ note_ctor("S1821C3", this);} // tgen

static void Test_S1821C3()
{
  extern Class_Descriptor cd_S1821C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1821C3, buf);
    S1821C3 *dp, &lv = *(dp=new (buf) S1821C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1821C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1821C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1821C3");
    test_class_info(&lv, &cd_S1821C3);
    dp->~S1821C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1821C3(Test_S1821C3, "S1821C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1821C3C1Ev();
extern void _ZN7S1821C3D1Ev();
Name_Map name_map_S1821C3[] = {
  NSPAIR(_ZN7S1821C3C1Ev),
  NSPAIR(_ZN7S1821C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1821C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1821C3[];
extern void _ZN7S1821C3D1Ev();
extern void _ZN7S1821C3D0Ev();
extern void _ZN7S1821C32v6Ev();
extern void _ZN7S1821C32v7Ev();
extern void _ZN7S1821C32v8Ev();
extern void _ZN7S1821C32v9Ev();
extern void _ZN7S1821C33v10Ev();
extern void _ZN7S1821C33v11Ev();
extern void _ZN7S1821C33v12Ev();
extern void _ZN7S1821C33v13Ev();
extern void _ZN7S1821C33v14Ev();
extern void _ZN7S1821C33v15Ev();
extern void _ZN7S1821C33v16Ev();
extern void _ZN7S1821C33v17Ev();
extern void _ZN7S1821C33v18Ev();
extern void _ZN7S1821C33v19Ev();
extern void _ZN7S1821C33v20Ev();
extern void _ZN7S1821C33v21Ev();
extern void _ZN7S1821C33v22Ev();
extern void _ZN7S1821C33v23Ev();
extern void _ZN7S1821C33v24Ev();
extern void _ZN7S1821C33v25Ev();
extern void _ZN7S1821C33v26Ev();
extern void _ZN7S1821C33v27Ev();
extern void _ZN7S1821C33v28Ev();
extern void _ZN7S1821C33v29Ev();
extern void _ZN7S1821C33v30Ev();
extern void _ZN7S1821C33v31Ev();
extern void _ZN7S1821C33v32Ev();
extern void _ZN7S1821C33v33Ev();
extern void _ZN7S1821C33v34Ev();
extern void _ZN7S1821C33v35Ev();
extern void _ZN7S1821C33v36Ev();
extern void _ZN7S1821C33v37Ev();
extern void _ZN7S1821C33v38Ev();
extern void _ZN7S1821C33v39Ev();
extern void _ZN7S1821C33v40Ev();
extern void _ZN7S1821C33v41Ev();
extern void _ZN7S1821C33v42Ev();
extern void _ZN7S1821C33v43Ev();
extern void _ZN7S1821C33v44Ev();
extern void _ZN7S1821C33v45Ev();
extern void _ZN7S1821C33v46Ev();
extern void _ZN7S1821C33v47Ev();
extern void _ZN7S1821C33v48Ev();
extern void _ZN7S1821C33v49Ev();
extern void _ZN7S1821C33v50Ev();
extern void _ZN7S1821C33v51Ev();
extern void _ZN7S1821C33v52Ev();
extern void _ZN7S1821C33v53Ev();
extern void _ZN7S1821C33v54Ev();
extern void _ZN7S1821C33v55Ev();
extern void _ZN7S1821C33v56Ev();
extern void _ZN7S1821C33v57Ev();
extern void _ZN7S1821C33v58Ev();
extern void _ZN7S1821C33v59Ev();
extern void _ZN7S1821C33v60Ev();
extern void _ZN7S1821C33v61Ev();
extern void _ZN7S1821C33v62Ev();
extern void _ZN7S1821C33v63Ev();
extern void _ZN7S1821C33v64Ev();
extern void _ZN7S1821C33v65Ev();
extern void _ZN7S1821C33v66Ev();
extern void _ZN7S1821C33v67Ev();
extern void _ZN7S1821C33v68Ev();
extern void _ZN7S1821C33v69Ev();
extern void _ZN7S1821C33v70Ev();
extern void _ZN7S1821C33v71Ev();
extern void _ZN7S1821C33v72Ev();
extern void _ZN7S1821C33v73Ev();
extern void _ZN7S1821C33v74Ev();
extern void _ZN7S1821C33v75Ev();
extern void _ZN7S1821C33v76Ev();
extern void _ZN7S1821C33v77Ev();
extern void _ZN7S1821C33v78Ev();
extern void _ZN7S1821C33v79Ev();
extern void _ZN7S1821C33v80Ev();
extern void _ZN7S1821C33v81Ev();
extern void _ZN7S1821C33v82Ev();
extern void _ZN7S1821C33v83Ev();
extern void _ZN7S1821C33v84Ev();
extern void _ZN7S1821C33v85Ev();
extern void _ZN7S1821C33v86Ev();
extern void _ZN7S1821C33v87Ev();
extern void _ZN7S1821C33v88Ev();
extern void _ZN7S1821C33v89Ev();
extern void _ZN7S1821C33v90Ev();
extern void _ZN7S1821C33v91Ev();
extern void _ZN7S1821C33v92Ev();
extern void _ZN7S1821C33v93Ev();
extern void _ZN7S1821C33v94Ev();
extern void _ZN7S1821C33v95Ev();
extern void _ZN7S1821C33v96Ev();
extern void _ZN7S1821C33v97Ev();
extern void _ZN7S1821C33v98Ev();
extern void _ZN7S1821C33v99Ev();
extern void _ZN7S1821C34v100Ev();
extern void _ZN7S1821C34v101Ev();
extern void _ZN7S1821C34v102Ev();
extern void _ZN7S1821C34v103Ev();
extern void _ZN7S1821C34v104Ev();
extern void _ZN7S1821C34v105Ev();
extern void _ZN7S1821C34v106Ev();
extern void _ZN7S1821C34v107Ev();
extern void _ZN7S1821C34v108Ev();
extern void _ZN7S1821C34v109Ev();
extern void _ZN7S1821C34v110Ev();
extern void _ZN7S1821C34v111Ev();
extern void _ZN7S1821C34v112Ev();
extern void _ZN7S1821C34v113Ev();
extern void _ZN7S1821C34v114Ev();
extern void _ZN7S1821C34v115Ev();
extern void _ZN7S1821C34v116Ev();
extern void _ZN7S1821C34v117Ev();
extern void _ZN7S1821C34v118Ev();
extern void _ZN7S1821C34v119Ev();
extern void _ZN7S1821C34v120Ev();
extern void _ZN7S1821C34v121Ev();
extern void _ZN7S1821C34v122Ev();
extern void _ZN7S1821C34v123Ev();
extern void _ZN7S1821C34v124Ev();
extern void _ZN7S1821C34v125Ev();
extern void _ZN7S1821C34v126Ev();
extern void _ZN7S1821C34v127Ev();
static  VTBL_ENTRY vtc_S1821C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1821C3[0]),
  (VTBL_ENTRY)&_ZN7S1821C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1821C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v127Ev,
};
extern VTBL_ENTRY _ZTI7S1821C3[];
extern  VTBL_ENTRY _ZTV7S1821C3[];
Class_Descriptor cd_S1821C3 = {  "S1821C3", // class name
  bases_S1821C3, 1,
  &(vtc_S1821C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1821C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1821C3),126, //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  S1821C2  : S1821C3 {
  virtual void  v128(); // _ZN7S1821C24v128Ev
  virtual void  v129(); // _ZN7S1821C24v129Ev
  virtual void  v130(); // _ZN7S1821C24v130Ev
  virtual void  v131(); // _ZN7S1821C24v131Ev
  virtual void  v132(); // _ZN7S1821C24v132Ev
  virtual void  v133(); // _ZN7S1821C24v133Ev
  virtual void  v134(); // _ZN7S1821C24v134Ev
  virtual void  v135(); // _ZN7S1821C24v135Ev
  virtual void  v136(); // _ZN7S1821C24v136Ev
  virtual void  v137(); // _ZN7S1821C24v137Ev
  virtual void  v138(); // _ZN7S1821C24v138Ev
  virtual void  v139(); // _ZN7S1821C24v139Ev
  virtual void  v140(); // _ZN7S1821C24v140Ev
  virtual void  v141(); // _ZN7S1821C24v141Ev
  virtual void  v142(); // _ZN7S1821C24v142Ev
  virtual void  v143(); // _ZN7S1821C24v143Ev
  virtual void  v144(); // _ZN7S1821C24v144Ev
  virtual void  v145(); // _ZN7S1821C24v145Ev
  ~S1821C2(); // tgen
  S1821C2(); // tgen
};
//SIG(-1 S1821C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1821C2 ::v128(){vfunc_called(this, "_ZN7S1821C24v128Ev");}
void  S1821C2 ::v129(){vfunc_called(this, "_ZN7S1821C24v129Ev");}
void  S1821C2 ::v130(){vfunc_called(this, "_ZN7S1821C24v130Ev");}
void  S1821C2 ::v131(){vfunc_called(this, "_ZN7S1821C24v131Ev");}
void  S1821C2 ::v132(){vfunc_called(this, "_ZN7S1821C24v132Ev");}
void  S1821C2 ::v133(){vfunc_called(this, "_ZN7S1821C24v133Ev");}
void  S1821C2 ::v134(){vfunc_called(this, "_ZN7S1821C24v134Ev");}
void  S1821C2 ::v135(){vfunc_called(this, "_ZN7S1821C24v135Ev");}
void  S1821C2 ::v136(){vfunc_called(this, "_ZN7S1821C24v136Ev");}
void  S1821C2 ::v137(){vfunc_called(this, "_ZN7S1821C24v137Ev");}
void  S1821C2 ::v138(){vfunc_called(this, "_ZN7S1821C24v138Ev");}
void  S1821C2 ::v139(){vfunc_called(this, "_ZN7S1821C24v139Ev");}
void  S1821C2 ::v140(){vfunc_called(this, "_ZN7S1821C24v140Ev");}
void  S1821C2 ::v141(){vfunc_called(this, "_ZN7S1821C24v141Ev");}
void  S1821C2 ::v142(){vfunc_called(this, "_ZN7S1821C24v142Ev");}
void  S1821C2 ::v143(){vfunc_called(this, "_ZN7S1821C24v143Ev");}
void  S1821C2 ::v144(){vfunc_called(this, "_ZN7S1821C24v144Ev");}
void  S1821C2 ::v145(){vfunc_called(this, "_ZN7S1821C24v145Ev");}
S1821C2 ::~S1821C2(){ note_dtor("S1821C2", this);} // tgen
S1821C2 ::S1821C2(){ note_ctor("S1821C2", this);} // tgen

static void Test_S1821C2()
{
  extern Class_Descriptor cd_S1821C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1821C2, buf);
    S1821C2 *dp, &lv = *(dp=new (buf) S1821C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1821C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1821C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1821C3*), 0, "S1821C2");
    check_base_class_offset(lv, (S1821C3*), 0, "S1821C2");
    test_class_info(&lv, &cd_S1821C2);
    dp->~S1821C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1821C2(Test_S1821C2, "S1821C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1821C2C1Ev();
extern void _ZN7S1821C2D1Ev();
Name_Map name_map_S1821C2[] = {
  NSPAIR(_ZN7S1821C2C1Ev),
  NSPAIR(_ZN7S1821C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1821C3;
extern VTBL_ENTRY _ZTI7S1821C3[];
extern  VTBL_ENTRY _ZTV7S1821C3[];
static Base_Class bases_S1821C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1821C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1821C2[];
extern void _ZN7S1821C2D1Ev();
extern void _ZN7S1821C2D0Ev();
extern void _ZN7S1821C32v6Ev();
extern void _ZN7S1821C32v7Ev();
extern void _ZN7S1821C32v8Ev();
extern void _ZN7S1821C32v9Ev();
extern void _ZN7S1821C33v10Ev();
extern void _ZN7S1821C33v11Ev();
extern void _ZN7S1821C33v12Ev();
extern void _ZN7S1821C33v13Ev();
extern void _ZN7S1821C33v14Ev();
extern void _ZN7S1821C33v15Ev();
extern void _ZN7S1821C33v16Ev();
extern void _ZN7S1821C33v17Ev();
extern void _ZN7S1821C33v18Ev();
extern void _ZN7S1821C33v19Ev();
extern void _ZN7S1821C33v20Ev();
extern void _ZN7S1821C33v21Ev();
extern void _ZN7S1821C33v22Ev();
extern void _ZN7S1821C33v23Ev();
extern void _ZN7S1821C33v24Ev();
extern void _ZN7S1821C33v25Ev();
extern void _ZN7S1821C33v26Ev();
extern void _ZN7S1821C33v27Ev();
extern void _ZN7S1821C33v28Ev();
extern void _ZN7S1821C33v29Ev();
extern void _ZN7S1821C33v30Ev();
extern void _ZN7S1821C33v31Ev();
extern void _ZN7S1821C33v32Ev();
extern void _ZN7S1821C33v33Ev();
extern void _ZN7S1821C33v34Ev();
extern void _ZN7S1821C33v35Ev();
extern void _ZN7S1821C33v36Ev();
extern void _ZN7S1821C33v37Ev();
extern void _ZN7S1821C33v38Ev();
extern void _ZN7S1821C33v39Ev();
extern void _ZN7S1821C33v40Ev();
extern void _ZN7S1821C33v41Ev();
extern void _ZN7S1821C33v42Ev();
extern void _ZN7S1821C33v43Ev();
extern void _ZN7S1821C33v44Ev();
extern void _ZN7S1821C33v45Ev();
extern void _ZN7S1821C33v46Ev();
extern void _ZN7S1821C33v47Ev();
extern void _ZN7S1821C33v48Ev();
extern void _ZN7S1821C33v49Ev();
extern void _ZN7S1821C33v50Ev();
extern void _ZN7S1821C33v51Ev();
extern void _ZN7S1821C33v52Ev();
extern void _ZN7S1821C33v53Ev();
extern void _ZN7S1821C33v54Ev();
extern void _ZN7S1821C33v55Ev();
extern void _ZN7S1821C33v56Ev();
extern void _ZN7S1821C33v57Ev();
extern void _ZN7S1821C33v58Ev();
extern void _ZN7S1821C33v59Ev();
extern void _ZN7S1821C33v60Ev();
extern void _ZN7S1821C33v61Ev();
extern void _ZN7S1821C33v62Ev();
extern void _ZN7S1821C33v63Ev();
extern void _ZN7S1821C33v64Ev();
extern void _ZN7S1821C33v65Ev();
extern void _ZN7S1821C33v66Ev();
extern void _ZN7S1821C33v67Ev();
extern void _ZN7S1821C33v68Ev();
extern void _ZN7S1821C33v69Ev();
extern void _ZN7S1821C33v70Ev();
extern void _ZN7S1821C33v71Ev();
extern void _ZN7S1821C33v72Ev();
extern void _ZN7S1821C33v73Ev();
extern void _ZN7S1821C33v74Ev();
extern void _ZN7S1821C33v75Ev();
extern void _ZN7S1821C33v76Ev();
extern void _ZN7S1821C33v77Ev();
extern void _ZN7S1821C33v78Ev();
extern void _ZN7S1821C33v79Ev();
extern void _ZN7S1821C33v80Ev();
extern void _ZN7S1821C33v81Ev();
extern void _ZN7S1821C33v82Ev();
extern void _ZN7S1821C33v83Ev();
extern void _ZN7S1821C33v84Ev();
extern void _ZN7S1821C33v85Ev();
extern void _ZN7S1821C33v86Ev();
extern void _ZN7S1821C33v87Ev();
extern void _ZN7S1821C33v88Ev();
extern void _ZN7S1821C33v89Ev();
extern void _ZN7S1821C33v90Ev();
extern void _ZN7S1821C33v91Ev();
extern void _ZN7S1821C33v92Ev();
extern void _ZN7S1821C33v93Ev();
extern void _ZN7S1821C33v94Ev();
extern void _ZN7S1821C33v95Ev();
extern void _ZN7S1821C33v96Ev();
extern void _ZN7S1821C33v97Ev();
extern void _ZN7S1821C33v98Ev();
extern void _ZN7S1821C33v99Ev();
extern void _ZN7S1821C34v100Ev();
extern void _ZN7S1821C34v101Ev();
extern void _ZN7S1821C34v102Ev();
extern void _ZN7S1821C34v103Ev();
extern void _ZN7S1821C34v104Ev();
extern void _ZN7S1821C34v105Ev();
extern void _ZN7S1821C34v106Ev();
extern void _ZN7S1821C34v107Ev();
extern void _ZN7S1821C34v108Ev();
extern void _ZN7S1821C34v109Ev();
extern void _ZN7S1821C34v110Ev();
extern void _ZN7S1821C34v111Ev();
extern void _ZN7S1821C34v112Ev();
extern void _ZN7S1821C34v113Ev();
extern void _ZN7S1821C34v114Ev();
extern void _ZN7S1821C34v115Ev();
extern void _ZN7S1821C34v116Ev();
extern void _ZN7S1821C34v117Ev();
extern void _ZN7S1821C34v118Ev();
extern void _ZN7S1821C34v119Ev();
extern void _ZN7S1821C34v120Ev();
extern void _ZN7S1821C34v121Ev();
extern void _ZN7S1821C34v122Ev();
extern void _ZN7S1821C34v123Ev();
extern void _ZN7S1821C34v124Ev();
extern void _ZN7S1821C34v125Ev();
extern void _ZN7S1821C34v126Ev();
extern void _ZN7S1821C34v127Ev();
extern void _ZN7S1821C24v128Ev();
extern void _ZN7S1821C24v129Ev();
extern void _ZN7S1821C24v130Ev();
extern void _ZN7S1821C24v131Ev();
extern void _ZN7S1821C24v132Ev();
extern void _ZN7S1821C24v133Ev();
extern void _ZN7S1821C24v134Ev();
extern void _ZN7S1821C24v135Ev();
extern void _ZN7S1821C24v136Ev();
extern void _ZN7S1821C24v137Ev();
extern void _ZN7S1821C24v138Ev();
extern void _ZN7S1821C24v139Ev();
extern void _ZN7S1821C24v140Ev();
extern void _ZN7S1821C24v141Ev();
extern void _ZN7S1821C24v142Ev();
extern void _ZN7S1821C24v143Ev();
extern void _ZN7S1821C24v144Ev();
extern void _ZN7S1821C24v145Ev();
static  VTBL_ENTRY vtc_S1821C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1821C2[0]),
  (VTBL_ENTRY)&_ZN7S1821C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1821C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v145Ev,
};
extern VTBL_ENTRY _ZTI7S1821C2[];
extern  VTBL_ENTRY _ZTV7S1821C2[];
Class_Descriptor cd_S1821C2 = {  "S1821C2", // class name
  bases_S1821C2, 2,
  &(vtc_S1821C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1821C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1821C2),144, //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  S1821C1  : S1821C2 {
  virtual void  v1(); // _ZN7S1821C12v1Ev
  virtual void  v2(); // _ZN7S1821C12v2Ev
  virtual void  v3(); // _ZN7S1821C12v3Ev
  virtual void  v4(); // _ZN7S1821C12v4Ev
  virtual void  v5(); // _ZN7S1821C12v5Ev
  ~S1821C1(); // tgen
  S1821C1(); // tgen
};
//SIG(1 S1821C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5}


void  S1821C1 ::v1(){vfunc_called(this, "_ZN7S1821C12v1Ev");}
void  S1821C1 ::v2(){vfunc_called(this, "_ZN7S1821C12v2Ev");}
void  S1821C1 ::v3(){vfunc_called(this, "_ZN7S1821C12v3Ev");}
void  S1821C1 ::v4(){vfunc_called(this, "_ZN7S1821C12v4Ev");}
void  S1821C1 ::v5(){vfunc_called(this, "_ZN7S1821C12v5Ev");}
S1821C1 ::~S1821C1(){ note_dtor("S1821C1", this);} // tgen
S1821C1 ::S1821C1(){ note_ctor("S1821C1", this);} // tgen

static void Test_S1821C1()
{
  extern Class_Descriptor cd_S1821C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1821C1, buf);
    S1821C1 *dp, &lv = *(dp=new (buf) S1821C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1821C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1821C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1821C3*)(S1821C2*), 0, "S1821C1");
    check_base_class_offset(lv, (S1821C3*)(S1821C2*), 0, "S1821C1");
    check_base_class_offset(lv, (S1821C2*), 0, "S1821C1");
    test_class_info(&lv, &cd_S1821C1);
    dp->~S1821C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1821C1(Test_S1821C1, "S1821C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1821C1C1Ev();
extern void _ZN7S1821C1D1Ev();
Name_Map name_map_S1821C1[] = {
  NSPAIR(_ZN7S1821C1C1Ev),
  NSPAIR(_ZN7S1821C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1821C3;
extern VTBL_ENTRY _ZTI7S1821C3[];
extern  VTBL_ENTRY _ZTV7S1821C3[];
extern Class_Descriptor cd_S1821C2;
extern VTBL_ENTRY _ZTI7S1821C2[];
extern  VTBL_ENTRY _ZTV7S1821C2[];
static Base_Class bases_S1821C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1821C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1821C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1821C1[];
extern void _ZN7S1821C1D1Ev();
extern void _ZN7S1821C1D0Ev();
extern void _ZN7S1821C32v6Ev();
extern void _ZN7S1821C32v7Ev();
extern void _ZN7S1821C32v8Ev();
extern void _ZN7S1821C32v9Ev();
extern void _ZN7S1821C33v10Ev();
extern void _ZN7S1821C33v11Ev();
extern void _ZN7S1821C33v12Ev();
extern void _ZN7S1821C33v13Ev();
extern void _ZN7S1821C33v14Ev();
extern void _ZN7S1821C33v15Ev();
extern void _ZN7S1821C33v16Ev();
extern void _ZN7S1821C33v17Ev();
extern void _ZN7S1821C33v18Ev();
extern void _ZN7S1821C33v19Ev();
extern void _ZN7S1821C33v20Ev();
extern void _ZN7S1821C33v21Ev();
extern void _ZN7S1821C33v22Ev();
extern void _ZN7S1821C33v23Ev();
extern void _ZN7S1821C33v24Ev();
extern void _ZN7S1821C33v25Ev();
extern void _ZN7S1821C33v26Ev();
extern void _ZN7S1821C33v27Ev();
extern void _ZN7S1821C33v28Ev();
extern void _ZN7S1821C33v29Ev();
extern void _ZN7S1821C33v30Ev();
extern void _ZN7S1821C33v31Ev();
extern void _ZN7S1821C33v32Ev();
extern void _ZN7S1821C33v33Ev();
extern void _ZN7S1821C33v34Ev();
extern void _ZN7S1821C33v35Ev();
extern void _ZN7S1821C33v36Ev();
extern void _ZN7S1821C33v37Ev();
extern void _ZN7S1821C33v38Ev();
extern void _ZN7S1821C33v39Ev();
extern void _ZN7S1821C33v40Ev();
extern void _ZN7S1821C33v41Ev();
extern void _ZN7S1821C33v42Ev();
extern void _ZN7S1821C33v43Ev();
extern void _ZN7S1821C33v44Ev();
extern void _ZN7S1821C33v45Ev();
extern void _ZN7S1821C33v46Ev();
extern void _ZN7S1821C33v47Ev();
extern void _ZN7S1821C33v48Ev();
extern void _ZN7S1821C33v49Ev();
extern void _ZN7S1821C33v50Ev();
extern void _ZN7S1821C33v51Ev();
extern void _ZN7S1821C33v52Ev();
extern void _ZN7S1821C33v53Ev();
extern void _ZN7S1821C33v54Ev();
extern void _ZN7S1821C33v55Ev();
extern void _ZN7S1821C33v56Ev();
extern void _ZN7S1821C33v57Ev();
extern void _ZN7S1821C33v58Ev();
extern void _ZN7S1821C33v59Ev();
extern void _ZN7S1821C33v60Ev();
extern void _ZN7S1821C33v61Ev();
extern void _ZN7S1821C33v62Ev();
extern void _ZN7S1821C33v63Ev();
extern void _ZN7S1821C33v64Ev();
extern void _ZN7S1821C33v65Ev();
extern void _ZN7S1821C33v66Ev();
extern void _ZN7S1821C33v67Ev();
extern void _ZN7S1821C33v68Ev();
extern void _ZN7S1821C33v69Ev();
extern void _ZN7S1821C33v70Ev();
extern void _ZN7S1821C33v71Ev();
extern void _ZN7S1821C33v72Ev();
extern void _ZN7S1821C33v73Ev();
extern void _ZN7S1821C33v74Ev();
extern void _ZN7S1821C33v75Ev();
extern void _ZN7S1821C33v76Ev();
extern void _ZN7S1821C33v77Ev();
extern void _ZN7S1821C33v78Ev();
extern void _ZN7S1821C33v79Ev();
extern void _ZN7S1821C33v80Ev();
extern void _ZN7S1821C33v81Ev();
extern void _ZN7S1821C33v82Ev();
extern void _ZN7S1821C33v83Ev();
extern void _ZN7S1821C33v84Ev();
extern void _ZN7S1821C33v85Ev();
extern void _ZN7S1821C33v86Ev();
extern void _ZN7S1821C33v87Ev();
extern void _ZN7S1821C33v88Ev();
extern void _ZN7S1821C33v89Ev();
extern void _ZN7S1821C33v90Ev();
extern void _ZN7S1821C33v91Ev();
extern void _ZN7S1821C33v92Ev();
extern void _ZN7S1821C33v93Ev();
extern void _ZN7S1821C33v94Ev();
extern void _ZN7S1821C33v95Ev();
extern void _ZN7S1821C33v96Ev();
extern void _ZN7S1821C33v97Ev();
extern void _ZN7S1821C33v98Ev();
extern void _ZN7S1821C33v99Ev();
extern void _ZN7S1821C34v100Ev();
extern void _ZN7S1821C34v101Ev();
extern void _ZN7S1821C34v102Ev();
extern void _ZN7S1821C34v103Ev();
extern void _ZN7S1821C34v104Ev();
extern void _ZN7S1821C34v105Ev();
extern void _ZN7S1821C34v106Ev();
extern void _ZN7S1821C34v107Ev();
extern void _ZN7S1821C34v108Ev();
extern void _ZN7S1821C34v109Ev();
extern void _ZN7S1821C34v110Ev();
extern void _ZN7S1821C34v111Ev();
extern void _ZN7S1821C34v112Ev();
extern void _ZN7S1821C34v113Ev();
extern void _ZN7S1821C34v114Ev();
extern void _ZN7S1821C34v115Ev();
extern void _ZN7S1821C34v116Ev();
extern void _ZN7S1821C34v117Ev();
extern void _ZN7S1821C34v118Ev();
extern void _ZN7S1821C34v119Ev();
extern void _ZN7S1821C34v120Ev();
extern void _ZN7S1821C34v121Ev();
extern void _ZN7S1821C34v122Ev();
extern void _ZN7S1821C34v123Ev();
extern void _ZN7S1821C34v124Ev();
extern void _ZN7S1821C34v125Ev();
extern void _ZN7S1821C34v126Ev();
extern void _ZN7S1821C34v127Ev();
extern void _ZN7S1821C24v128Ev();
extern void _ZN7S1821C24v129Ev();
extern void _ZN7S1821C24v130Ev();
extern void _ZN7S1821C24v131Ev();
extern void _ZN7S1821C24v132Ev();
extern void _ZN7S1821C24v133Ev();
extern void _ZN7S1821C24v134Ev();
extern void _ZN7S1821C24v135Ev();
extern void _ZN7S1821C24v136Ev();
extern void _ZN7S1821C24v137Ev();
extern void _ZN7S1821C24v138Ev();
extern void _ZN7S1821C24v139Ev();
extern void _ZN7S1821C24v140Ev();
extern void _ZN7S1821C24v141Ev();
extern void _ZN7S1821C24v142Ev();
extern void _ZN7S1821C24v143Ev();
extern void _ZN7S1821C24v144Ev();
extern void _ZN7S1821C24v145Ev();
extern void _ZN7S1821C12v1Ev();
extern void _ZN7S1821C12v2Ev();
extern void _ZN7S1821C12v3Ev();
extern void _ZN7S1821C12v4Ev();
extern void _ZN7S1821C12v5Ev();
static  VTBL_ENTRY vtc_S1821C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1821C1[0]),
  (VTBL_ENTRY)&_ZN7S1821C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1821C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1821C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1821C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1821C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1821C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1821C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1821C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1821C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1821C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1821C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1821C1[];
extern  VTBL_ENTRY _ZTV7S1821C1[];
Class_Descriptor cd_S1821C1 = {  "S1821C1", // class name
  bases_S1821C1, 3,
  &(vtc_S1821C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1821C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1821C1),149, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S782C4  : S785C5_nt {
  virtual void  v4(); // _ZN6S782C42v4Ev
  virtual void  v5(); // _ZN6S782C42v5Ev
  virtual void  v6(); // _ZN6S782C42v6Ev
  virtual void  v7(); // _ZN6S782C42v7Ev
  virtual void  v8(); // _ZN6S782C42v8Ev
  virtual void  v9(); // _ZN6S782C42v9Ev
  virtual void  v10(); // _ZN6S782C43v10Ev
  virtual void  v11(); // _ZN6S782C43v11Ev
  virtual void  v12(); // _ZN6S782C43v12Ev
  virtual void  v13(); // _ZN6S782C43v13Ev
  virtual void  v14(); // _ZN6S782C43v14Ev
  virtual void  v15(); // _ZN6S782C43v15Ev
  virtual void  v16(); // _ZN6S782C43v16Ev
  virtual void  v17(); // _ZN6S782C43v17Ev
  virtual void  v18(); // _ZN6S782C43v18Ev
  virtual void  v19(); // _ZN6S782C43v19Ev
  virtual void  v20(); // _ZN6S782C43v20Ev
  virtual void  v21(); // _ZN6S782C43v21Ev
  virtual void  v22(); // _ZN6S782C43v22Ev
  virtual void  v23(); // _ZN6S782C43v23Ev
  virtual void  v24(); // _ZN6S782C43v24Ev
  virtual void  v25(); // _ZN6S782C43v25Ev
  virtual void  v26(); // _ZN6S782C43v26Ev
  virtual void  v27(); // _ZN6S782C43v27Ev
  virtual void  v28(); // _ZN6S782C43v28Ev
  virtual void  v29(); // _ZN6S782C43v29Ev
  virtual void  v30(); // _ZN6S782C43v30Ev
  virtual void  v31(); // _ZN6S782C43v31Ev
  virtual void  v32(); // _ZN6S782C43v32Ev
  virtual void  v33(); // _ZN6S782C43v33Ev
  virtual void  v34(); // _ZN6S782C43v34Ev
  virtual void  v35(); // _ZN6S782C43v35Ev
  virtual void  v36(); // _ZN6S782C43v36Ev
  virtual void  v37(); // _ZN6S782C43v37Ev
  virtual void  v38(); // _ZN6S782C43v38Ev
  virtual void  v39(); // _ZN6S782C43v39Ev
  virtual void  v40(); // _ZN6S782C43v40Ev
  virtual void  v41(); // _ZN6S782C43v41Ev
  virtual void  v42(); // _ZN6S782C43v42Ev
  virtual void  v43(); // _ZN6S782C43v43Ev
  virtual void  v44(); // _ZN6S782C43v44Ev
  virtual void  v45(); // _ZN6S782C43v45Ev
  virtual void  v46(); // _ZN6S782C43v46Ev
  virtual void  v47(); // _ZN6S782C43v47Ev
  virtual void  v48(); // _ZN6S782C43v48Ev
  virtual void  v49(); // _ZN6S782C43v49Ev
  virtual void  v50(); // _ZN6S782C43v50Ev
  virtual void  v51(); // _ZN6S782C43v51Ev
  virtual void  v52(); // _ZN6S782C43v52Ev
  virtual void  v53(); // _ZN6S782C43v53Ev
  virtual void  v54(); // _ZN6S782C43v54Ev
  virtual void  v55(); // _ZN6S782C43v55Ev
  virtual void  v56(); // _ZN6S782C43v56Ev
  virtual void  v57(); // _ZN6S782C43v57Ev
  virtual void  v58(); // _ZN6S782C43v58Ev
  virtual void  v59(); // _ZN6S782C43v59Ev
  virtual void  v60(); // _ZN6S782C43v60Ev
  virtual void  v61(); // _ZN6S782C43v61Ev
  virtual void  v62(); // _ZN6S782C43v62Ev
  virtual void  v63(); // _ZN6S782C43v63Ev
  virtual void  v64(); // _ZN6S782C43v64Ev
  virtual void  v65(); // _ZN6S782C43v65Ev
  virtual void  v66(); // _ZN6S782C43v66Ev
  virtual void  v67(); // _ZN6S782C43v67Ev
  virtual void  v68(); // _ZN6S782C43v68Ev
  virtual void  v69(); // _ZN6S782C43v69Ev
  virtual void  v70(); // _ZN6S782C43v70Ev
  virtual void  v71(); // _ZN6S782C43v71Ev
  virtual void  v72(); // _ZN6S782C43v72Ev
  virtual void  v73(); // _ZN6S782C43v73Ev
  virtual void  v74(); // _ZN6S782C43v74Ev
  virtual void  v75(); // _ZN6S782C43v75Ev
  virtual void  v76(); // _ZN6S782C43v76Ev
  virtual void  v77(); // _ZN6S782C43v77Ev
  virtual void  v78(); // _ZN6S782C43v78Ev
  virtual void  v79(); // _ZN6S782C43v79Ev
  virtual void  v80(); // _ZN6S782C43v80Ev
  virtual void  v81(); // _ZN6S782C43v81Ev
  virtual void  v82(); // _ZN6S782C43v82Ev
  virtual void  v83(); // _ZN6S782C43v83Ev
  virtual void  v84(); // _ZN6S782C43v84Ev
  virtual void  v85(); // _ZN6S782C43v85Ev
  virtual void  v86(); // _ZN6S782C43v86Ev
  virtual void  v87(); // _ZN6S782C43v87Ev
  virtual void  v88(); // _ZN6S782C43v88Ev
  virtual void  v89(); // _ZN6S782C43v89Ev
  virtual void  v90(); // _ZN6S782C43v90Ev
  virtual void  v91(); // _ZN6S782C43v91Ev
  virtual void  v92(); // _ZN6S782C43v92Ev
  virtual void  v93(); // _ZN6S782C43v93Ev
  virtual void  v94(); // _ZN6S782C43v94Ev
  virtual void  v95(); // _ZN6S782C43v95Ev
  virtual void  v96(); // _ZN6S782C43v96Ev
  virtual void  v97(); // _ZN6S782C43v97Ev
  virtual void  v98(); // _ZN6S782C43v98Ev
  virtual void  v99(); // _ZN6S782C43v99Ev
  virtual void  v100(); // _ZN6S782C44v100Ev
  virtual void  v101(); // _ZN6S782C44v101Ev
  virtual void  v102(); // _ZN6S782C44v102Ev
  virtual void  v103(); // _ZN6S782C44v103Ev
  virtual void  v104(); // _ZN6S782C44v104Ev
  virtual void  v105(); // _ZN6S782C44v105Ev
  virtual void  v106(); // _ZN6S782C44v106Ev
  virtual void  v107(); // _ZN6S782C44v107Ev
  virtual void  v108(); // _ZN6S782C44v108Ev
  virtual void  v109(); // _ZN6S782C44v109Ev
  virtual void  v110(); // _ZN6S782C44v110Ev
  virtual void  v111(); // _ZN6S782C44v111Ev
  virtual void  v112(); // _ZN6S782C44v112Ev
  virtual void  v113(); // _ZN6S782C44v113Ev
  virtual void  v114(); // _ZN6S782C44v114Ev
  virtual void  v115(); // _ZN6S782C44v115Ev
  virtual void  v116(); // _ZN6S782C44v116Ev
  virtual void  v117(); // _ZN6S782C44v117Ev
  virtual void  v118(); // _ZN6S782C44v118Ev
  virtual void  v119(); // _ZN6S782C44v119Ev
  virtual void  v120(); // _ZN6S782C44v120Ev
  virtual void  v121(); // _ZN6S782C44v121Ev
  virtual void  v122(); // _ZN6S782C44v122Ev
  virtual void  v123(); // _ZN6S782C44v123Ev
  virtual void  v124(); // _ZN6S782C44v124Ev
  virtual void  v125(); // _ZN6S782C44v125Ev
  ~S782C4(); // tgen
  S782C4(); // tgen
};
//SIG(-1 S782C4) C1{ BC2{ vd m Fp Fi} 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 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}


void  S782C4 ::v4(){vfunc_called(this, "_ZN6S782C42v4Ev");}
void  S782C4 ::v5(){vfunc_called(this, "_ZN6S782C42v5Ev");}
void  S782C4 ::v6(){vfunc_called(this, "_ZN6S782C42v6Ev");}
void  S782C4 ::v7(){vfunc_called(this, "_ZN6S782C42v7Ev");}
void  S782C4 ::v8(){vfunc_called(this, "_ZN6S782C42v8Ev");}
void  S782C4 ::v9(){vfunc_called(this, "_ZN6S782C42v9Ev");}
void  S782C4 ::v10(){vfunc_called(this, "_ZN6S782C43v10Ev");}
void  S782C4 ::v11(){vfunc_called(this, "_ZN6S782C43v11Ev");}
void  S782C4 ::v12(){vfunc_called(this, "_ZN6S782C43v12Ev");}
void  S782C4 ::v13(){vfunc_called(this, "_ZN6S782C43v13Ev");}
void  S782C4 ::v14(){vfunc_called(this, "_ZN6S782C43v14Ev");}
void  S782C4 ::v15(){vfunc_called(this, "_ZN6S782C43v15Ev");}
void  S782C4 ::v16(){vfunc_called(this, "_ZN6S782C43v16Ev");}
void  S782C4 ::v17(){vfunc_called(this, "_ZN6S782C43v17Ev");}
void  S782C4 ::v18(){vfunc_called(this, "_ZN6S782C43v18Ev");}
void  S782C4 ::v19(){vfunc_called(this, "_ZN6S782C43v19Ev");}
void  S782C4 ::v20(){vfunc_called(this, "_ZN6S782C43v20Ev");}
void  S782C4 ::v21(){vfunc_called(this, "_ZN6S782C43v21Ev");}
void  S782C4 ::v22(){vfunc_called(this, "_ZN6S782C43v22Ev");}
void  S782C4 ::v23(){vfunc_called(this, "_ZN6S782C43v23Ev");}
void  S782C4 ::v24(){vfunc_called(this, "_ZN6S782C43v24Ev");}
void  S782C4 ::v25(){vfunc_called(this, "_ZN6S782C43v25Ev");}
void  S782C4 ::v26(){vfunc_called(this, "_ZN6S782C43v26Ev");}
void  S782C4 ::v27(){vfunc_called(this, "_ZN6S782C43v27Ev");}
void  S782C4 ::v28(){vfunc_called(this, "_ZN6S782C43v28Ev");}
void  S782C4 ::v29(){vfunc_called(this, "_ZN6S782C43v29Ev");}
void  S782C4 ::v30(){vfunc_called(this, "_ZN6S782C43v30Ev");}
void  S782C4 ::v31(){vfunc_called(this, "_ZN6S782C43v31Ev");}
void  S782C4 ::v32(){vfunc_called(this, "_ZN6S782C43v32Ev");}
void  S782C4 ::v33(){vfunc_called(this, "_ZN6S782C43v33Ev");}
void  S782C4 ::v34(){vfunc_called(this, "_ZN6S782C43v34Ev");}
void  S782C4 ::v35(){vfunc_called(this, "_ZN6S782C43v35Ev");}
void  S782C4 ::v36(){vfunc_called(this, "_ZN6S782C43v36Ev");}
void  S782C4 ::v37(){vfunc_called(this, "_ZN6S782C43v37Ev");}
void  S782C4 ::v38(){vfunc_called(this, "_ZN6S782C43v38Ev");}
void  S782C4 ::v39(){vfunc_called(this, "_ZN6S782C43v39Ev");}
void  S782C4 ::v40(){vfunc_called(this, "_ZN6S782C43v40Ev");}
void  S782C4 ::v41(){vfunc_called(this, "_ZN6S782C43v41Ev");}
void  S782C4 ::v42(){vfunc_called(this, "_ZN6S782C43v42Ev");}
void  S782C4 ::v43(){vfunc_called(this, "_ZN6S782C43v43Ev");}
void  S782C4 ::v44(){vfunc_called(this, "_ZN6S782C43v44Ev");}
void  S782C4 ::v45(){vfunc_called(this, "_ZN6S782C43v45Ev");}
void  S782C4 ::v46(){vfunc_called(this, "_ZN6S782C43v46Ev");}
void  S782C4 ::v47(){vfunc_called(this, "_ZN6S782C43v47Ev");}
void  S782C4 ::v48(){vfunc_called(this, "_ZN6S782C43v48Ev");}
void  S782C4 ::v49(){vfunc_called(this, "_ZN6S782C43v49Ev");}
void  S782C4 ::v50(){vfunc_called(this, "_ZN6S782C43v50Ev");}
void  S782C4 ::v51(){vfunc_called(this, "_ZN6S782C43v51Ev");}
void  S782C4 ::v52(){vfunc_called(this, "_ZN6S782C43v52Ev");}
void  S782C4 ::v53(){vfunc_called(this, "_ZN6S782C43v53Ev");}
void  S782C4 ::v54(){vfunc_called(this, "_ZN6S782C43v54Ev");}
void  S782C4 ::v55(){vfunc_called(this, "_ZN6S782C43v55Ev");}
void  S782C4 ::v56(){vfunc_called(this, "_ZN6S782C43v56Ev");}
void  S782C4 ::v57(){vfunc_called(this, "_ZN6S782C43v57Ev");}
void  S782C4 ::v58(){vfunc_called(this, "_ZN6S782C43v58Ev");}
void  S782C4 ::v59(){vfunc_called(this, "_ZN6S782C43v59Ev");}
void  S782C4 ::v60(){vfunc_called(this, "_ZN6S782C43v60Ev");}
void  S782C4 ::v61(){vfunc_called(this, "_ZN6S782C43v61Ev");}
void  S782C4 ::v62(){vfunc_called(this, "_ZN6S782C43v62Ev");}
void  S782C4 ::v63(){vfunc_called(this, "_ZN6S782C43v63Ev");}
void  S782C4 ::v64(){vfunc_called(this, "_ZN6S782C43v64Ev");}
void  S782C4 ::v65(){vfunc_called(this, "_ZN6S782C43v65Ev");}
void  S782C4 ::v66(){vfunc_called(this, "_ZN6S782C43v66Ev");}
void  S782C4 ::v67(){vfunc_called(this, "_ZN6S782C43v67Ev");}
void  S782C4 ::v68(){vfunc_called(this, "_ZN6S782C43v68Ev");}
void  S782C4 ::v69(){vfunc_called(this, "_ZN6S782C43v69Ev");}
void  S782C4 ::v70(){vfunc_called(this, "_ZN6S782C43v70Ev");}
void  S782C4 ::v71(){vfunc_called(this, "_ZN6S782C43v71Ev");}
void  S782C4 ::v72(){vfunc_called(this, "_ZN6S782C43v72Ev");}
void  S782C4 ::v73(){vfunc_called(this, "_ZN6S782C43v73Ev");}
void  S782C4 ::v74(){vfunc_called(this, "_ZN6S782C43v74Ev");}
void  S782C4 ::v75(){vfunc_called(this, "_ZN6S782C43v75Ev");}
void  S782C4 ::v76(){vfunc_called(this, "_ZN6S782C43v76Ev");}
void  S782C4 ::v77(){vfunc_called(this, "_ZN6S782C43v77Ev");}
void  S782C4 ::v78(){vfunc_called(this, "_ZN6S782C43v78Ev");}
void  S782C4 ::v79(){vfunc_called(this, "_ZN6S782C43v79Ev");}
void  S782C4 ::v80(){vfunc_called(this, "_ZN6S782C43v80Ev");}
void  S782C4 ::v81(){vfunc_called(this, "_ZN6S782C43v81Ev");}
void  S782C4 ::v82(){vfunc_called(this, "_ZN6S782C43v82Ev");}
void  S782C4 ::v83(){vfunc_called(this, "_ZN6S782C43v83Ev");}
void  S782C4 ::v84(){vfunc_called(this, "_ZN6S782C43v84Ev");}
void  S782C4 ::v85(){vfunc_called(this, "_ZN6S782C43v85Ev");}
void  S782C4 ::v86(){vfunc_called(this, "_ZN6S782C43v86Ev");}
void  S782C4 ::v87(){vfunc_called(this, "_ZN6S782C43v87Ev");}
void  S782C4 ::v88(){vfunc_called(this, "_ZN6S782C43v88Ev");}
void  S782C4 ::v89(){vfunc_called(this, "_ZN6S782C43v89Ev");}
void  S782C4 ::v90(){vfunc_called(this, "_ZN6S782C43v90Ev");}
void  S782C4 ::v91(){vfunc_called(this, "_ZN6S782C43v91Ev");}
void  S782C4 ::v92(){vfunc_called(this, "_ZN6S782C43v92Ev");}
void  S782C4 ::v93(){vfunc_called(this, "_ZN6S782C43v93Ev");}
void  S782C4 ::v94(){vfunc_called(this, "_ZN6S782C43v94Ev");}
void  S782C4 ::v95(){vfunc_called(this, "_ZN6S782C43v95Ev");}
void  S782C4 ::v96(){vfunc_called(this, "_ZN6S782C43v96Ev");}
void  S782C4 ::v97(){vfunc_called(this, "_ZN6S782C43v97Ev");}
void  S782C4 ::v98(){vfunc_called(this, "_ZN6S782C43v98Ev");}
void  S782C4 ::v99(){vfunc_called(this, "_ZN6S782C43v99Ev");}
void  S782C4 ::v100(){vfunc_called(this, "_ZN6S782C44v100Ev");}
void  S782C4 ::v101(){vfunc_called(this, "_ZN6S782C44v101Ev");}
void  S782C4 ::v102(){vfunc_called(this, "_ZN6S782C44v102Ev");}
void  S782C4 ::v103(){vfunc_called(this, "_ZN6S782C44v103Ev");}
void  S782C4 ::v104(){vfunc_called(this, "_ZN6S782C44v104Ev");}
void  S782C4 ::v105(){vfunc_called(this, "_ZN6S782C44v105Ev");}
void  S782C4 ::v106(){vfunc_called(this, "_ZN6S782C44v106Ev");}
void  S782C4 ::v107(){vfunc_called(this, "_ZN6S782C44v107Ev");}
void  S782C4 ::v108(){vfunc_called(this, "_ZN6S782C44v108Ev");}
void  S782C4 ::v109(){vfunc_called(this, "_ZN6S782C44v109Ev");}
void  S782C4 ::v110(){vfunc_called(this, "_ZN6S782C44v110Ev");}
void  S782C4 ::v111(){vfunc_called(this, "_ZN6S782C44v111Ev");}
void  S782C4 ::v112(){vfunc_called(this, "_ZN6S782C44v112Ev");}
void  S782C4 ::v113(){vfunc_called(this, "_ZN6S782C44v113Ev");}
void  S782C4 ::v114(){vfunc_called(this, "_ZN6S782C44v114Ev");}
void  S782C4 ::v115(){vfunc_called(this, "_ZN6S782C44v115Ev");}
void  S782C4 ::v116(){vfunc_called(this, "_ZN6S782C44v116Ev");}
void  S782C4 ::v117(){vfunc_called(this, "_ZN6S782C44v117Ev");}
void  S782C4 ::v118(){vfunc_called(this, "_ZN6S782C44v118Ev");}
void  S782C4 ::v119(){vfunc_called(this, "_ZN6S782C44v119Ev");}
void  S782C4 ::v120(){vfunc_called(this, "_ZN6S782C44v120Ev");}
void  S782C4 ::v121(){vfunc_called(this, "_ZN6S782C44v121Ev");}
void  S782C4 ::v122(){vfunc_called(this, "_ZN6S782C44v122Ev");}
void  S782C4 ::v123(){vfunc_called(this, "_ZN6S782C44v123Ev");}
void  S782C4 ::v124(){vfunc_called(this, "_ZN6S782C44v124Ev");}
void  S782C4 ::v125(){vfunc_called(this, "_ZN6S782C44v125Ev");}
S782C4 ::~S782C4(){ note_dtor("S782C4", this);} // tgen
S782C4 ::S782C4(){ note_ctor("S782C4", this);} // tgen

static void Test_S782C4()
{
  extern Class_Descriptor cd_S782C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S782C4, buf);
    S782C4 *dp, &lv = *(dp=new (buf) S782C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S782C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S782C4)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S782C4");
    test_class_info(&lv, &cd_S782C4);
    dp->~S782C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS782C4(Test_S782C4, "S782C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S782C4C1Ev();
extern void _ZN6S782C4D1Ev();
Name_Map name_map_S782C4[] = {
  NSPAIR(_ZN6S782C4C1Ev),
  NSPAIR(_ZN6S782C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S782C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI6S782C4[];
extern void _ZN6S782C4D1Ev();
extern void _ZN6S782C4D0Ev();
extern void _ZN6S782C42v4Ev();
extern void _ZN6S782C42v5Ev();
extern void _ZN6S782C42v6Ev();
extern void _ZN6S782C42v7Ev();
extern void _ZN6S782C42v8Ev();
extern void _ZN6S782C42v9Ev();
extern void _ZN6S782C43v10Ev();
extern void _ZN6S782C43v11Ev();
extern void _ZN6S782C43v12Ev();
extern void _ZN6S782C43v13Ev();
extern void _ZN6S782C43v14Ev();
extern void _ZN6S782C43v15Ev();
extern void _ZN6S782C43v16Ev();
extern void _ZN6S782C43v17Ev();
extern void _ZN6S782C43v18Ev();
extern void _ZN6S782C43v19Ev();
extern void _ZN6S782C43v20Ev();
extern void _ZN6S782C43v21Ev();
extern void _ZN6S782C43v22Ev();
extern void _ZN6S782C43v23Ev();
extern void _ZN6S782C43v24Ev();
extern void _ZN6S782C43v25Ev();
extern void _ZN6S782C43v26Ev();
extern void _ZN6S782C43v27Ev();
extern void _ZN6S782C43v28Ev();
extern void _ZN6S782C43v29Ev();
extern void _ZN6S782C43v30Ev();
extern void _ZN6S782C43v31Ev();
extern void _ZN6S782C43v32Ev();
extern void _ZN6S782C43v33Ev();
extern void _ZN6S782C43v34Ev();
extern void _ZN6S782C43v35Ev();
extern void _ZN6S782C43v36Ev();
extern void _ZN6S782C43v37Ev();
extern void _ZN6S782C43v38Ev();
extern void _ZN6S782C43v39Ev();
extern void _ZN6S782C43v40Ev();
extern void _ZN6S782C43v41Ev();
extern void _ZN6S782C43v42Ev();
extern void _ZN6S782C43v43Ev();
extern void _ZN6S782C43v44Ev();
extern void _ZN6S782C43v45Ev();
extern void _ZN6S782C43v46Ev();
extern void _ZN6S782C43v47Ev();
extern void _ZN6S782C43v48Ev();
extern void _ZN6S782C43v49Ev();
extern void _ZN6S782C43v50Ev();
extern void _ZN6S782C43v51Ev();
extern void _ZN6S782C43v52Ev();
extern void _ZN6S782C43v53Ev();
extern void _ZN6S782C43v54Ev();
extern void _ZN6S782C43v55Ev();
extern void _ZN6S782C43v56Ev();
extern void _ZN6S782C43v57Ev();
extern void _ZN6S782C43v58Ev();
extern void _ZN6S782C43v59Ev();
extern void _ZN6S782C43v60Ev();
extern void _ZN6S782C43v61Ev();
extern void _ZN6S782C43v62Ev();
extern void _ZN6S782C43v63Ev();
extern void _ZN6S782C43v64Ev();
extern void _ZN6S782C43v65Ev();
extern void _ZN6S782C43v66Ev();
extern void _ZN6S782C43v67Ev();
extern void _ZN6S782C43v68Ev();
extern void _ZN6S782C43v69Ev();
extern void _ZN6S782C43v70Ev();
extern void _ZN6S782C43v71Ev();
extern void _ZN6S782C43v72Ev();
extern void _ZN6S782C43v73Ev();
extern void _ZN6S782C43v74Ev();
extern void _ZN6S782C43v75Ev();
extern void _ZN6S782C43v76Ev();
extern void _ZN6S782C43v77Ev();
extern void _ZN6S782C43v78Ev();
extern void _ZN6S782C43v79Ev();
extern void _ZN6S782C43v80Ev();
extern void _ZN6S782C43v81Ev();
extern void _ZN6S782C43v82Ev();
extern void _ZN6S782C43v83Ev();
extern void _ZN6S782C43v84Ev();
extern void _ZN6S782C43v85Ev();
extern void _ZN6S782C43v86Ev();
extern void _ZN6S782C43v87Ev();
extern void _ZN6S782C43v88Ev();
extern void _ZN6S782C43v89Ev();
extern void _ZN6S782C43v90Ev();
extern void _ZN6S782C43v91Ev();
extern void _ZN6S782C43v92Ev();
extern void _ZN6S782C43v93Ev();
extern void _ZN6S782C43v94Ev();
extern void _ZN6S782C43v95Ev();
extern void _ZN6S782C43v96Ev();
extern void _ZN6S782C43v97Ev();
extern void _ZN6S782C43v98Ev();
extern void _ZN6S782C43v99Ev();
extern void _ZN6S782C44v100Ev();
extern void _ZN6S782C44v101Ev();
extern void _ZN6S782C44v102Ev();
extern void _ZN6S782C44v103Ev();
extern void _ZN6S782C44v104Ev();
extern void _ZN6S782C44v105Ev();
extern void _ZN6S782C44v106Ev();
extern void _ZN6S782C44v107Ev();
extern void _ZN6S782C44v108Ev();
extern void _ZN6S782C44v109Ev();
extern void _ZN6S782C44v110Ev();
extern void _ZN6S782C44v111Ev();
extern void _ZN6S782C44v112Ev();
extern void _ZN6S782C44v113Ev();
extern void _ZN6S782C44v114Ev();
extern void _ZN6S782C44v115Ev();
extern void _ZN6S782C44v116Ev();
extern void _ZN6S782C44v117Ev();
extern void _ZN6S782C44v118Ev();
extern void _ZN6S782C44v119Ev();
extern void _ZN6S782C44v120Ev();
extern void _ZN6S782C44v121Ev();
extern void _ZN6S782C44v122Ev();
extern void _ZN6S782C44v123Ev();
extern void _ZN6S782C44v124Ev();
extern void _ZN6S782C44v125Ev();
static  VTBL_ENTRY vtc_S782C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S782C4[0]),
  (VTBL_ENTRY)&_ZN6S782C4D1Ev,
  (VTBL_ENTRY)&_ZN6S782C4D0Ev,
  (VTBL_ENTRY)&_ZN6S782C42v4Ev,
  (VTBL_ENTRY)&_ZN6S782C42v5Ev,
  (VTBL_ENTRY)&_ZN6S782C42v6Ev,
  (VTBL_ENTRY)&_ZN6S782C42v7Ev,
  (VTBL_ENTRY)&_ZN6S782C42v8Ev,
  (VTBL_ENTRY)&_ZN6S782C42v9Ev,
  (VTBL_ENTRY)&_ZN6S782C43v10Ev,
  (VTBL_ENTRY)&_ZN6S782C43v11Ev,
  (VTBL_ENTRY)&_ZN6S782C43v12Ev,
  (VTBL_ENTRY)&_ZN6S782C43v13Ev,
  (VTBL_ENTRY)&_ZN6S782C43v14Ev,
  (VTBL_ENTRY)&_ZN6S782C43v15Ev,
  (VTBL_ENTRY)&_ZN6S782C43v16Ev,
  (VTBL_ENTRY)&_ZN6S782C43v17Ev,
  (VTBL_ENTRY)&_ZN6S782C43v18Ev,
  (VTBL_ENTRY)&_ZN6S782C43v19Ev,
  (VTBL_ENTRY)&_ZN6S782C43v20Ev,
  (VTBL_ENTRY)&_ZN6S782C43v21Ev,
  (VTBL_ENTRY)&_ZN6S782C43v22Ev,
  (VTBL_ENTRY)&_ZN6S782C43v23Ev,
  (VTBL_ENTRY)&_ZN6S782C43v24Ev,
  (VTBL_ENTRY)&_ZN6S782C43v25Ev,
  (VTBL_ENTRY)&_ZN6S782C43v26Ev,
  (VTBL_ENTRY)&_ZN6S782C43v27Ev,
  (VTBL_ENTRY)&_ZN6S782C43v28Ev,
  (VTBL_ENTRY)&_ZN6S782C43v29Ev,
  (VTBL_ENTRY)&_ZN6S782C43v30Ev,
  (VTBL_ENTRY)&_ZN6S782C43v31Ev,
  (VTBL_ENTRY)&_ZN6S782C43v32Ev,
  (VTBL_ENTRY)&_ZN6S782C43v33Ev,
  (VTBL_ENTRY)&_ZN6S782C43v34Ev,
  (VTBL_ENTRY)&_ZN6S782C43v35Ev,
  (VTBL_ENTRY)&_ZN6S782C43v36Ev,
  (VTBL_ENTRY)&_ZN6S782C43v37Ev,
  (VTBL_ENTRY)&_ZN6S782C43v38Ev,
  (VTBL_ENTRY)&_ZN6S782C43v39Ev,
  (VTBL_ENTRY)&_ZN6S782C43v40Ev,
  (VTBL_ENTRY)&_ZN6S782C43v41Ev,
  (VTBL_ENTRY)&_ZN6S782C43v42Ev,
  (VTBL_ENTRY)&_ZN6S782C43v43Ev,
  (VTBL_ENTRY)&_ZN6S782C43v44Ev,
  (VTBL_ENTRY)&_ZN6S782C43v45Ev,
  (VTBL_ENTRY)&_ZN6S782C43v46Ev,
  (VTBL_ENTRY)&_ZN6S782C43v47Ev,
  (VTBL_ENTRY)&_ZN6S782C43v48Ev,
  (VTBL_ENTRY)&_ZN6S782C43v49Ev,
  (VTBL_ENTRY)&_ZN6S782C43v50Ev,
  (VTBL_ENTRY)&_ZN6S782C43v51Ev,
  (VTBL_ENTRY)&_ZN6S782C43v52Ev,
  (VTBL_ENTRY)&_ZN6S782C43v53Ev,
  (VTBL_ENTRY)&_ZN6S782C43v54Ev,
  (VTBL_ENTRY)&_ZN6S782C43v55Ev,
  (VTBL_ENTRY)&_ZN6S782C43v56Ev,
  (VTBL_ENTRY)&_ZN6S782C43v57Ev,
  (VTBL_ENTRY)&_ZN6S782C43v58Ev,
  (VTBL_ENTRY)&_ZN6S782C43v59Ev,
  (VTBL_ENTRY)&_ZN6S782C43v60Ev,
  (VTBL_ENTRY)&_ZN6S782C43v61Ev,
  (VTBL_ENTRY)&_ZN6S782C43v62Ev,
  (VTBL_ENTRY)&_ZN6S782C43v63Ev,
  (VTBL_ENTRY)&_ZN6S782C43v64Ev,
  (VTBL_ENTRY)&_ZN6S782C43v65Ev,
  (VTBL_ENTRY)&_ZN6S782C43v66Ev,
  (VTBL_ENTRY)&_ZN6S782C43v67Ev,
  (VTBL_ENTRY)&_ZN6S782C43v68Ev,
  (VTBL_ENTRY)&_ZN6S782C43v69Ev,
  (VTBL_ENTRY)&_ZN6S782C43v70Ev,
  (VTBL_ENTRY)&_ZN6S782C43v71Ev,
  (VTBL_ENTRY)&_ZN6S782C43v72Ev,
  (VTBL_ENTRY)&_ZN6S782C43v73Ev,
  (VTBL_ENTRY)&_ZN6S782C43v74Ev,
  (VTBL_ENTRY)&_ZN6S782C43v75Ev,
  (VTBL_ENTRY)&_ZN6S782C43v76Ev,
  (VTBL_ENTRY)&_ZN6S782C43v77Ev,
  (VTBL_ENTRY)&_ZN6S782C43v78Ev,
  (VTBL_ENTRY)&_ZN6S782C43v79Ev,
  (VTBL_ENTRY)&_ZN6S782C43v80Ev,
  (VTBL_ENTRY)&_ZN6S782C43v81Ev,
  (VTBL_ENTRY)&_ZN6S782C43v82Ev,
  (VTBL_ENTRY)&_ZN6S782C43v83Ev,
  (VTBL_ENTRY)&_ZN6S782C43v84Ev,
  (VTBL_ENTRY)&_ZN6S782C43v85Ev,
  (VTBL_ENTRY)&_ZN6S782C43v86Ev,
  (VTBL_ENTRY)&_ZN6S782C43v87Ev,
  (VTBL_ENTRY)&_ZN6S782C43v88Ev,
  (VTBL_ENTRY)&_ZN6S782C43v89Ev,
  (VTBL_ENTRY)&_ZN6S782C43v90Ev,
  (VTBL_ENTRY)&_ZN6S782C43v91Ev,
  (VTBL_ENTRY)&_ZN6S782C43v92Ev,
  (VTBL_ENTRY)&_ZN6S782C43v93Ev,
  (VTBL_ENTRY)&_ZN6S782C43v94Ev,
  (VTBL_ENTRY)&_ZN6S782C43v95Ev,
  (VTBL_ENTRY)&_ZN6S782C43v96Ev,
  (VTBL_ENTRY)&_ZN6S782C43v97Ev,
  (VTBL_ENTRY)&_ZN6S782C43v98Ev,
  (VTBL_ENTRY)&_ZN6S782C43v99Ev,
  (VTBL_ENTRY)&_ZN6S782C44v100Ev,
  (VTBL_ENTRY)&_ZN6S782C44v101Ev,
  (VTBL_ENTRY)&_ZN6S782C44v102Ev,
  (VTBL_ENTRY)&_ZN6S782C44v103Ev,
  (VTBL_ENTRY)&_ZN6S782C44v104Ev,
  (VTBL_ENTRY)&_ZN6S782C44v105Ev,
  (VTBL_ENTRY)&_ZN6S782C44v106Ev,
  (VTBL_ENTRY)&_ZN6S782C44v107Ev,
  (VTBL_ENTRY)&_ZN6S782C44v108Ev,
  (VTBL_ENTRY)&_ZN6S782C44v109Ev,
  (VTBL_ENTRY)&_ZN6S782C44v110Ev,
  (VTBL_ENTRY)&_ZN6S782C44v111Ev,
  (VTBL_ENTRY)&_ZN6S782C44v112Ev,
  (VTBL_ENTRY)&_ZN6S782C44v113Ev,
  (VTBL_ENTRY)&_ZN6S782C44v114Ev,
  (VTBL_ENTRY)&_ZN6S782C44v115Ev,
  (VTBL_ENTRY)&_ZN6S782C44v116Ev,
  (VTBL_ENTRY)&_ZN6S782C44v117Ev,
  (VTBL_ENTRY)&_ZN6S782C44v118Ev,
  (VTBL_ENTRY)&_ZN6S782C44v119Ev,
  (VTBL_ENTRY)&_ZN6S782C44v120Ev,
  (VTBL_ENTRY)&_ZN6S782C44v121Ev,
  (VTBL_ENTRY)&_ZN6S782C44v122Ev,
  (VTBL_ENTRY)&_ZN6S782C44v123Ev,
  (VTBL_ENTRY)&_ZN6S782C44v124Ev,
  (VTBL_ENTRY)&_ZN6S782C44v125Ev,
};
extern VTBL_ENTRY _ZTI6S782C4[];
extern  VTBL_ENTRY _ZTV6S782C4[];
Class_Descriptor cd_S782C4 = {  "S782C4", // class name
  bases_S782C4, 1,
  &(vtc_S782C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S782C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S782C4),126, //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  S782C3  : S782C4 {
  virtual void  v126(); // _ZN6S782C34v126Ev
  virtual void  v127(); // _ZN6S782C34v127Ev
  virtual void  v128(); // _ZN6S782C34v128Ev
  virtual void  v129(); // _ZN6S782C34v129Ev
  virtual void  v130(); // _ZN6S782C34v130Ev
  virtual void  v131(); // _ZN6S782C34v131Ev
  virtual void  v132(); // _ZN6S782C34v132Ev
  virtual void  v133(); // _ZN6S782C34v133Ev
  virtual void  v134(); // _ZN6S782C34v134Ev
  virtual void  v135(); // _ZN6S782C34v135Ev
  virtual void  v136(); // _ZN6S782C34v136Ev
  virtual void  v137(); // _ZN6S782C34v137Ev
  virtual void  v138(); // _ZN6S782C34v138Ev
  virtual void  v139(); // _ZN6S782C34v139Ev
  virtual void  v140(); // _ZN6S782C34v140Ev
  virtual void  v141(); // _ZN6S782C34v141Ev
  virtual void  v142(); // _ZN6S782C34v142Ev
  virtual void  v143(); // _ZN6S782C34v143Ev
  ~S782C3(); // tgen
  S782C3(); // tgen
};
//SIG(-1 S782C3) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S782C3 ::v126(){vfunc_called(this, "_ZN6S782C34v126Ev");}
void  S782C3 ::v127(){vfunc_called(this, "_ZN6S782C34v127Ev");}
void  S782C3 ::v128(){vfunc_called(this, "_ZN6S782C34v128Ev");}
void  S782C3 ::v129(){vfunc_called(this, "_ZN6S782C34v129Ev");}
void  S782C3 ::v130(){vfunc_called(this, "_ZN6S782C34v130Ev");}
void  S782C3 ::v131(){vfunc_called(this, "_ZN6S782C34v131Ev");}
void  S782C3 ::v132(){vfunc_called(this, "_ZN6S782C34v132Ev");}
void  S782C3 ::v133(){vfunc_called(this, "_ZN6S782C34v133Ev");}
void  S782C3 ::v134(){vfunc_called(this, "_ZN6S782C34v134Ev");}
void  S782C3 ::v135(){vfunc_called(this, "_ZN6S782C34v135Ev");}
void  S782C3 ::v136(){vfunc_called(this, "_ZN6S782C34v136Ev");}
void  S782C3 ::v137(){vfunc_called(this, "_ZN6S782C34v137Ev");}
void  S782C3 ::v138(){vfunc_called(this, "_ZN6S782C34v138Ev");}
void  S782C3 ::v139(){vfunc_called(this, "_ZN6S782C34v139Ev");}
void  S782C3 ::v140(){vfunc_called(this, "_ZN6S782C34v140Ev");}
void  S782C3 ::v141(){vfunc_called(this, "_ZN6S782C34v141Ev");}
void  S782C3 ::v142(){vfunc_called(this, "_ZN6S782C34v142Ev");}
void  S782C3 ::v143(){vfunc_called(this, "_ZN6S782C34v143Ev");}
S782C3 ::~S782C3(){ note_dtor("S782C3", this);} // tgen
S782C3 ::S782C3(){ note_ctor("S782C3", this);} // tgen

static void Test_S782C3()
{
  extern Class_Descriptor cd_S782C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S782C3, buf);
    S782C3 *dp, &lv = *(dp=new (buf) S782C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S782C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S782C3)");
    check_base_class_offset(lv, (S785C5_nt*)(S782C4*), 0, "S782C3");
    check_base_class_offset(lv, (S782C4*), 0, "S782C3");
    test_class_info(&lv, &cd_S782C3);
    dp->~S782C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS782C3(Test_S782C3, "S782C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S782C3C1Ev();
extern void _ZN6S782C3D1Ev();
Name_Map name_map_S782C3[] = {
  NSPAIR(_ZN6S782C3C1Ev),
  NSPAIR(_ZN6S782C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S782C4;
extern VTBL_ENTRY _ZTI6S782C4[];
extern  VTBL_ENTRY _ZTV6S782C4[];
static Base_Class bases_S782C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S782C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S782C3[];
extern void _ZN6S782C3D1Ev();
extern void _ZN6S782C3D0Ev();
extern void _ZN6S782C42v4Ev();
extern void _ZN6S782C42v5Ev();
extern void _ZN6S782C42v6Ev();
extern void _ZN6S782C42v7Ev();
extern void _ZN6S782C42v8Ev();
extern void _ZN6S782C42v9Ev();
extern void _ZN6S782C43v10Ev();
extern void _ZN6S782C43v11Ev();
extern void _ZN6S782C43v12Ev();
extern void _ZN6S782C43v13Ev();
extern void _ZN6S782C43v14Ev();
extern void _ZN6S782C43v15Ev();
extern void _ZN6S782C43v16Ev();
extern void _ZN6S782C43v17Ev();
extern void _ZN6S782C43v18Ev();
extern void _ZN6S782C43v19Ev();
extern void _ZN6S782C43v20Ev();
extern void _ZN6S782C43v21Ev();
extern void _ZN6S782C43v22Ev();
extern void _ZN6S782C43v23Ev();
extern void _ZN6S782C43v24Ev();
extern void _ZN6S782C43v25Ev();
extern void _ZN6S782C43v26Ev();
extern void _ZN6S782C43v27Ev();
extern void _ZN6S782C43v28Ev();
extern void _ZN6S782C43v29Ev();
extern void _ZN6S782C43v30Ev();
extern void _ZN6S782C43v31Ev();
extern void _ZN6S782C43v32Ev();
extern void _ZN6S782C43v33Ev();
extern void _ZN6S782C43v34Ev();
extern void _ZN6S782C43v35Ev();
extern void _ZN6S782C43v36Ev();
extern void _ZN6S782C43v37Ev();
extern void _ZN6S782C43v38Ev();
extern void _ZN6S782C43v39Ev();
extern void _ZN6S782C43v40Ev();
extern void _ZN6S782C43v41Ev();
extern void _ZN6S782C43v42Ev();
extern void _ZN6S782C43v43Ev();
extern void _ZN6S782C43v44Ev();
extern void _ZN6S782C43v45Ev();
extern void _ZN6S782C43v46Ev();
extern void _ZN6S782C43v47Ev();
extern void _ZN6S782C43v48Ev();
extern void _ZN6S782C43v49Ev();
extern void _ZN6S782C43v50Ev();
extern void _ZN6S782C43v51Ev();
extern void _ZN6S782C43v52Ev();
extern void _ZN6S782C43v53Ev();
extern void _ZN6S782C43v54Ev();
extern void _ZN6S782C43v55Ev();
extern void _ZN6S782C43v56Ev();
extern void _ZN6S782C43v57Ev();
extern void _ZN6S782C43v58Ev();
extern void _ZN6S782C43v59Ev();
extern void _ZN6S782C43v60Ev();
extern void _ZN6S782C43v61Ev();
extern void _ZN6S782C43v62Ev();
extern void _ZN6S782C43v63Ev();
extern void _ZN6S782C43v64Ev();
extern void _ZN6S782C43v65Ev();
extern void _ZN6S782C43v66Ev();
extern void _ZN6S782C43v67Ev();
extern void _ZN6S782C43v68Ev();
extern void _ZN6S782C43v69Ev();
extern void _ZN6S782C43v70Ev();
extern void _ZN6S782C43v71Ev();
extern void _ZN6S782C43v72Ev();
extern void _ZN6S782C43v73Ev();
extern void _ZN6S782C43v74Ev();
extern void _ZN6S782C43v75Ev();
extern void _ZN6S782C43v76Ev();
extern void _ZN6S782C43v77Ev();
extern void _ZN6S782C43v78Ev();
extern void _ZN6S782C43v79Ev();
extern void _ZN6S782C43v80Ev();
extern void _ZN6S782C43v81Ev();
extern void _ZN6S782C43v82Ev();
extern void _ZN6S782C43v83Ev();
extern void _ZN6S782C43v84Ev();
extern void _ZN6S782C43v85Ev();
extern void _ZN6S782C43v86Ev();
extern void _ZN6S782C43v87Ev();
extern void _ZN6S782C43v88Ev();
extern void _ZN6S782C43v89Ev();
extern void _ZN6S782C43v90Ev();
extern void _ZN6S782C43v91Ev();
extern void _ZN6S782C43v92Ev();
extern void _ZN6S782C43v93Ev();
extern void _ZN6S782C43v94Ev();
extern void _ZN6S782C43v95Ev();
extern void _ZN6S782C43v96Ev();
extern void _ZN6S782C43v97Ev();
extern void _ZN6S782C43v98Ev();
extern void _ZN6S782C43v99Ev();
extern void _ZN6S782C44v100Ev();
extern void _ZN6S782C44v101Ev();
extern void _ZN6S782C44v102Ev();
extern void _ZN6S782C44v103Ev();
extern void _ZN6S782C44v104Ev();
extern void _ZN6S782C44v105Ev();
extern void _ZN6S782C44v106Ev();
extern void _ZN6S782C44v107Ev();
extern void _ZN6S782C44v108Ev();
extern void _ZN6S782C44v109Ev();
extern void _ZN6S782C44v110Ev();
extern void _ZN6S782C44v111Ev();
extern void _ZN6S782C44v112Ev();
extern void _ZN6S782C44v113Ev();
extern void _ZN6S782C44v114Ev();
extern void _ZN6S782C44v115Ev();
extern void _ZN6S782C44v116Ev();
extern void _ZN6S782C44v117Ev();
extern void _ZN6S782C44v118Ev();
extern void _ZN6S782C44v119Ev();
extern void _ZN6S782C44v120Ev();
extern void _ZN6S782C44v121Ev();
extern void _ZN6S782C44v122Ev();
extern void _ZN6S782C44v123Ev();
extern void _ZN6S782C44v124Ev();
extern void _ZN6S782C44v125Ev();
extern void _ZN6S782C34v126Ev();
extern void _ZN6S782C34v127Ev();
extern void _ZN6S782C34v128Ev();
extern void _ZN6S782C34v129Ev();
extern void _ZN6S782C34v130Ev();
extern void _ZN6S782C34v131Ev();
extern void _ZN6S782C34v132Ev();
extern void _ZN6S782C34v133Ev();
extern void _ZN6S782C34v134Ev();
extern void _ZN6S782C34v135Ev();
extern void _ZN6S782C34v136Ev();
extern void _ZN6S782C34v137Ev();
extern void _ZN6S782C34v138Ev();
extern void _ZN6S782C34v139Ev();
extern void _ZN6S782C34v140Ev();
extern void _ZN6S782C34v141Ev();
extern void _ZN6S782C34v142Ev();
extern void _ZN6S782C34v143Ev();
static  VTBL_ENTRY vtc_S782C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S782C3[0]),
  (VTBL_ENTRY)&_ZN6S782C3D1Ev,
  (VTBL_ENTRY)&_ZN6S782C3D0Ev,
  (VTBL_ENTRY)&_ZN6S782C42v4Ev,
  (VTBL_ENTRY)&_ZN6S782C42v5Ev,
  (VTBL_ENTRY)&_ZN6S782C42v6Ev,
  (VTBL_ENTRY)&_ZN6S782C42v7Ev,
  (VTBL_ENTRY)&_ZN6S782C42v8Ev,
  (VTBL_ENTRY)&_ZN6S782C42v9Ev,
  (VTBL_ENTRY)&_ZN6S782C43v10Ev,
  (VTBL_ENTRY)&_ZN6S782C43v11Ev,
  (VTBL_ENTRY)&_ZN6S782C43v12Ev,
  (VTBL_ENTRY)&_ZN6S782C43v13Ev,
  (VTBL_ENTRY)&_ZN6S782C43v14Ev,
  (VTBL_ENTRY)&_ZN6S782C43v15Ev,
  (VTBL_ENTRY)&_ZN6S782C43v16Ev,
  (VTBL_ENTRY)&_ZN6S782C43v17Ev,
  (VTBL_ENTRY)&_ZN6S782C43v18Ev,
  (VTBL_ENTRY)&_ZN6S782C43v19Ev,
  (VTBL_ENTRY)&_ZN6S782C43v20Ev,
  (VTBL_ENTRY)&_ZN6S782C43v21Ev,
  (VTBL_ENTRY)&_ZN6S782C43v22Ev,
  (VTBL_ENTRY)&_ZN6S782C43v23Ev,
  (VTBL_ENTRY)&_ZN6S782C43v24Ev,
  (VTBL_ENTRY)&_ZN6S782C43v25Ev,
  (VTBL_ENTRY)&_ZN6S782C43v26Ev,
  (VTBL_ENTRY)&_ZN6S782C43v27Ev,
  (VTBL_ENTRY)&_ZN6S782C43v28Ev,
  (VTBL_ENTRY)&_ZN6S782C43v29Ev,
  (VTBL_ENTRY)&_ZN6S782C43v30Ev,
  (VTBL_ENTRY)&_ZN6S782C43v31Ev,
  (VTBL_ENTRY)&_ZN6S782C43v32Ev,
  (VTBL_ENTRY)&_ZN6S782C43v33Ev,
  (VTBL_ENTRY)&_ZN6S782C43v34Ev,
  (VTBL_ENTRY)&_ZN6S782C43v35Ev,
  (VTBL_ENTRY)&_ZN6S782C43v36Ev,
  (VTBL_ENTRY)&_ZN6S782C43v37Ev,
  (VTBL_ENTRY)&_ZN6S782C43v38Ev,
  (VTBL_ENTRY)&_ZN6S782C43v39Ev,
  (VTBL_ENTRY)&_ZN6S782C43v40Ev,
  (VTBL_ENTRY)&_ZN6S782C43v41Ev,
  (VTBL_ENTRY)&_ZN6S782C43v42Ev,
  (VTBL_ENTRY)&_ZN6S782C43v43Ev,
  (VTBL_ENTRY)&_ZN6S782C43v44Ev,
  (VTBL_ENTRY)&_ZN6S782C43v45Ev,
  (VTBL_ENTRY)&_ZN6S782C43v46Ev,
  (VTBL_ENTRY)&_ZN6S782C43v47Ev,
  (VTBL_ENTRY)&_ZN6S782C43v48Ev,
  (VTBL_ENTRY)&_ZN6S782C43v49Ev,
  (VTBL_ENTRY)&_ZN6S782C43v50Ev,
  (VTBL_ENTRY)&_ZN6S782C43v51Ev,
  (VTBL_ENTRY)&_ZN6S782C43v52Ev,
  (VTBL_ENTRY)&_ZN6S782C43v53Ev,
  (VTBL_ENTRY)&_ZN6S782C43v54Ev,
  (VTBL_ENTRY)&_ZN6S782C43v55Ev,
  (VTBL_ENTRY)&_ZN6S782C43v56Ev,
  (VTBL_ENTRY)&_ZN6S782C43v57Ev,
  (VTBL_ENTRY)&_ZN6S782C43v58Ev,
  (VTBL_ENTRY)&_ZN6S782C43v59Ev,
  (VTBL_ENTRY)&_ZN6S782C43v60Ev,
  (VTBL_ENTRY)&_ZN6S782C43v61Ev,
  (VTBL_ENTRY)&_ZN6S782C43v62Ev,
  (VTBL_ENTRY)&_ZN6S782C43v63Ev,
  (VTBL_ENTRY)&_ZN6S782C43v64Ev,
  (VTBL_ENTRY)&_ZN6S782C43v65Ev,
  (VTBL_ENTRY)&_ZN6S782C43v66Ev,
  (VTBL_ENTRY)&_ZN6S782C43v67Ev,
  (VTBL_ENTRY)&_ZN6S782C43v68Ev,
  (VTBL_ENTRY)&_ZN6S782C43v69Ev,
  (VTBL_ENTRY)&_ZN6S782C43v70Ev,
  (VTBL_ENTRY)&_ZN6S782C43v71Ev,
  (VTBL_ENTRY)&_ZN6S782C43v72Ev,
  (VTBL_ENTRY)&_ZN6S782C43v73Ev,
  (VTBL_ENTRY)&_ZN6S782C43v74Ev,
  (VTBL_ENTRY)&_ZN6S782C43v75Ev,
  (VTBL_ENTRY)&_ZN6S782C43v76Ev,
  (VTBL_ENTRY)&_ZN6S782C43v77Ev,
  (VTBL_ENTRY)&_ZN6S782C43v78Ev,
  (VTBL_ENTRY)&_ZN6S782C43v79Ev,
  (VTBL_ENTRY)&_ZN6S782C43v80Ev,
  (VTBL_ENTRY)&_ZN6S782C43v81Ev,
  (VTBL_ENTRY)&_ZN6S782C43v82Ev,
  (VTBL_ENTRY)&_ZN6S782C43v83Ev,
  (VTBL_ENTRY)&_ZN6S782C43v84Ev,
  (VTBL_ENTRY)&_ZN6S782C43v85Ev,
  (VTBL_ENTRY)&_ZN6S782C43v86Ev,
  (VTBL_ENTRY)&_ZN6S782C43v87Ev,
  (VTBL_ENTRY)&_ZN6S782C43v88Ev,
  (VTBL_ENTRY)&_ZN6S782C43v89Ev,
  (VTBL_ENTRY)&_ZN6S782C43v90Ev,
  (VTBL_ENTRY)&_ZN6S782C43v91Ev,
  (VTBL_ENTRY)&_ZN6S782C43v92Ev,
  (VTBL_ENTRY)&_ZN6S782C43v93Ev,
  (VTBL_ENTRY)&_ZN6S782C43v94Ev,
  (VTBL_ENTRY)&_ZN6S782C43v95Ev,
  (VTBL_ENTRY)&_ZN6S782C43v96Ev,
  (VTBL_ENTRY)&_ZN6S782C43v97Ev,
  (VTBL_ENTRY)&_ZN6S782C43v98Ev,
  (VTBL_ENTRY)&_ZN6S782C43v99Ev,
  (VTBL_ENTRY)&_ZN6S782C44v100Ev,
  (VTBL_ENTRY)&_ZN6S782C44v101Ev,
  (VTBL_ENTRY)&_ZN6S782C44v102Ev,
  (VTBL_ENTRY)&_ZN6S782C44v103Ev,
  (VTBL_ENTRY)&_ZN6S782C44v104Ev,
  (VTBL_ENTRY)&_ZN6S782C44v105Ev,
  (VTBL_ENTRY)&_ZN6S782C44v106Ev,
  (VTBL_ENTRY)&_ZN6S782C44v107Ev,
  (VTBL_ENTRY)&_ZN6S782C44v108Ev,
  (VTBL_ENTRY)&_ZN6S782C44v109Ev,
  (VTBL_ENTRY)&_ZN6S782C44v110Ev,
  (VTBL_ENTRY)&_ZN6S782C44v111Ev,
  (VTBL_ENTRY)&_ZN6S782C44v112Ev,
  (VTBL_ENTRY)&_ZN6S782C44v113Ev,
  (VTBL_ENTRY)&_ZN6S782C44v114Ev,
  (VTBL_ENTRY)&_ZN6S782C44v115Ev,
  (VTBL_ENTRY)&_ZN6S782C44v116Ev,
  (VTBL_ENTRY)&_ZN6S782C44v117Ev,
  (VTBL_ENTRY)&_ZN6S782C44v118Ev,
  (VTBL_ENTRY)&_ZN6S782C44v119Ev,
  (VTBL_ENTRY)&_ZN6S782C44v120Ev,
  (VTBL_ENTRY)&_ZN6S782C44v121Ev,
  (VTBL_ENTRY)&_ZN6S782C44v122Ev,
  (VTBL_ENTRY)&_ZN6S782C44v123Ev,
  (VTBL_ENTRY)&_ZN6S782C44v124Ev,
  (VTBL_ENTRY)&_ZN6S782C44v125Ev,
  (VTBL_ENTRY)&_ZN6S782C34v126Ev,
  (VTBL_ENTRY)&_ZN6S782C34v127Ev,
  (VTBL_ENTRY)&_ZN6S782C34v128Ev,
  (VTBL_ENTRY)&_ZN6S782C34v129Ev,
  (VTBL_ENTRY)&_ZN6S782C34v130Ev,
  (VTBL_ENTRY)&_ZN6S782C34v131Ev,
  (VTBL_ENTRY)&_ZN6S782C34v132Ev,
  (VTBL_ENTRY)&_ZN6S782C34v133Ev,
  (VTBL_ENTRY)&_ZN6S782C34v134Ev,
  (VTBL_ENTRY)&_ZN6S782C34v135Ev,
  (VTBL_ENTRY)&_ZN6S782C34v136Ev,
  (VTBL_ENTRY)&_ZN6S782C34v137Ev,
  (VTBL_ENTRY)&_ZN6S782C34v138Ev,
  (VTBL_ENTRY)&_ZN6S782C34v139Ev,
  (VTBL_ENTRY)&_ZN6S782C34v140Ev,
  (VTBL_ENTRY)&_ZN6S782C34v141Ev,
  (VTBL_ENTRY)&_ZN6S782C34v142Ev,
  (VTBL_ENTRY)&_ZN6S782C34v143Ev,
};
extern VTBL_ENTRY _ZTI6S782C3[];
extern  VTBL_ENTRY _ZTV6S782C3[];
Class_Descriptor cd_S782C3 = {  "S782C3", // class name
  bases_S782C3, 2,
  &(vtc_S782C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S782C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S782C3),144, //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  S782C2  : S782C3 {
  virtual void  v144(); // _ZN6S782C24v144Ev
  ~S782C2(); // tgen
  S782C2(); // tgen
};
//SIG(-1 S782C2) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1}


void  S782C2 ::v144(){vfunc_called(this, "_ZN6S782C24v144Ev");}
S782C2 ::~S782C2(){ note_dtor("S782C2", this);} // tgen
S782C2 ::S782C2(){ note_ctor("S782C2", this);} // tgen

static void Test_S782C2()
{
  extern Class_Descriptor cd_S782C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S782C2, buf);
    S782C2 *dp, &lv = *(dp=new (buf) S782C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S782C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S782C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S782C4*)(S782C3*), 0, "S782C2");
    check_base_class_offset(lv, (S782C4*)(S782C3*), 0, "S782C2");
    check_base_class_offset(lv, (S782C3*), 0, "S782C2");
    test_class_info(&lv, &cd_S782C2);
    dp->~S782C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS782C2(Test_S782C2, "S782C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S782C2C1Ev();
extern void _ZN6S782C2D1Ev();
Name_Map name_map_S782C2[] = {
  NSPAIR(_ZN6S782C2C1Ev),
  NSPAIR(_ZN6S782C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S782C4;
extern VTBL_ENTRY _ZTI6S782C4[];
extern  VTBL_ENTRY _ZTV6S782C4[];
extern Class_Descriptor cd_S782C3;
extern VTBL_ENTRY _ZTI6S782C3[];
extern  VTBL_ENTRY _ZTV6S782C3[];
static Base_Class bases_S782C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S782C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S782C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S782C2[];
extern void _ZN6S782C2D1Ev();
extern void _ZN6S782C2D0Ev();
extern void _ZN6S782C42v4Ev();
extern void _ZN6S782C42v5Ev();
extern void _ZN6S782C42v6Ev();
extern void _ZN6S782C42v7Ev();
extern void _ZN6S782C42v8Ev();
extern void _ZN6S782C42v9Ev();
extern void _ZN6S782C43v10Ev();
extern void _ZN6S782C43v11Ev();
extern void _ZN6S782C43v12Ev();
extern void _ZN6S782C43v13Ev();
extern void _ZN6S782C43v14Ev();
extern void _ZN6S782C43v15Ev();
extern void _ZN6S782C43v16Ev();
extern void _ZN6S782C43v17Ev();
extern void _ZN6S782C43v18Ev();
extern void _ZN6S782C43v19Ev();
extern void _ZN6S782C43v20Ev();
extern void _ZN6S782C43v21Ev();
extern void _ZN6S782C43v22Ev();
extern void _ZN6S782C43v23Ev();
extern void _ZN6S782C43v24Ev();
extern void _ZN6S782C43v25Ev();
extern void _ZN6S782C43v26Ev();
extern void _ZN6S782C43v27Ev();
extern void _ZN6S782C43v28Ev();
extern void _ZN6S782C43v29Ev();
extern void _ZN6S782C43v30Ev();
extern void _ZN6S782C43v31Ev();
extern void _ZN6S782C43v32Ev();
extern void _ZN6S782C43v33Ev();
extern void _ZN6S782C43v34Ev();
extern void _ZN6S782C43v35Ev();
extern void _ZN6S782C43v36Ev();
extern void _ZN6S782C43v37Ev();
extern void _ZN6S782C43v38Ev();
extern void _ZN6S782C43v39Ev();
extern void _ZN6S782C43v40Ev();
extern void _ZN6S782C43v41Ev();
extern void _ZN6S782C43v42Ev();
extern void _ZN6S782C43v43Ev();
extern void _ZN6S782C43v44Ev();
extern void _ZN6S782C43v45Ev();
extern void _ZN6S782C43v46Ev();
extern void _ZN6S782C43v47Ev();
extern void _ZN6S782C43v48Ev();
extern void _ZN6S782C43v49Ev();
extern void _ZN6S782C43v50Ev();
extern void _ZN6S782C43v51Ev();
extern void _ZN6S782C43v52Ev();
extern void _ZN6S782C43v53Ev();
extern void _ZN6S782C43v54Ev();
extern void _ZN6S782C43v55Ev();
extern void _ZN6S782C43v56Ev();
extern void _ZN6S782C43v57Ev();
extern void _ZN6S782C43v58Ev();
extern void _ZN6S782C43v59Ev();
extern void _ZN6S782C43v60Ev();
extern void _ZN6S782C43v61Ev();
extern void _ZN6S782C43v62Ev();
extern void _ZN6S782C43v63Ev();
extern void _ZN6S782C43v64Ev();
extern void _ZN6S782C43v65Ev();
extern void _ZN6S782C43v66Ev();
extern void _ZN6S782C43v67Ev();
extern void _ZN6S782C43v68Ev();
extern void _ZN6S782C43v69Ev();
extern void _ZN6S782C43v70Ev();
extern void _ZN6S782C43v71Ev();
extern void _ZN6S782C43v72Ev();
extern void _ZN6S782C43v73Ev();
extern void _ZN6S782C43v74Ev();
extern void _ZN6S782C43v75Ev();
extern void _ZN6S782C43v76Ev();
extern void _ZN6S782C43v77Ev();
extern void _ZN6S782C43v78Ev();
extern void _ZN6S782C43v79Ev();
extern void _ZN6S782C43v80Ev();
extern void _ZN6S782C43v81Ev();
extern void _ZN6S782C43v82Ev();
extern void _ZN6S782C43v83Ev();
extern void _ZN6S782C43v84Ev();
extern void _ZN6S782C43v85Ev();
extern void _ZN6S782C43v86Ev();
extern void _ZN6S782C43v87Ev();
extern void _ZN6S782C43v88Ev();
extern void _ZN6S782C43v89Ev();
extern void _ZN6S782C43v90Ev();
extern void _ZN6S782C43v91Ev();
extern void _ZN6S782C43v92Ev();
extern void _ZN6S782C43v93Ev();
extern void _ZN6S782C43v94Ev();
extern void _ZN6S782C43v95Ev();
extern void _ZN6S782C43v96Ev();
extern void _ZN6S782C43v97Ev();
extern void _ZN6S782C43v98Ev();
extern void _ZN6S782C43v99Ev();
extern void _ZN6S782C44v100Ev();
extern void _ZN6S782C44v101Ev();
extern void _ZN6S782C44v102Ev();
extern void _ZN6S782C44v103Ev();
extern void _ZN6S782C44v104Ev();
extern void _ZN6S782C44v105Ev();
extern void _ZN6S782C44v106Ev();
extern void _ZN6S782C44v107Ev();
extern void _ZN6S782C44v108Ev();
extern void _ZN6S782C44v109Ev();
extern void _ZN6S782C44v110Ev();
extern void _ZN6S782C44v111Ev();
extern void _ZN6S782C44v112Ev();
extern void _ZN6S782C44v113Ev();
extern void _ZN6S782C44v114Ev();
extern void _ZN6S782C44v115Ev();
extern void _ZN6S782C44v116Ev();
extern void _ZN6S782C44v117Ev();
extern void _ZN6S782C44v118Ev();
extern void _ZN6S782C44v119Ev();
extern void _ZN6S782C44v120Ev();
extern void _ZN6S782C44v121Ev();
extern void _ZN6S782C44v122Ev();
extern void _ZN6S782C44v123Ev();
extern void _ZN6S782C44v124Ev();
extern void _ZN6S782C44v125Ev();
extern void _ZN6S782C34v126Ev();
extern void _ZN6S782C34v127Ev();
extern void _ZN6S782C34v128Ev();
extern void _ZN6S782C34v129Ev();
extern void _ZN6S782C34v130Ev();
extern void _ZN6S782C34v131Ev();
extern void _ZN6S782C34v132Ev();
extern void _ZN6S782C34v133Ev();
extern void _ZN6S782C34v134Ev();
extern void _ZN6S782C34v135Ev();
extern void _ZN6S782C34v136Ev();
extern void _ZN6S782C34v137Ev();
extern void _ZN6S782C34v138Ev();
extern void _ZN6S782C34v139Ev();
extern void _ZN6S782C34v140Ev();
extern void _ZN6S782C34v141Ev();
extern void _ZN6S782C34v142Ev();
extern void _ZN6S782C34v143Ev();
extern void _ZN6S782C24v144Ev();
static  VTBL_ENTRY vtc_S782C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S782C2[0]),
  (VTBL_ENTRY)&_ZN6S782C2D1Ev,
  (VTBL_ENTRY)&_ZN6S782C2D0Ev,
  (VTBL_ENTRY)&_ZN6S782C42v4Ev,
  (VTBL_ENTRY)&_ZN6S782C42v5Ev,
  (VTBL_ENTRY)&_ZN6S782C42v6Ev,
  (VTBL_ENTRY)&_ZN6S782C42v7Ev,
  (VTBL_ENTRY)&_ZN6S782C42v8Ev,
  (VTBL_ENTRY)&_ZN6S782C42v9Ev,
  (VTBL_ENTRY)&_ZN6S782C43v10Ev,
  (VTBL_ENTRY)&_ZN6S782C43v11Ev,
  (VTBL_ENTRY)&_ZN6S782C43v12Ev,
  (VTBL_ENTRY)&_ZN6S782C43v13Ev,
  (VTBL_ENTRY)&_ZN6S782C43v14Ev,
  (VTBL_ENTRY)&_ZN6S782C43v15Ev,
  (VTBL_ENTRY)&_ZN6S782C43v16Ev,
  (VTBL_ENTRY)&_ZN6S782C43v17Ev,
  (VTBL_ENTRY)&_ZN6S782C43v18Ev,
  (VTBL_ENTRY)&_ZN6S782C43v19Ev,
  (VTBL_ENTRY)&_ZN6S782C43v20Ev,
  (VTBL_ENTRY)&_ZN6S782C43v21Ev,
  (VTBL_ENTRY)&_ZN6S782C43v22Ev,
  (VTBL_ENTRY)&_ZN6S782C43v23Ev,
  (VTBL_ENTRY)&_ZN6S782C43v24Ev,
  (VTBL_ENTRY)&_ZN6S782C43v25Ev,
  (VTBL_ENTRY)&_ZN6S782C43v26Ev,
  (VTBL_ENTRY)&_ZN6S782C43v27Ev,
  (VTBL_ENTRY)&_ZN6S782C43v28Ev,
  (VTBL_ENTRY)&_ZN6S782C43v29Ev,
  (VTBL_ENTRY)&_ZN6S782C43v30Ev,
  (VTBL_ENTRY)&_ZN6S782C43v31Ev,
  (VTBL_ENTRY)&_ZN6S782C43v32Ev,
  (VTBL_ENTRY)&_ZN6S782C43v33Ev,
  (VTBL_ENTRY)&_ZN6S782C43v34Ev,
  (VTBL_ENTRY)&_ZN6S782C43v35Ev,
  (VTBL_ENTRY)&_ZN6S782C43v36Ev,
  (VTBL_ENTRY)&_ZN6S782C43v37Ev,
  (VTBL_ENTRY)&_ZN6S782C43v38Ev,
  (VTBL_ENTRY)&_ZN6S782C43v39Ev,
  (VTBL_ENTRY)&_ZN6S782C43v40Ev,
  (VTBL_ENTRY)&_ZN6S782C43v41Ev,
  (VTBL_ENTRY)&_ZN6S782C43v42Ev,
  (VTBL_ENTRY)&_ZN6S782C43v43Ev,
  (VTBL_ENTRY)&_ZN6S782C43v44Ev,
  (VTBL_ENTRY)&_ZN6S782C43v45Ev,
  (VTBL_ENTRY)&_ZN6S782C43v46Ev,
  (VTBL_ENTRY)&_ZN6S782C43v47Ev,
  (VTBL_ENTRY)&_ZN6S782C43v48Ev,
  (VTBL_ENTRY)&_ZN6S782C43v49Ev,
  (VTBL_ENTRY)&_ZN6S782C43v50Ev,
  (VTBL_ENTRY)&_ZN6S782C43v51Ev,
  (VTBL_ENTRY)&_ZN6S782C43v52Ev,
  (VTBL_ENTRY)&_ZN6S782C43v53Ev,
  (VTBL_ENTRY)&_ZN6S782C43v54Ev,
  (VTBL_ENTRY)&_ZN6S782C43v55Ev,
  (VTBL_ENTRY)&_ZN6S782C43v56Ev,
  (VTBL_ENTRY)&_ZN6S782C43v57Ev,
  (VTBL_ENTRY)&_ZN6S782C43v58Ev,
  (VTBL_ENTRY)&_ZN6S782C43v59Ev,
  (VTBL_ENTRY)&_ZN6S782C43v60Ev,
  (VTBL_ENTRY)&_ZN6S782C43v61Ev,
  (VTBL_ENTRY)&_ZN6S782C43v62Ev,
  (VTBL_ENTRY)&_ZN6S782C43v63Ev,
  (VTBL_ENTRY)&_ZN6S782C43v64Ev,
  (VTBL_ENTRY)&_ZN6S782C43v65Ev,
  (VTBL_ENTRY)&_ZN6S782C43v66Ev,
  (VTBL_ENTRY)&_ZN6S782C43v67Ev,
  (VTBL_ENTRY)&_ZN6S782C43v68Ev,
  (VTBL_ENTRY)&_ZN6S782C43v69Ev,
  (VTBL_ENTRY)&_ZN6S782C43v70Ev,
  (VTBL_ENTRY)&_ZN6S782C43v71Ev,
  (VTBL_ENTRY)&_ZN6S782C43v72Ev,
  (VTBL_ENTRY)&_ZN6S782C43v73Ev,
  (VTBL_ENTRY)&_ZN6S782C43v74Ev,
  (VTBL_ENTRY)&_ZN6S782C43v75Ev,
  (VTBL_ENTRY)&_ZN6S782C43v76Ev,
  (VTBL_ENTRY)&_ZN6S782C43v77Ev,
  (VTBL_ENTRY)&_ZN6S782C43v78Ev,
  (VTBL_ENTRY)&_ZN6S782C43v79Ev,
  (VTBL_ENTRY)&_ZN6S782C43v80Ev,
  (VTBL_ENTRY)&_ZN6S782C43v81Ev,
  (VTBL_ENTRY)&_ZN6S782C43v82Ev,
  (VTBL_ENTRY)&_ZN6S782C43v83Ev,
  (VTBL_ENTRY)&_ZN6S782C43v84Ev,
  (VTBL_ENTRY)&_ZN6S782C43v85Ev,
  (VTBL_ENTRY)&_ZN6S782C43v86Ev,
  (VTBL_ENTRY)&_ZN6S782C43v87Ev,
  (VTBL_ENTRY)&_ZN6S782C43v88Ev,
  (VTBL_ENTRY)&_ZN6S782C43v89Ev,
  (VTBL_ENTRY)&_ZN6S782C43v90Ev,
  (VTBL_ENTRY)&_ZN6S782C43v91Ev,
  (VTBL_ENTRY)&_ZN6S782C43v92Ev,
  (VTBL_ENTRY)&_ZN6S782C43v93Ev,
  (VTBL_ENTRY)&_ZN6S782C43v94Ev,
  (VTBL_ENTRY)&_ZN6S782C43v95Ev,
  (VTBL_ENTRY)&_ZN6S782C43v96Ev,
  (VTBL_ENTRY)&_ZN6S782C43v97Ev,
  (VTBL_ENTRY)&_ZN6S782C43v98Ev,
  (VTBL_ENTRY)&_ZN6S782C43v99Ev,
  (VTBL_ENTRY)&_ZN6S782C44v100Ev,
  (VTBL_ENTRY)&_ZN6S782C44v101Ev,
  (VTBL_ENTRY)&_ZN6S782C44v102Ev,
  (VTBL_ENTRY)&_ZN6S782C44v103Ev,
  (VTBL_ENTRY)&_ZN6S782C44v104Ev,
  (VTBL_ENTRY)&_ZN6S782C44v105Ev,
  (VTBL_ENTRY)&_ZN6S782C44v106Ev,
  (VTBL_ENTRY)&_ZN6S782C44v107Ev,
  (VTBL_ENTRY)&_ZN6S782C44v108Ev,
  (VTBL_ENTRY)&_ZN6S782C44v109Ev,
  (VTBL_ENTRY)&_ZN6S782C44v110Ev,
  (VTBL_ENTRY)&_ZN6S782C44v111Ev,
  (VTBL_ENTRY)&_ZN6S782C44v112Ev,
  (VTBL_ENTRY)&_ZN6S782C44v113Ev,
  (VTBL_ENTRY)&_ZN6S782C44v114Ev,
  (VTBL_ENTRY)&_ZN6S782C44v115Ev,
  (VTBL_ENTRY)&_ZN6S782C44v116Ev,
  (VTBL_ENTRY)&_ZN6S782C44v117Ev,
  (VTBL_ENTRY)&_ZN6S782C44v118Ev,
  (VTBL_ENTRY)&_ZN6S782C44v119Ev,
  (VTBL_ENTRY)&_ZN6S782C44v120Ev,
  (VTBL_ENTRY)&_ZN6S782C44v121Ev,
  (VTBL_ENTRY)&_ZN6S782C44v122Ev,
  (VTBL_ENTRY)&_ZN6S782C44v123Ev,
  (VTBL_ENTRY)&_ZN6S782C44v124Ev,
  (VTBL_ENTRY)&_ZN6S782C44v125Ev,
  (VTBL_ENTRY)&_ZN6S782C34v126Ev,
  (VTBL_ENTRY)&_ZN6S782C34v127Ev,
  (VTBL_ENTRY)&_ZN6S782C34v128Ev,
  (VTBL_ENTRY)&_ZN6S782C34v129Ev,
  (VTBL_ENTRY)&_ZN6S782C34v130Ev,
  (VTBL_ENTRY)&_ZN6S782C34v131Ev,
  (VTBL_ENTRY)&_ZN6S782C34v132Ev,
  (VTBL_ENTRY)&_ZN6S782C34v133Ev,
  (VTBL_ENTRY)&_ZN6S782C34v134Ev,
  (VTBL_ENTRY)&_ZN6S782C34v135Ev,
  (VTBL_ENTRY)&_ZN6S782C34v136Ev,
  (VTBL_ENTRY)&_ZN6S782C34v137Ev,
  (VTBL_ENTRY)&_ZN6S782C34v138Ev,
  (VTBL_ENTRY)&_ZN6S782C34v139Ev,
  (VTBL_ENTRY)&_ZN6S782C34v140Ev,
  (VTBL_ENTRY)&_ZN6S782C34v141Ev,
  (VTBL_ENTRY)&_ZN6S782C34v142Ev,
  (VTBL_ENTRY)&_ZN6S782C34v143Ev,
  (VTBL_ENTRY)&_ZN6S782C24v144Ev,
};
extern VTBL_ENTRY _ZTI6S782C2[];
extern  VTBL_ENTRY _ZTV6S782C2[];
Class_Descriptor cd_S782C2 = {  "S782C2", // class name
  bases_S782C2, 3,
  &(vtc_S782C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S782C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S782C2),145, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S782C1  : S782C2 {
  virtual void  v1(); // _ZN6S782C12v1Ev
  virtual void  v2(); // _ZN6S782C12v2Ev
  virtual void  v3(); // _ZN6S782C12v3Ev
  ~S782C1(); // tgen
  S782C1(); // tgen
};
//SIG(1 S782C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m Fp Fi} 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 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} v1 v2 v3}


void  S782C1 ::v1(){vfunc_called(this, "_ZN6S782C12v1Ev");}
void  S782C1 ::v2(){vfunc_called(this, "_ZN6S782C12v2Ev");}
void  S782C1 ::v3(){vfunc_called(this, "_ZN6S782C12v3Ev");}
S782C1 ::~S782C1(){ note_dtor("S782C1", this);} // tgen
S782C1 ::S782C1(){ note_ctor("S782C1", this);} // tgen

static void Test_S782C1()
{
  extern Class_Descriptor cd_S782C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S782C1, buf);
    S782C1 *dp, &lv = *(dp=new (buf) S782C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S782C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S782C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S782C4*)(S782C3*)(S782C2*), 0, "S782C1");
    check_base_class_offset(lv, (S782C4*)(S782C3*)(S782C2*), 0, "S782C1");
    check_base_class_offset(lv, (S782C3*)(S782C2*), 0, "S782C1");
    check_base_class_offset(lv, (S782C2*), 0, "S782C1");
    test_class_info(&lv, &cd_S782C1);
    dp->~S782C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS782C1(Test_S782C1, "S782C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S782C1C1Ev();
extern void _ZN6S782C1D1Ev();
Name_Map name_map_S782C1[] = {
  NSPAIR(_ZN6S782C1C1Ev),
  NSPAIR(_ZN6S782C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S782C4;
extern VTBL_ENTRY _ZTI6S782C4[];
extern  VTBL_ENTRY _ZTV6S782C4[];
extern Class_Descriptor cd_S782C3;
extern VTBL_ENTRY _ZTI6S782C3[];
extern  VTBL_ENTRY _ZTV6S782C3[];
extern Class_Descriptor cd_S782C2;
extern VTBL_ENTRY _ZTI6S782C2[];
extern  VTBL_ENTRY _ZTV6S782C2[];
static Base_Class bases_S782C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S782C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S782C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S782C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S782C1[];
extern void _ZN6S782C1D1Ev();
extern void _ZN6S782C1D0Ev();
extern void _ZN6S782C42v4Ev();
extern void _ZN6S782C42v5Ev();
extern void _ZN6S782C42v6Ev();
extern void _ZN6S782C42v7Ev();
extern void _ZN6S782C42v8Ev();
extern void _ZN6S782C42v9Ev();
extern void _ZN6S782C43v10Ev();
extern void _ZN6S782C43v11Ev();
extern void _ZN6S782C43v12Ev();
extern void _ZN6S782C43v13Ev();
extern void _ZN6S782C43v14Ev();
extern void _ZN6S782C43v15Ev();
extern void _ZN6S782C43v16Ev();
extern void _ZN6S782C43v17Ev();
extern void _ZN6S782C43v18Ev();
extern void _ZN6S782C43v19Ev();
extern void _ZN6S782C43v20Ev();
extern void _ZN6S782C43v21Ev();
extern void _ZN6S782C43v22Ev();
extern void _ZN6S782C43v23Ev();
extern void _ZN6S782C43v24Ev();
extern void _ZN6S782C43v25Ev();
extern void _ZN6S782C43v26Ev();
extern void _ZN6S782C43v27Ev();
extern void _ZN6S782C43v28Ev();
extern void _ZN6S782C43v29Ev();
extern void _ZN6S782C43v30Ev();
extern void _ZN6S782C43v31Ev();
extern void _ZN6S782C43v32Ev();
extern void _ZN6S782C43v33Ev();
extern void _ZN6S782C43v34Ev();
extern void _ZN6S782C43v35Ev();
extern void _ZN6S782C43v36Ev();
extern void _ZN6S782C43v37Ev();
extern void _ZN6S782C43v38Ev();
extern void _ZN6S782C43v39Ev();
extern void _ZN6S782C43v40Ev();
extern void _ZN6S782C43v41Ev();
extern void _ZN6S782C43v42Ev();
extern void _ZN6S782C43v43Ev();
extern void _ZN6S782C43v44Ev();
extern void _ZN6S782C43v45Ev();
extern void _ZN6S782C43v46Ev();
extern void _ZN6S782C43v47Ev();
extern void _ZN6S782C43v48Ev();
extern void _ZN6S782C43v49Ev();
extern void _ZN6S782C43v50Ev();
extern void _ZN6S782C43v51Ev();
extern void _ZN6S782C43v52Ev();
extern void _ZN6S782C43v53Ev();
extern void _ZN6S782C43v54Ev();
extern void _ZN6S782C43v55Ev();
extern void _ZN6S782C43v56Ev();
extern void _ZN6S782C43v57Ev();
extern void _ZN6S782C43v58Ev();
extern void _ZN6S782C43v59Ev();
extern void _ZN6S782C43v60Ev();
extern void _ZN6S782C43v61Ev();
extern void _ZN6S782C43v62Ev();
extern void _ZN6S782C43v63Ev();
extern void _ZN6S782C43v64Ev();
extern void _ZN6S782C43v65Ev();
extern void _ZN6S782C43v66Ev();
extern void _ZN6S782C43v67Ev();
extern void _ZN6S782C43v68Ev();
extern void _ZN6S782C43v69Ev();
extern void _ZN6S782C43v70Ev();
extern void _ZN6S782C43v71Ev();
extern void _ZN6S782C43v72Ev();
extern void _ZN6S782C43v73Ev();
extern void _ZN6S782C43v74Ev();
extern void _ZN6S782C43v75Ev();
extern void _ZN6S782C43v76Ev();
extern void _ZN6S782C43v77Ev();
extern void _ZN6S782C43v78Ev();
extern void _ZN6S782C43v79Ev();
extern void _ZN6S782C43v80Ev();
extern void _ZN6S782C43v81Ev();
extern void _ZN6S782C43v82Ev();
extern void _ZN6S782C43v83Ev();
extern void _ZN6S782C43v84Ev();
extern void _ZN6S782C43v85Ev();
extern void _ZN6S782C43v86Ev();
extern void _ZN6S782C43v87Ev();
extern void _ZN6S782C43v88Ev();
extern void _ZN6S782C43v89Ev();
extern void _ZN6S782C43v90Ev();
extern void _ZN6S782C43v91Ev();
extern void _ZN6S782C43v92Ev();
extern void _ZN6S782C43v93Ev();
extern void _ZN6S782C43v94Ev();
extern void _ZN6S782C43v95Ev();
extern void _ZN6S782C43v96Ev();
extern void _ZN6S782C43v97Ev();
extern void _ZN6S782C43v98Ev();
extern void _ZN6S782C43v99Ev();
extern void _ZN6S782C44v100Ev();
extern void _ZN6S782C44v101Ev();
extern void _ZN6S782C44v102Ev();
extern void _ZN6S782C44v103Ev();
extern void _ZN6S782C44v104Ev();
extern void _ZN6S782C44v105Ev();
extern void _ZN6S782C44v106Ev();
extern void _ZN6S782C44v107Ev();
extern void _ZN6S782C44v108Ev();
extern void _ZN6S782C44v109Ev();
extern void _ZN6S782C44v110Ev();
extern void _ZN6S782C44v111Ev();
extern void _ZN6S782C44v112Ev();
extern void _ZN6S782C44v113Ev();
extern void _ZN6S782C44v114Ev();
extern void _ZN6S782C44v115Ev();
extern void _ZN6S782C44v116Ev();
extern void _ZN6S782C44v117Ev();
extern void _ZN6S782C44v118Ev();
extern void _ZN6S782C44v119Ev();
extern void _ZN6S782C44v120Ev();
extern void _ZN6S782C44v121Ev();
extern void _ZN6S782C44v122Ev();
extern void _ZN6S782C44v123Ev();
extern void _ZN6S782C44v124Ev();
extern void _ZN6S782C44v125Ev();
extern void _ZN6S782C34v126Ev();
extern void _ZN6S782C34v127Ev();
extern void _ZN6S782C34v128Ev();
extern void _ZN6S782C34v129Ev();
extern void _ZN6S782C34v130Ev();
extern void _ZN6S782C34v131Ev();
extern void _ZN6S782C34v132Ev();
extern void _ZN6S782C34v133Ev();
extern void _ZN6S782C34v134Ev();
extern void _ZN6S782C34v135Ev();
extern void _ZN6S782C34v136Ev();
extern void _ZN6S782C34v137Ev();
extern void _ZN6S782C34v138Ev();
extern void _ZN6S782C34v139Ev();
extern void _ZN6S782C34v140Ev();
extern void _ZN6S782C34v141Ev();
extern void _ZN6S782C34v142Ev();
extern void _ZN6S782C34v143Ev();
extern void _ZN6S782C24v144Ev();
extern void _ZN6S782C12v1Ev();
extern void _ZN6S782C12v2Ev();
extern void _ZN6S782C12v3Ev();
static  VTBL_ENTRY vtc_S782C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S782C1[0]),
  (VTBL_ENTRY)&_ZN6S782C1D1Ev,
  (VTBL_ENTRY)&_ZN6S782C1D0Ev,
  (VTBL_ENTRY)&_ZN6S782C42v4Ev,
  (VTBL_ENTRY)&_ZN6S782C42v5Ev,
  (VTBL_ENTRY)&_ZN6S782C42v6Ev,
  (VTBL_ENTRY)&_ZN6S782C42v7Ev,
  (VTBL_ENTRY)&_ZN6S782C42v8Ev,
  (VTBL_ENTRY)&_ZN6S782C42v9Ev,
  (VTBL_ENTRY)&_ZN6S782C43v10Ev,
  (VTBL_ENTRY)&_ZN6S782C43v11Ev,
  (VTBL_ENTRY)&_ZN6S782C43v12Ev,
  (VTBL_ENTRY)&_ZN6S782C43v13Ev,
  (VTBL_ENTRY)&_ZN6S782C43v14Ev,
  (VTBL_ENTRY)&_ZN6S782C43v15Ev,
  (VTBL_ENTRY)&_ZN6S782C43v16Ev,
  (VTBL_ENTRY)&_ZN6S782C43v17Ev,
  (VTBL_ENTRY)&_ZN6S782C43v18Ev,
  (VTBL_ENTRY)&_ZN6S782C43v19Ev,
  (VTBL_ENTRY)&_ZN6S782C43v20Ev,
  (VTBL_ENTRY)&_ZN6S782C43v21Ev,
  (VTBL_ENTRY)&_ZN6S782C43v22Ev,
  (VTBL_ENTRY)&_ZN6S782C43v23Ev,
  (VTBL_ENTRY)&_ZN6S782C43v24Ev,
  (VTBL_ENTRY)&_ZN6S782C43v25Ev,
  (VTBL_ENTRY)&_ZN6S782C43v26Ev,
  (VTBL_ENTRY)&_ZN6S782C43v27Ev,
  (VTBL_ENTRY)&_ZN6S782C43v28Ev,
  (VTBL_ENTRY)&_ZN6S782C43v29Ev,
  (VTBL_ENTRY)&_ZN6S782C43v30Ev,
  (VTBL_ENTRY)&_ZN6S782C43v31Ev,
  (VTBL_ENTRY)&_ZN6S782C43v32Ev,
  (VTBL_ENTRY)&_ZN6S782C43v33Ev,
  (VTBL_ENTRY)&_ZN6S782C43v34Ev,
  (VTBL_ENTRY)&_ZN6S782C43v35Ev,
  (VTBL_ENTRY)&_ZN6S782C43v36Ev,
  (VTBL_ENTRY)&_ZN6S782C43v37Ev,
  (VTBL_ENTRY)&_ZN6S782C43v38Ev,
  (VTBL_ENTRY)&_ZN6S782C43v39Ev,
  (VTBL_ENTRY)&_ZN6S782C43v40Ev,
  (VTBL_ENTRY)&_ZN6S782C43v41Ev,
  (VTBL_ENTRY)&_ZN6S782C43v42Ev,
  (VTBL_ENTRY)&_ZN6S782C43v43Ev,
  (VTBL_ENTRY)&_ZN6S782C43v44Ev,
  (VTBL_ENTRY)&_ZN6S782C43v45Ev,
  (VTBL_ENTRY)&_ZN6S782C43v46Ev,
  (VTBL_ENTRY)&_ZN6S782C43v47Ev,
  (VTBL_ENTRY)&_ZN6S782C43v48Ev,
  (VTBL_ENTRY)&_ZN6S782C43v49Ev,
  (VTBL_ENTRY)&_ZN6S782C43v50Ev,
  (VTBL_ENTRY)&_ZN6S782C43v51Ev,
  (VTBL_ENTRY)&_ZN6S782C43v52Ev,
  (VTBL_ENTRY)&_ZN6S782C43v53Ev,
  (VTBL_ENTRY)&_ZN6S782C43v54Ev,
  (VTBL_ENTRY)&_ZN6S782C43v55Ev,
  (VTBL_ENTRY)&_ZN6S782C43v56Ev,
  (VTBL_ENTRY)&_ZN6S782C43v57Ev,
  (VTBL_ENTRY)&_ZN6S782C43v58Ev,
  (VTBL_ENTRY)&_ZN6S782C43v59Ev,
  (VTBL_ENTRY)&_ZN6S782C43v60Ev,
  (VTBL_ENTRY)&_ZN6S782C43v61Ev,
  (VTBL_ENTRY)&_ZN6S782C43v62Ev,
  (VTBL_ENTRY)&_ZN6S782C43v63Ev,
  (VTBL_ENTRY)&_ZN6S782C43v64Ev,
  (VTBL_ENTRY)&_ZN6S782C43v65Ev,
  (VTBL_ENTRY)&_ZN6S782C43v66Ev,
  (VTBL_ENTRY)&_ZN6S782C43v67Ev,
  (VTBL_ENTRY)&_ZN6S782C43v68Ev,
  (VTBL_ENTRY)&_ZN6S782C43v69Ev,
  (VTBL_ENTRY)&_ZN6S782C43v70Ev,
  (VTBL_ENTRY)&_ZN6S782C43v71Ev,
  (VTBL_ENTRY)&_ZN6S782C43v72Ev,
  (VTBL_ENTRY)&_ZN6S782C43v73Ev,
  (VTBL_ENTRY)&_ZN6S782C43v74Ev,
  (VTBL_ENTRY)&_ZN6S782C43v75Ev,
  (VTBL_ENTRY)&_ZN6S782C43v76Ev,
  (VTBL_ENTRY)&_ZN6S782C43v77Ev,
  (VTBL_ENTRY)&_ZN6S782C43v78Ev,
  (VTBL_ENTRY)&_ZN6S782C43v79Ev,
  (VTBL_ENTRY)&_ZN6S782C43v80Ev,
  (VTBL_ENTRY)&_ZN6S782C43v81Ev,
  (VTBL_ENTRY)&_ZN6S782C43v82Ev,
  (VTBL_ENTRY)&_ZN6S782C43v83Ev,
  (VTBL_ENTRY)&_ZN6S782C43v84Ev,
  (VTBL_ENTRY)&_ZN6S782C43v85Ev,
  (VTBL_ENTRY)&_ZN6S782C43v86Ev,
  (VTBL_ENTRY)&_ZN6S782C43v87Ev,
  (VTBL_ENTRY)&_ZN6S782C43v88Ev,
  (VTBL_ENTRY)&_ZN6S782C43v89Ev,
  (VTBL_ENTRY)&_ZN6S782C43v90Ev,
  (VTBL_ENTRY)&_ZN6S782C43v91Ev,
  (VTBL_ENTRY)&_ZN6S782C43v92Ev,
  (VTBL_ENTRY)&_ZN6S782C43v93Ev,
  (VTBL_ENTRY)&_ZN6S782C43v94Ev,
  (VTBL_ENTRY)&_ZN6S782C43v95Ev,
  (VTBL_ENTRY)&_ZN6S782C43v96Ev,
  (VTBL_ENTRY)&_ZN6S782C43v97Ev,
  (VTBL_ENTRY)&_ZN6S782C43v98Ev,
  (VTBL_ENTRY)&_ZN6S782C43v99Ev,
  (VTBL_ENTRY)&_ZN6S782C44v100Ev,
  (VTBL_ENTRY)&_ZN6S782C44v101Ev,
  (VTBL_ENTRY)&_ZN6S782C44v102Ev,
  (VTBL_ENTRY)&_ZN6S782C44v103Ev,
  (VTBL_ENTRY)&_ZN6S782C44v104Ev,
  (VTBL_ENTRY)&_ZN6S782C44v105Ev,
  (VTBL_ENTRY)&_ZN6S782C44v106Ev,
  (VTBL_ENTRY)&_ZN6S782C44v107Ev,
  (VTBL_ENTRY)&_ZN6S782C44v108Ev,
  (VTBL_ENTRY)&_ZN6S782C44v109Ev,
  (VTBL_ENTRY)&_ZN6S782C44v110Ev,
  (VTBL_ENTRY)&_ZN6S782C44v111Ev,
  (VTBL_ENTRY)&_ZN6S782C44v112Ev,
  (VTBL_ENTRY)&_ZN6S782C44v113Ev,
  (VTBL_ENTRY)&_ZN6S782C44v114Ev,
  (VTBL_ENTRY)&_ZN6S782C44v115Ev,
  (VTBL_ENTRY)&_ZN6S782C44v116Ev,
  (VTBL_ENTRY)&_ZN6S782C44v117Ev,
  (VTBL_ENTRY)&_ZN6S782C44v118Ev,
  (VTBL_ENTRY)&_ZN6S782C44v119Ev,
  (VTBL_ENTRY)&_ZN6S782C44v120Ev,
  (VTBL_ENTRY)&_ZN6S782C44v121Ev,
  (VTBL_ENTRY)&_ZN6S782C44v122Ev,
  (VTBL_ENTRY)&_ZN6S782C44v123Ev,
  (VTBL_ENTRY)&_ZN6S782C44v124Ev,
  (VTBL_ENTRY)&_ZN6S782C44v125Ev,
  (VTBL_ENTRY)&_ZN6S782C34v126Ev,
  (VTBL_ENTRY)&_ZN6S782C34v127Ev,
  (VTBL_ENTRY)&_ZN6S782C34v128Ev,
  (VTBL_ENTRY)&_ZN6S782C34v129Ev,
  (VTBL_ENTRY)&_ZN6S782C34v130Ev,
  (VTBL_ENTRY)&_ZN6S782C34v131Ev,
  (VTBL_ENTRY)&_ZN6S782C34v132Ev,
  (VTBL_ENTRY)&_ZN6S782C34v133Ev,
  (VTBL_ENTRY)&_ZN6S782C34v134Ev,
  (VTBL_ENTRY)&_ZN6S782C34v135Ev,
  (VTBL_ENTRY)&_ZN6S782C34v136Ev,
  (VTBL_ENTRY)&_ZN6S782C34v137Ev,
  (VTBL_ENTRY)&_ZN6S782C34v138Ev,
  (VTBL_ENTRY)&_ZN6S782C34v139Ev,
  (VTBL_ENTRY)&_ZN6S782C34v140Ev,
  (VTBL_ENTRY)&_ZN6S782C34v141Ev,
  (VTBL_ENTRY)&_ZN6S782C34v142Ev,
  (VTBL_ENTRY)&_ZN6S782C34v143Ev,
  (VTBL_ENTRY)&_ZN6S782C24v144Ev,
  (VTBL_ENTRY)&_ZN6S782C12v1Ev,
  (VTBL_ENTRY)&_ZN6S782C12v2Ev,
  (VTBL_ENTRY)&_ZN6S782C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S782C1[];
extern  VTBL_ENTRY _ZTV6S782C1[];
Class_Descriptor cd_S782C1 = {  "S782C1", // class name
  bases_S782C1, 4,
  &(vtc_S782C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S782C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S782C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1811C3  : S785C5_nt {
  virtual void  v5(); // _ZN7S1811C32v5Ev
  virtual void  v6(); // _ZN7S1811C32v6Ev
  virtual void  v7(); // _ZN7S1811C32v7Ev
  virtual void  v8(); // _ZN7S1811C32v8Ev
  virtual void  v9(); // _ZN7S1811C32v9Ev
  virtual void  v10(); // _ZN7S1811C33v10Ev
  virtual void  v11(); // _ZN7S1811C33v11Ev
  virtual void  v12(); // _ZN7S1811C33v12Ev
  virtual void  v13(); // _ZN7S1811C33v13Ev
  virtual void  v14(); // _ZN7S1811C33v14Ev
  virtual void  v15(); // _ZN7S1811C33v15Ev
  virtual void  v16(); // _ZN7S1811C33v16Ev
  virtual void  v17(); // _ZN7S1811C33v17Ev
  virtual void  v18(); // _ZN7S1811C33v18Ev
  virtual void  v19(); // _ZN7S1811C33v19Ev
  virtual void  v20(); // _ZN7S1811C33v20Ev
  virtual void  v21(); // _ZN7S1811C33v21Ev
  virtual void  v22(); // _ZN7S1811C33v22Ev
  virtual void  v23(); // _ZN7S1811C33v23Ev
  virtual void  v24(); // _ZN7S1811C33v24Ev
  virtual void  v25(); // _ZN7S1811C33v25Ev
  virtual void  v26(); // _ZN7S1811C33v26Ev
  virtual void  v27(); // _ZN7S1811C33v27Ev
  virtual void  v28(); // _ZN7S1811C33v28Ev
  virtual void  v29(); // _ZN7S1811C33v29Ev
  virtual void  v30(); // _ZN7S1811C33v30Ev
  virtual void  v31(); // _ZN7S1811C33v31Ev
  virtual void  v32(); // _ZN7S1811C33v32Ev
  virtual void  v33(); // _ZN7S1811C33v33Ev
  virtual void  v34(); // _ZN7S1811C33v34Ev
  virtual void  v35(); // _ZN7S1811C33v35Ev
  virtual void  v36(); // _ZN7S1811C33v36Ev
  virtual void  v37(); // _ZN7S1811C33v37Ev
  virtual void  v38(); // _ZN7S1811C33v38Ev
  virtual void  v39(); // _ZN7S1811C33v39Ev
  virtual void  v40(); // _ZN7S1811C33v40Ev
  virtual void  v41(); // _ZN7S1811C33v41Ev
  virtual void  v42(); // _ZN7S1811C33v42Ev
  virtual void  v43(); // _ZN7S1811C33v43Ev
  virtual void  v44(); // _ZN7S1811C33v44Ev
  virtual void  v45(); // _ZN7S1811C33v45Ev
  virtual void  v46(); // _ZN7S1811C33v46Ev
  virtual void  v47(); // _ZN7S1811C33v47Ev
  virtual void  v48(); // _ZN7S1811C33v48Ev
  virtual void  v49(); // _ZN7S1811C33v49Ev
  virtual void  v50(); // _ZN7S1811C33v50Ev
  virtual void  v51(); // _ZN7S1811C33v51Ev
  virtual void  v52(); // _ZN7S1811C33v52Ev
  virtual void  v53(); // _ZN7S1811C33v53Ev
  virtual void  v54(); // _ZN7S1811C33v54Ev
  virtual void  v55(); // _ZN7S1811C33v55Ev
  virtual void  v56(); // _ZN7S1811C33v56Ev
  virtual void  v57(); // _ZN7S1811C33v57Ev
  virtual void  v58(); // _ZN7S1811C33v58Ev
  virtual void  v59(); // _ZN7S1811C33v59Ev
  virtual void  v60(); // _ZN7S1811C33v60Ev
  virtual void  v61(); // _ZN7S1811C33v61Ev
  virtual void  v62(); // _ZN7S1811C33v62Ev
  virtual void  v63(); // _ZN7S1811C33v63Ev
  virtual void  v64(); // _ZN7S1811C33v64Ev
  virtual void  v65(); // _ZN7S1811C33v65Ev
  virtual void  v66(); // _ZN7S1811C33v66Ev
  virtual void  v67(); // _ZN7S1811C33v67Ev
  virtual void  v68(); // _ZN7S1811C33v68Ev
  virtual void  v69(); // _ZN7S1811C33v69Ev
  virtual void  v70(); // _ZN7S1811C33v70Ev
  virtual void  v71(); // _ZN7S1811C33v71Ev
  virtual void  v72(); // _ZN7S1811C33v72Ev
  virtual void  v73(); // _ZN7S1811C33v73Ev
  virtual void  v74(); // _ZN7S1811C33v74Ev
  virtual void  v75(); // _ZN7S1811C33v75Ev
  virtual void  v76(); // _ZN7S1811C33v76Ev
  virtual void  v77(); // _ZN7S1811C33v77Ev
  virtual void  v78(); // _ZN7S1811C33v78Ev
  virtual void  v79(); // _ZN7S1811C33v79Ev
  virtual void  v80(); // _ZN7S1811C33v80Ev
  virtual void  v81(); // _ZN7S1811C33v81Ev
  virtual void  v82(); // _ZN7S1811C33v82Ev
  virtual void  v83(); // _ZN7S1811C33v83Ev
  virtual void  v84(); // _ZN7S1811C33v84Ev
  virtual void  v85(); // _ZN7S1811C33v85Ev
  virtual void  v86(); // _ZN7S1811C33v86Ev
  virtual void  v87(); // _ZN7S1811C33v87Ev
  virtual void  v88(); // _ZN7S1811C33v88Ev
  virtual void  v89(); // _ZN7S1811C33v89Ev
  virtual void  v90(); // _ZN7S1811C33v90Ev
  virtual void  v91(); // _ZN7S1811C33v91Ev
  virtual void  v92(); // _ZN7S1811C33v92Ev
  virtual void  v93(); // _ZN7S1811C33v93Ev
  virtual void  v94(); // _ZN7S1811C33v94Ev
  virtual void  v95(); // _ZN7S1811C33v95Ev
  virtual void  v96(); // _ZN7S1811C33v96Ev
  virtual void  v97(); // _ZN7S1811C33v97Ev
  virtual void  v98(); // _ZN7S1811C33v98Ev
  virtual void  v99(); // _ZN7S1811C33v99Ev
  virtual void  v100(); // _ZN7S1811C34v100Ev
  virtual void  v101(); // _ZN7S1811C34v101Ev
  virtual void  v102(); // _ZN7S1811C34v102Ev
  virtual void  v103(); // _ZN7S1811C34v103Ev
  virtual void  v104(); // _ZN7S1811C34v104Ev
  virtual void  v105(); // _ZN7S1811C34v105Ev
  virtual void  v106(); // _ZN7S1811C34v106Ev
  virtual void  v107(); // _ZN7S1811C34v107Ev
  virtual void  v108(); // _ZN7S1811C34v108Ev
  virtual void  v109(); // _ZN7S1811C34v109Ev
  virtual void  v110(); // _ZN7S1811C34v110Ev
  virtual void  v111(); // _ZN7S1811C34v111Ev
  virtual void  v112(); // _ZN7S1811C34v112Ev
  virtual void  v113(); // _ZN7S1811C34v113Ev
  virtual void  v114(); // _ZN7S1811C34v114Ev
  virtual void  v115(); // _ZN7S1811C34v115Ev
  virtual void  v116(); // _ZN7S1811C34v116Ev
  virtual void  v117(); // _ZN7S1811C34v117Ev
  virtual void  v118(); // _ZN7S1811C34v118Ev
  virtual void  v119(); // _ZN7S1811C34v119Ev
  virtual void  v120(); // _ZN7S1811C34v120Ev
  virtual void  v121(); // _ZN7S1811C34v121Ev
  virtual void  v122(); // _ZN7S1811C34v122Ev
  virtual void  v123(); // _ZN7S1811C34v123Ev
  virtual void  v124(); // _ZN7S1811C34v124Ev
  virtual void  v125(); // _ZN7S1811C34v125Ev
  virtual void  v126(); // _ZN7S1811C34v126Ev
  ~S1811C3(); // tgen
  S1811C3(); // tgen
};
//SIG(-1 S1811C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1811C3 ::v5(){vfunc_called(this, "_ZN7S1811C32v5Ev");}
void  S1811C3 ::v6(){vfunc_called(this, "_ZN7S1811C32v6Ev");}
void  S1811C3 ::v7(){vfunc_called(this, "_ZN7S1811C32v7Ev");}
void  S1811C3 ::v8(){vfunc_called(this, "_ZN7S1811C32v8Ev");}
void  S1811C3 ::v9(){vfunc_called(this, "_ZN7S1811C32v9Ev");}
void  S1811C3 ::v10(){vfunc_called(this, "_ZN7S1811C33v10Ev");}
void  S1811C3 ::v11(){vfunc_called(this, "_ZN7S1811C33v11Ev");}
void  S1811C3 ::v12(){vfunc_called(this, "_ZN7S1811C33v12Ev");}
void  S1811C3 ::v13(){vfunc_called(this, "_ZN7S1811C33v13Ev");}
void  S1811C3 ::v14(){vfunc_called(this, "_ZN7S1811C33v14Ev");}
void  S1811C3 ::v15(){vfunc_called(this, "_ZN7S1811C33v15Ev");}
void  S1811C3 ::v16(){vfunc_called(this, "_ZN7S1811C33v16Ev");}
void  S1811C3 ::v17(){vfunc_called(this, "_ZN7S1811C33v17Ev");}
void  S1811C3 ::v18(){vfunc_called(this, "_ZN7S1811C33v18Ev");}
void  S1811C3 ::v19(){vfunc_called(this, "_ZN7S1811C33v19Ev");}
void  S1811C3 ::v20(){vfunc_called(this, "_ZN7S1811C33v20Ev");}
void  S1811C3 ::v21(){vfunc_called(this, "_ZN7S1811C33v21Ev");}
void  S1811C3 ::v22(){vfunc_called(this, "_ZN7S1811C33v22Ev");}
void  S1811C3 ::v23(){vfunc_called(this, "_ZN7S1811C33v23Ev");}
void  S1811C3 ::v24(){vfunc_called(this, "_ZN7S1811C33v24Ev");}
void  S1811C3 ::v25(){vfunc_called(this, "_ZN7S1811C33v25Ev");}
void  S1811C3 ::v26(){vfunc_called(this, "_ZN7S1811C33v26Ev");}
void  S1811C3 ::v27(){vfunc_called(this, "_ZN7S1811C33v27Ev");}
void  S1811C3 ::v28(){vfunc_called(this, "_ZN7S1811C33v28Ev");}
void  S1811C3 ::v29(){vfunc_called(this, "_ZN7S1811C33v29Ev");}
void  S1811C3 ::v30(){vfunc_called(this, "_ZN7S1811C33v30Ev");}
void  S1811C3 ::v31(){vfunc_called(this, "_ZN7S1811C33v31Ev");}
void  S1811C3 ::v32(){vfunc_called(this, "_ZN7S1811C33v32Ev");}
void  S1811C3 ::v33(){vfunc_called(this, "_ZN7S1811C33v33Ev");}
void  S1811C3 ::v34(){vfunc_called(this, "_ZN7S1811C33v34Ev");}
void  S1811C3 ::v35(){vfunc_called(this, "_ZN7S1811C33v35Ev");}
void  S1811C3 ::v36(){vfunc_called(this, "_ZN7S1811C33v36Ev");}
void  S1811C3 ::v37(){vfunc_called(this, "_ZN7S1811C33v37Ev");}
void  S1811C3 ::v38(){vfunc_called(this, "_ZN7S1811C33v38Ev");}
void  S1811C3 ::v39(){vfunc_called(this, "_ZN7S1811C33v39Ev");}
void  S1811C3 ::v40(){vfunc_called(this, "_ZN7S1811C33v40Ev");}
void  S1811C3 ::v41(){vfunc_called(this, "_ZN7S1811C33v41Ev");}
void  S1811C3 ::v42(){vfunc_called(this, "_ZN7S1811C33v42Ev");}
void  S1811C3 ::v43(){vfunc_called(this, "_ZN7S1811C33v43Ev");}
void  S1811C3 ::v44(){vfunc_called(this, "_ZN7S1811C33v44Ev");}
void  S1811C3 ::v45(){vfunc_called(this, "_ZN7S1811C33v45Ev");}
void  S1811C3 ::v46(){vfunc_called(this, "_ZN7S1811C33v46Ev");}
void  S1811C3 ::v47(){vfunc_called(this, "_ZN7S1811C33v47Ev");}
void  S1811C3 ::v48(){vfunc_called(this, "_ZN7S1811C33v48Ev");}
void  S1811C3 ::v49(){vfunc_called(this, "_ZN7S1811C33v49Ev");}
void  S1811C3 ::v50(){vfunc_called(this, "_ZN7S1811C33v50Ev");}
void  S1811C3 ::v51(){vfunc_called(this, "_ZN7S1811C33v51Ev");}
void  S1811C3 ::v52(){vfunc_called(this, "_ZN7S1811C33v52Ev");}
void  S1811C3 ::v53(){vfunc_called(this, "_ZN7S1811C33v53Ev");}
void  S1811C3 ::v54(){vfunc_called(this, "_ZN7S1811C33v54Ev");}
void  S1811C3 ::v55(){vfunc_called(this, "_ZN7S1811C33v55Ev");}
void  S1811C3 ::v56(){vfunc_called(this, "_ZN7S1811C33v56Ev");}
void  S1811C3 ::v57(){vfunc_called(this, "_ZN7S1811C33v57Ev");}
void  S1811C3 ::v58(){vfunc_called(this, "_ZN7S1811C33v58Ev");}
void  S1811C3 ::v59(){vfunc_called(this, "_ZN7S1811C33v59Ev");}
void  S1811C3 ::v60(){vfunc_called(this, "_ZN7S1811C33v60Ev");}
void  S1811C3 ::v61(){vfunc_called(this, "_ZN7S1811C33v61Ev");}
void  S1811C3 ::v62(){vfunc_called(this, "_ZN7S1811C33v62Ev");}
void  S1811C3 ::v63(){vfunc_called(this, "_ZN7S1811C33v63Ev");}
void  S1811C3 ::v64(){vfunc_called(this, "_ZN7S1811C33v64Ev");}
void  S1811C3 ::v65(){vfunc_called(this, "_ZN7S1811C33v65Ev");}
void  S1811C3 ::v66(){vfunc_called(this, "_ZN7S1811C33v66Ev");}
void  S1811C3 ::v67(){vfunc_called(this, "_ZN7S1811C33v67Ev");}
void  S1811C3 ::v68(){vfunc_called(this, "_ZN7S1811C33v68Ev");}
void  S1811C3 ::v69(){vfunc_called(this, "_ZN7S1811C33v69Ev");}
void  S1811C3 ::v70(){vfunc_called(this, "_ZN7S1811C33v70Ev");}
void  S1811C3 ::v71(){vfunc_called(this, "_ZN7S1811C33v71Ev");}
void  S1811C3 ::v72(){vfunc_called(this, "_ZN7S1811C33v72Ev");}
void  S1811C3 ::v73(){vfunc_called(this, "_ZN7S1811C33v73Ev");}
void  S1811C3 ::v74(){vfunc_called(this, "_ZN7S1811C33v74Ev");}
void  S1811C3 ::v75(){vfunc_called(this, "_ZN7S1811C33v75Ev");}
void  S1811C3 ::v76(){vfunc_called(this, "_ZN7S1811C33v76Ev");}
void  S1811C3 ::v77(){vfunc_called(this, "_ZN7S1811C33v77Ev");}
void  S1811C3 ::v78(){vfunc_called(this, "_ZN7S1811C33v78Ev");}
void  S1811C3 ::v79(){vfunc_called(this, "_ZN7S1811C33v79Ev");}
void  S1811C3 ::v80(){vfunc_called(this, "_ZN7S1811C33v80Ev");}
void  S1811C3 ::v81(){vfunc_called(this, "_ZN7S1811C33v81Ev");}
void  S1811C3 ::v82(){vfunc_called(this, "_ZN7S1811C33v82Ev");}
void  S1811C3 ::v83(){vfunc_called(this, "_ZN7S1811C33v83Ev");}
void  S1811C3 ::v84(){vfunc_called(this, "_ZN7S1811C33v84Ev");}
void  S1811C3 ::v85(){vfunc_called(this, "_ZN7S1811C33v85Ev");}
void  S1811C3 ::v86(){vfunc_called(this, "_ZN7S1811C33v86Ev");}
void  S1811C3 ::v87(){vfunc_called(this, "_ZN7S1811C33v87Ev");}
void  S1811C3 ::v88(){vfunc_called(this, "_ZN7S1811C33v88Ev");}
void  S1811C3 ::v89(){vfunc_called(this, "_ZN7S1811C33v89Ev");}
void  S1811C3 ::v90(){vfunc_called(this, "_ZN7S1811C33v90Ev");}
void  S1811C3 ::v91(){vfunc_called(this, "_ZN7S1811C33v91Ev");}
void  S1811C3 ::v92(){vfunc_called(this, "_ZN7S1811C33v92Ev");}
void  S1811C3 ::v93(){vfunc_called(this, "_ZN7S1811C33v93Ev");}
void  S1811C3 ::v94(){vfunc_called(this, "_ZN7S1811C33v94Ev");}
void  S1811C3 ::v95(){vfunc_called(this, "_ZN7S1811C33v95Ev");}
void  S1811C3 ::v96(){vfunc_called(this, "_ZN7S1811C33v96Ev");}
void  S1811C3 ::v97(){vfunc_called(this, "_ZN7S1811C33v97Ev");}
void  S1811C3 ::v98(){vfunc_called(this, "_ZN7S1811C33v98Ev");}
void  S1811C3 ::v99(){vfunc_called(this, "_ZN7S1811C33v99Ev");}
void  S1811C3 ::v100(){vfunc_called(this, "_ZN7S1811C34v100Ev");}
void  S1811C3 ::v101(){vfunc_called(this, "_ZN7S1811C34v101Ev");}
void  S1811C3 ::v102(){vfunc_called(this, "_ZN7S1811C34v102Ev");}
void  S1811C3 ::v103(){vfunc_called(this, "_ZN7S1811C34v103Ev");}
void  S1811C3 ::v104(){vfunc_called(this, "_ZN7S1811C34v104Ev");}
void  S1811C3 ::v105(){vfunc_called(this, "_ZN7S1811C34v105Ev");}
void  S1811C3 ::v106(){vfunc_called(this, "_ZN7S1811C34v106Ev");}
void  S1811C3 ::v107(){vfunc_called(this, "_ZN7S1811C34v107Ev");}
void  S1811C3 ::v108(){vfunc_called(this, "_ZN7S1811C34v108Ev");}
void  S1811C3 ::v109(){vfunc_called(this, "_ZN7S1811C34v109Ev");}
void  S1811C3 ::v110(){vfunc_called(this, "_ZN7S1811C34v110Ev");}
void  S1811C3 ::v111(){vfunc_called(this, "_ZN7S1811C34v111Ev");}
void  S1811C3 ::v112(){vfunc_called(this, "_ZN7S1811C34v112Ev");}
void  S1811C3 ::v113(){vfunc_called(this, "_ZN7S1811C34v113Ev");}
void  S1811C3 ::v114(){vfunc_called(this, "_ZN7S1811C34v114Ev");}
void  S1811C3 ::v115(){vfunc_called(this, "_ZN7S1811C34v115Ev");}
void  S1811C3 ::v116(){vfunc_called(this, "_ZN7S1811C34v116Ev");}
void  S1811C3 ::v117(){vfunc_called(this, "_ZN7S1811C34v117Ev");}
void  S1811C3 ::v118(){vfunc_called(this, "_ZN7S1811C34v118Ev");}
void  S1811C3 ::v119(){vfunc_called(this, "_ZN7S1811C34v119Ev");}
void  S1811C3 ::v120(){vfunc_called(this, "_ZN7S1811C34v120Ev");}
void  S1811C3 ::v121(){vfunc_called(this, "_ZN7S1811C34v121Ev");}
void  S1811C3 ::v122(){vfunc_called(this, "_ZN7S1811C34v122Ev");}
void  S1811C3 ::v123(){vfunc_called(this, "_ZN7S1811C34v123Ev");}
void  S1811C3 ::v124(){vfunc_called(this, "_ZN7S1811C34v124Ev");}
void  S1811C3 ::v125(){vfunc_called(this, "_ZN7S1811C34v125Ev");}
void  S1811C3 ::v126(){vfunc_called(this, "_ZN7S1811C34v126Ev");}
S1811C3 ::~S1811C3(){ note_dtor("S1811C3", this);} // tgen
S1811C3 ::S1811C3(){ note_ctor("S1811C3", this);} // tgen

static void Test_S1811C3()
{
  extern Class_Descriptor cd_S1811C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1811C3, buf);
    S1811C3 *dp, &lv = *(dp=new (buf) S1811C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1811C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1811C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1811C3");
    test_class_info(&lv, &cd_S1811C3);
    dp->~S1811C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1811C3(Test_S1811C3, "S1811C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1811C3C1Ev();
extern void _ZN7S1811C3D1Ev();
Name_Map name_map_S1811C3[] = {
  NSPAIR(_ZN7S1811C3C1Ev),
  NSPAIR(_ZN7S1811C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1811C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1811C3[];
extern void _ZN7S1811C3D1Ev();
extern void _ZN7S1811C3D0Ev();
extern void _ZN7S1811C32v5Ev();
extern void _ZN7S1811C32v6Ev();
extern void _ZN7S1811C32v7Ev();
extern void _ZN7S1811C32v8Ev();
extern void _ZN7S1811C32v9Ev();
extern void _ZN7S1811C33v10Ev();
extern void _ZN7S1811C33v11Ev();
extern void _ZN7S1811C33v12Ev();
extern void _ZN7S1811C33v13Ev();
extern void _ZN7S1811C33v14Ev();
extern void _ZN7S1811C33v15Ev();
extern void _ZN7S1811C33v16Ev();
extern void _ZN7S1811C33v17Ev();
extern void _ZN7S1811C33v18Ev();
extern void _ZN7S1811C33v19Ev();
extern void _ZN7S1811C33v20Ev();
extern void _ZN7S1811C33v21Ev();
extern void _ZN7S1811C33v22Ev();
extern void _ZN7S1811C33v23Ev();
extern void _ZN7S1811C33v24Ev();
extern void _ZN7S1811C33v25Ev();
extern void _ZN7S1811C33v26Ev();
extern void _ZN7S1811C33v27Ev();
extern void _ZN7S1811C33v28Ev();
extern void _ZN7S1811C33v29Ev();
extern void _ZN7S1811C33v30Ev();
extern void _ZN7S1811C33v31Ev();
extern void _ZN7S1811C33v32Ev();
extern void _ZN7S1811C33v33Ev();
extern void _ZN7S1811C33v34Ev();
extern void _ZN7S1811C33v35Ev();
extern void _ZN7S1811C33v36Ev();
extern void _ZN7S1811C33v37Ev();
extern void _ZN7S1811C33v38Ev();
extern void _ZN7S1811C33v39Ev();
extern void _ZN7S1811C33v40Ev();
extern void _ZN7S1811C33v41Ev();
extern void _ZN7S1811C33v42Ev();
extern void _ZN7S1811C33v43Ev();
extern void _ZN7S1811C33v44Ev();
extern void _ZN7S1811C33v45Ev();
extern void _ZN7S1811C33v46Ev();
extern void _ZN7S1811C33v47Ev();
extern void _ZN7S1811C33v48Ev();
extern void _ZN7S1811C33v49Ev();
extern void _ZN7S1811C33v50Ev();
extern void _ZN7S1811C33v51Ev();
extern void _ZN7S1811C33v52Ev();
extern void _ZN7S1811C33v53Ev();
extern void _ZN7S1811C33v54Ev();
extern void _ZN7S1811C33v55Ev();
extern void _ZN7S1811C33v56Ev();
extern void _ZN7S1811C33v57Ev();
extern void _ZN7S1811C33v58Ev();
extern void _ZN7S1811C33v59Ev();
extern void _ZN7S1811C33v60Ev();
extern void _ZN7S1811C33v61Ev();
extern void _ZN7S1811C33v62Ev();
extern void _ZN7S1811C33v63Ev();
extern void _ZN7S1811C33v64Ev();
extern void _ZN7S1811C33v65Ev();
extern void _ZN7S1811C33v66Ev();
extern void _ZN7S1811C33v67Ev();
extern void _ZN7S1811C33v68Ev();
extern void _ZN7S1811C33v69Ev();
extern void _ZN7S1811C33v70Ev();
extern void _ZN7S1811C33v71Ev();
extern void _ZN7S1811C33v72Ev();
extern void _ZN7S1811C33v73Ev();
extern void _ZN7S1811C33v74Ev();
extern void _ZN7S1811C33v75Ev();
extern void _ZN7S1811C33v76Ev();
extern void _ZN7S1811C33v77Ev();
extern void _ZN7S1811C33v78Ev();
extern void _ZN7S1811C33v79Ev();
extern void _ZN7S1811C33v80Ev();
extern void _ZN7S1811C33v81Ev();
extern void _ZN7S1811C33v82Ev();
extern void _ZN7S1811C33v83Ev();
extern void _ZN7S1811C33v84Ev();
extern void _ZN7S1811C33v85Ev();
extern void _ZN7S1811C33v86Ev();
extern void _ZN7S1811C33v87Ev();
extern void _ZN7S1811C33v88Ev();
extern void _ZN7S1811C33v89Ev();
extern void _ZN7S1811C33v90Ev();
extern void _ZN7S1811C33v91Ev();
extern void _ZN7S1811C33v92Ev();
extern void _ZN7S1811C33v93Ev();
extern void _ZN7S1811C33v94Ev();
extern void _ZN7S1811C33v95Ev();
extern void _ZN7S1811C33v96Ev();
extern void _ZN7S1811C33v97Ev();
extern void _ZN7S1811C33v98Ev();
extern void _ZN7S1811C33v99Ev();
extern void _ZN7S1811C34v100Ev();
extern void _ZN7S1811C34v101Ev();
extern void _ZN7S1811C34v102Ev();
extern void _ZN7S1811C34v103Ev();
extern void _ZN7S1811C34v104Ev();
extern void _ZN7S1811C34v105Ev();
extern void _ZN7S1811C34v106Ev();
extern void _ZN7S1811C34v107Ev();
extern void _ZN7S1811C34v108Ev();
extern void _ZN7S1811C34v109Ev();
extern void _ZN7S1811C34v110Ev();
extern void _ZN7S1811C34v111Ev();
extern void _ZN7S1811C34v112Ev();
extern void _ZN7S1811C34v113Ev();
extern void _ZN7S1811C34v114Ev();
extern void _ZN7S1811C34v115Ev();
extern void _ZN7S1811C34v116Ev();
extern void _ZN7S1811C34v117Ev();
extern void _ZN7S1811C34v118Ev();
extern void _ZN7S1811C34v119Ev();
extern void _ZN7S1811C34v120Ev();
extern void _ZN7S1811C34v121Ev();
extern void _ZN7S1811C34v122Ev();
extern void _ZN7S1811C34v123Ev();
extern void _ZN7S1811C34v124Ev();
extern void _ZN7S1811C34v125Ev();
extern void _ZN7S1811C34v126Ev();
static  VTBL_ENTRY vtc_S1811C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1811C3[0]),
  (VTBL_ENTRY)&_ZN7S1811C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1811C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v126Ev,
};
extern VTBL_ENTRY _ZTI7S1811C3[];
extern  VTBL_ENTRY _ZTV7S1811C3[];
Class_Descriptor cd_S1811C3 = {  "S1811C3", // class name
  bases_S1811C3, 1,
  &(vtc_S1811C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1811C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1811C3),126, //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  S1811C2  : S1811C3 {
  virtual void  v127(); // _ZN7S1811C24v127Ev
  virtual void  v128(); // _ZN7S1811C24v128Ev
  virtual void  v129(); // _ZN7S1811C24v129Ev
  virtual void  v130(); // _ZN7S1811C24v130Ev
  virtual void  v131(); // _ZN7S1811C24v131Ev
  virtual void  v132(); // _ZN7S1811C24v132Ev
  virtual void  v133(); // _ZN7S1811C24v133Ev
  virtual void  v134(); // _ZN7S1811C24v134Ev
  virtual void  v135(); // _ZN7S1811C24v135Ev
  virtual void  v136(); // _ZN7S1811C24v136Ev
  virtual void  v137(); // _ZN7S1811C24v137Ev
  virtual void  v138(); // _ZN7S1811C24v138Ev
  virtual void  v139(); // _ZN7S1811C24v139Ev
  virtual void  v140(); // _ZN7S1811C24v140Ev
  virtual void  v141(); // _ZN7S1811C24v141Ev
  virtual void  v142(); // _ZN7S1811C24v142Ev
  virtual void  v143(); // _ZN7S1811C24v143Ev
  virtual void  v144(); // _ZN7S1811C24v144Ev
  ~S1811C2(); // tgen
  S1811C2(); // tgen
};
//SIG(-1 S1811C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1811C2 ::v127(){vfunc_called(this, "_ZN7S1811C24v127Ev");}
void  S1811C2 ::v128(){vfunc_called(this, "_ZN7S1811C24v128Ev");}
void  S1811C2 ::v129(){vfunc_called(this, "_ZN7S1811C24v129Ev");}
void  S1811C2 ::v130(){vfunc_called(this, "_ZN7S1811C24v130Ev");}
void  S1811C2 ::v131(){vfunc_called(this, "_ZN7S1811C24v131Ev");}
void  S1811C2 ::v132(){vfunc_called(this, "_ZN7S1811C24v132Ev");}
void  S1811C2 ::v133(){vfunc_called(this, "_ZN7S1811C24v133Ev");}
void  S1811C2 ::v134(){vfunc_called(this, "_ZN7S1811C24v134Ev");}
void  S1811C2 ::v135(){vfunc_called(this, "_ZN7S1811C24v135Ev");}
void  S1811C2 ::v136(){vfunc_called(this, "_ZN7S1811C24v136Ev");}
void  S1811C2 ::v137(){vfunc_called(this, "_ZN7S1811C24v137Ev");}
void  S1811C2 ::v138(){vfunc_called(this, "_ZN7S1811C24v138Ev");}
void  S1811C2 ::v139(){vfunc_called(this, "_ZN7S1811C24v139Ev");}
void  S1811C2 ::v140(){vfunc_called(this, "_ZN7S1811C24v140Ev");}
void  S1811C2 ::v141(){vfunc_called(this, "_ZN7S1811C24v141Ev");}
void  S1811C2 ::v142(){vfunc_called(this, "_ZN7S1811C24v142Ev");}
void  S1811C2 ::v143(){vfunc_called(this, "_ZN7S1811C24v143Ev");}
void  S1811C2 ::v144(){vfunc_called(this, "_ZN7S1811C24v144Ev");}
S1811C2 ::~S1811C2(){ note_dtor("S1811C2", this);} // tgen
S1811C2 ::S1811C2(){ note_ctor("S1811C2", this);} // tgen

static void Test_S1811C2()
{
  extern Class_Descriptor cd_S1811C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1811C2, buf);
    S1811C2 *dp, &lv = *(dp=new (buf) S1811C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1811C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1811C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1811C3*), 0, "S1811C2");
    check_base_class_offset(lv, (S1811C3*), 0, "S1811C2");
    test_class_info(&lv, &cd_S1811C2);
    dp->~S1811C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1811C2(Test_S1811C2, "S1811C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1811C2C1Ev();
extern void _ZN7S1811C2D1Ev();
Name_Map name_map_S1811C2[] = {
  NSPAIR(_ZN7S1811C2C1Ev),
  NSPAIR(_ZN7S1811C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1811C3;
extern VTBL_ENTRY _ZTI7S1811C3[];
extern  VTBL_ENTRY _ZTV7S1811C3[];
static Base_Class bases_S1811C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1811C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1811C2[];
extern void _ZN7S1811C2D1Ev();
extern void _ZN7S1811C2D0Ev();
extern void _ZN7S1811C32v5Ev();
extern void _ZN7S1811C32v6Ev();
extern void _ZN7S1811C32v7Ev();
extern void _ZN7S1811C32v8Ev();
extern void _ZN7S1811C32v9Ev();
extern void _ZN7S1811C33v10Ev();
extern void _ZN7S1811C33v11Ev();
extern void _ZN7S1811C33v12Ev();
extern void _ZN7S1811C33v13Ev();
extern void _ZN7S1811C33v14Ev();
extern void _ZN7S1811C33v15Ev();
extern void _ZN7S1811C33v16Ev();
extern void _ZN7S1811C33v17Ev();
extern void _ZN7S1811C33v18Ev();
extern void _ZN7S1811C33v19Ev();
extern void _ZN7S1811C33v20Ev();
extern void _ZN7S1811C33v21Ev();
extern void _ZN7S1811C33v22Ev();
extern void _ZN7S1811C33v23Ev();
extern void _ZN7S1811C33v24Ev();
extern void _ZN7S1811C33v25Ev();
extern void _ZN7S1811C33v26Ev();
extern void _ZN7S1811C33v27Ev();
extern void _ZN7S1811C33v28Ev();
extern void _ZN7S1811C33v29Ev();
extern void _ZN7S1811C33v30Ev();
extern void _ZN7S1811C33v31Ev();
extern void _ZN7S1811C33v32Ev();
extern void _ZN7S1811C33v33Ev();
extern void _ZN7S1811C33v34Ev();
extern void _ZN7S1811C33v35Ev();
extern void _ZN7S1811C33v36Ev();
extern void _ZN7S1811C33v37Ev();
extern void _ZN7S1811C33v38Ev();
extern void _ZN7S1811C33v39Ev();
extern void _ZN7S1811C33v40Ev();
extern void _ZN7S1811C33v41Ev();
extern void _ZN7S1811C33v42Ev();
extern void _ZN7S1811C33v43Ev();
extern void _ZN7S1811C33v44Ev();
extern void _ZN7S1811C33v45Ev();
extern void _ZN7S1811C33v46Ev();
extern void _ZN7S1811C33v47Ev();
extern void _ZN7S1811C33v48Ev();
extern void _ZN7S1811C33v49Ev();
extern void _ZN7S1811C33v50Ev();
extern void _ZN7S1811C33v51Ev();
extern void _ZN7S1811C33v52Ev();
extern void _ZN7S1811C33v53Ev();
extern void _ZN7S1811C33v54Ev();
extern void _ZN7S1811C33v55Ev();
extern void _ZN7S1811C33v56Ev();
extern void _ZN7S1811C33v57Ev();
extern void _ZN7S1811C33v58Ev();
extern void _ZN7S1811C33v59Ev();
extern void _ZN7S1811C33v60Ev();
extern void _ZN7S1811C33v61Ev();
extern void _ZN7S1811C33v62Ev();
extern void _ZN7S1811C33v63Ev();
extern void _ZN7S1811C33v64Ev();
extern void _ZN7S1811C33v65Ev();
extern void _ZN7S1811C33v66Ev();
extern void _ZN7S1811C33v67Ev();
extern void _ZN7S1811C33v68Ev();
extern void _ZN7S1811C33v69Ev();
extern void _ZN7S1811C33v70Ev();
extern void _ZN7S1811C33v71Ev();
extern void _ZN7S1811C33v72Ev();
extern void _ZN7S1811C33v73Ev();
extern void _ZN7S1811C33v74Ev();
extern void _ZN7S1811C33v75Ev();
extern void _ZN7S1811C33v76Ev();
extern void _ZN7S1811C33v77Ev();
extern void _ZN7S1811C33v78Ev();
extern void _ZN7S1811C33v79Ev();
extern void _ZN7S1811C33v80Ev();
extern void _ZN7S1811C33v81Ev();
extern void _ZN7S1811C33v82Ev();
extern void _ZN7S1811C33v83Ev();
extern void _ZN7S1811C33v84Ev();
extern void _ZN7S1811C33v85Ev();
extern void _ZN7S1811C33v86Ev();
extern void _ZN7S1811C33v87Ev();
extern void _ZN7S1811C33v88Ev();
extern void _ZN7S1811C33v89Ev();
extern void _ZN7S1811C33v90Ev();
extern void _ZN7S1811C33v91Ev();
extern void _ZN7S1811C33v92Ev();
extern void _ZN7S1811C33v93Ev();
extern void _ZN7S1811C33v94Ev();
extern void _ZN7S1811C33v95Ev();
extern void _ZN7S1811C33v96Ev();
extern void _ZN7S1811C33v97Ev();
extern void _ZN7S1811C33v98Ev();
extern void _ZN7S1811C33v99Ev();
extern void _ZN7S1811C34v100Ev();
extern void _ZN7S1811C34v101Ev();
extern void _ZN7S1811C34v102Ev();
extern void _ZN7S1811C34v103Ev();
extern void _ZN7S1811C34v104Ev();
extern void _ZN7S1811C34v105Ev();
extern void _ZN7S1811C34v106Ev();
extern void _ZN7S1811C34v107Ev();
extern void _ZN7S1811C34v108Ev();
extern void _ZN7S1811C34v109Ev();
extern void _ZN7S1811C34v110Ev();
extern void _ZN7S1811C34v111Ev();
extern void _ZN7S1811C34v112Ev();
extern void _ZN7S1811C34v113Ev();
extern void _ZN7S1811C34v114Ev();
extern void _ZN7S1811C34v115Ev();
extern void _ZN7S1811C34v116Ev();
extern void _ZN7S1811C34v117Ev();
extern void _ZN7S1811C34v118Ev();
extern void _ZN7S1811C34v119Ev();
extern void _ZN7S1811C34v120Ev();
extern void _ZN7S1811C34v121Ev();
extern void _ZN7S1811C34v122Ev();
extern void _ZN7S1811C34v123Ev();
extern void _ZN7S1811C34v124Ev();
extern void _ZN7S1811C34v125Ev();
extern void _ZN7S1811C34v126Ev();
extern void _ZN7S1811C24v127Ev();
extern void _ZN7S1811C24v128Ev();
extern void _ZN7S1811C24v129Ev();
extern void _ZN7S1811C24v130Ev();
extern void _ZN7S1811C24v131Ev();
extern void _ZN7S1811C24v132Ev();
extern void _ZN7S1811C24v133Ev();
extern void _ZN7S1811C24v134Ev();
extern void _ZN7S1811C24v135Ev();
extern void _ZN7S1811C24v136Ev();
extern void _ZN7S1811C24v137Ev();
extern void _ZN7S1811C24v138Ev();
extern void _ZN7S1811C24v139Ev();
extern void _ZN7S1811C24v140Ev();
extern void _ZN7S1811C24v141Ev();
extern void _ZN7S1811C24v142Ev();
extern void _ZN7S1811C24v143Ev();
extern void _ZN7S1811C24v144Ev();
static  VTBL_ENTRY vtc_S1811C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1811C2[0]),
  (VTBL_ENTRY)&_ZN7S1811C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1811C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v144Ev,
};
extern VTBL_ENTRY _ZTI7S1811C2[];
extern  VTBL_ENTRY _ZTV7S1811C2[];
Class_Descriptor cd_S1811C2 = {  "S1811C2", // class name
  bases_S1811C2, 2,
  &(vtc_S1811C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1811C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1811C2),144, //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  S1811C1  : S1811C2 {
  virtual void  v1(); // _ZN7S1811C12v1Ev
  virtual void  v2(); // _ZN7S1811C12v2Ev
  virtual void  v3(); // _ZN7S1811C12v3Ev
  virtual void  v4(); // _ZN7S1811C12v4Ev
  ~S1811C1(); // tgen
  S1811C1(); // tgen
};
//SIG(1 S1811C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3 v4}


void  S1811C1 ::v1(){vfunc_called(this, "_ZN7S1811C12v1Ev");}
void  S1811C1 ::v2(){vfunc_called(this, "_ZN7S1811C12v2Ev");}
void  S1811C1 ::v3(){vfunc_called(this, "_ZN7S1811C12v3Ev");}
void  S1811C1 ::v4(){vfunc_called(this, "_ZN7S1811C12v4Ev");}
S1811C1 ::~S1811C1(){ note_dtor("S1811C1", this);} // tgen
S1811C1 ::S1811C1(){ note_ctor("S1811C1", this);} // tgen

static void Test_S1811C1()
{
  extern Class_Descriptor cd_S1811C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1811C1, buf);
    S1811C1 *dp, &lv = *(dp=new (buf) S1811C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1811C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1811C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1811C3*)(S1811C2*), 0, "S1811C1");
    check_base_class_offset(lv, (S1811C3*)(S1811C2*), 0, "S1811C1");
    check_base_class_offset(lv, (S1811C2*), 0, "S1811C1");
    test_class_info(&lv, &cd_S1811C1);
    dp->~S1811C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1811C1(Test_S1811C1, "S1811C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1811C1C1Ev();
extern void _ZN7S1811C1D1Ev();
Name_Map name_map_S1811C1[] = {
  NSPAIR(_ZN7S1811C1C1Ev),
  NSPAIR(_ZN7S1811C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1811C3;
extern VTBL_ENTRY _ZTI7S1811C3[];
extern  VTBL_ENTRY _ZTV7S1811C3[];
extern Class_Descriptor cd_S1811C2;
extern VTBL_ENTRY _ZTI7S1811C2[];
extern  VTBL_ENTRY _ZTV7S1811C2[];
static Base_Class bases_S1811C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1811C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1811C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1811C1[];
extern void _ZN7S1811C1D1Ev();
extern void _ZN7S1811C1D0Ev();
extern void _ZN7S1811C32v5Ev();
extern void _ZN7S1811C32v6Ev();
extern void _ZN7S1811C32v7Ev();
extern void _ZN7S1811C32v8Ev();
extern void _ZN7S1811C32v9Ev();
extern void _ZN7S1811C33v10Ev();
extern void _ZN7S1811C33v11Ev();
extern void _ZN7S1811C33v12Ev();
extern void _ZN7S1811C33v13Ev();
extern void _ZN7S1811C33v14Ev();
extern void _ZN7S1811C33v15Ev();
extern void _ZN7S1811C33v16Ev();
extern void _ZN7S1811C33v17Ev();
extern void _ZN7S1811C33v18Ev();
extern void _ZN7S1811C33v19Ev();
extern void _ZN7S1811C33v20Ev();
extern void _ZN7S1811C33v21Ev();
extern void _ZN7S1811C33v22Ev();
extern void _ZN7S1811C33v23Ev();
extern void _ZN7S1811C33v24Ev();
extern void _ZN7S1811C33v25Ev();
extern void _ZN7S1811C33v26Ev();
extern void _ZN7S1811C33v27Ev();
extern void _ZN7S1811C33v28Ev();
extern void _ZN7S1811C33v29Ev();
extern void _ZN7S1811C33v30Ev();
extern void _ZN7S1811C33v31Ev();
extern void _ZN7S1811C33v32Ev();
extern void _ZN7S1811C33v33Ev();
extern void _ZN7S1811C33v34Ev();
extern void _ZN7S1811C33v35Ev();
extern void _ZN7S1811C33v36Ev();
extern void _ZN7S1811C33v37Ev();
extern void _ZN7S1811C33v38Ev();
extern void _ZN7S1811C33v39Ev();
extern void _ZN7S1811C33v40Ev();
extern void _ZN7S1811C33v41Ev();
extern void _ZN7S1811C33v42Ev();
extern void _ZN7S1811C33v43Ev();
extern void _ZN7S1811C33v44Ev();
extern void _ZN7S1811C33v45Ev();
extern void _ZN7S1811C33v46Ev();
extern void _ZN7S1811C33v47Ev();
extern void _ZN7S1811C33v48Ev();
extern void _ZN7S1811C33v49Ev();
extern void _ZN7S1811C33v50Ev();
extern void _ZN7S1811C33v51Ev();
extern void _ZN7S1811C33v52Ev();
extern void _ZN7S1811C33v53Ev();
extern void _ZN7S1811C33v54Ev();
extern void _ZN7S1811C33v55Ev();
extern void _ZN7S1811C33v56Ev();
extern void _ZN7S1811C33v57Ev();
extern void _ZN7S1811C33v58Ev();
extern void _ZN7S1811C33v59Ev();
extern void _ZN7S1811C33v60Ev();
extern void _ZN7S1811C33v61Ev();
extern void _ZN7S1811C33v62Ev();
extern void _ZN7S1811C33v63Ev();
extern void _ZN7S1811C33v64Ev();
extern void _ZN7S1811C33v65Ev();
extern void _ZN7S1811C33v66Ev();
extern void _ZN7S1811C33v67Ev();
extern void _ZN7S1811C33v68Ev();
extern void _ZN7S1811C33v69Ev();
extern void _ZN7S1811C33v70Ev();
extern void _ZN7S1811C33v71Ev();
extern void _ZN7S1811C33v72Ev();
extern void _ZN7S1811C33v73Ev();
extern void _ZN7S1811C33v74Ev();
extern void _ZN7S1811C33v75Ev();
extern void _ZN7S1811C33v76Ev();
extern void _ZN7S1811C33v77Ev();
extern void _ZN7S1811C33v78Ev();
extern void _ZN7S1811C33v79Ev();
extern void _ZN7S1811C33v80Ev();
extern void _ZN7S1811C33v81Ev();
extern void _ZN7S1811C33v82Ev();
extern void _ZN7S1811C33v83Ev();
extern void _ZN7S1811C33v84Ev();
extern void _ZN7S1811C33v85Ev();
extern void _ZN7S1811C33v86Ev();
extern void _ZN7S1811C33v87Ev();
extern void _ZN7S1811C33v88Ev();
extern void _ZN7S1811C33v89Ev();
extern void _ZN7S1811C33v90Ev();
extern void _ZN7S1811C33v91Ev();
extern void _ZN7S1811C33v92Ev();
extern void _ZN7S1811C33v93Ev();
extern void _ZN7S1811C33v94Ev();
extern void _ZN7S1811C33v95Ev();
extern void _ZN7S1811C33v96Ev();
extern void _ZN7S1811C33v97Ev();
extern void _ZN7S1811C33v98Ev();
extern void _ZN7S1811C33v99Ev();
extern void _ZN7S1811C34v100Ev();
extern void _ZN7S1811C34v101Ev();
extern void _ZN7S1811C34v102Ev();
extern void _ZN7S1811C34v103Ev();
extern void _ZN7S1811C34v104Ev();
extern void _ZN7S1811C34v105Ev();
extern void _ZN7S1811C34v106Ev();
extern void _ZN7S1811C34v107Ev();
extern void _ZN7S1811C34v108Ev();
extern void _ZN7S1811C34v109Ev();
extern void _ZN7S1811C34v110Ev();
extern void _ZN7S1811C34v111Ev();
extern void _ZN7S1811C34v112Ev();
extern void _ZN7S1811C34v113Ev();
extern void _ZN7S1811C34v114Ev();
extern void _ZN7S1811C34v115Ev();
extern void _ZN7S1811C34v116Ev();
extern void _ZN7S1811C34v117Ev();
extern void _ZN7S1811C34v118Ev();
extern void _ZN7S1811C34v119Ev();
extern void _ZN7S1811C34v120Ev();
extern void _ZN7S1811C34v121Ev();
extern void _ZN7S1811C34v122Ev();
extern void _ZN7S1811C34v123Ev();
extern void _ZN7S1811C34v124Ev();
extern void _ZN7S1811C34v125Ev();
extern void _ZN7S1811C34v126Ev();
extern void _ZN7S1811C24v127Ev();
extern void _ZN7S1811C24v128Ev();
extern void _ZN7S1811C24v129Ev();
extern void _ZN7S1811C24v130Ev();
extern void _ZN7S1811C24v131Ev();
extern void _ZN7S1811C24v132Ev();
extern void _ZN7S1811C24v133Ev();
extern void _ZN7S1811C24v134Ev();
extern void _ZN7S1811C24v135Ev();
extern void _ZN7S1811C24v136Ev();
extern void _ZN7S1811C24v137Ev();
extern void _ZN7S1811C24v138Ev();
extern void _ZN7S1811C24v139Ev();
extern void _ZN7S1811C24v140Ev();
extern void _ZN7S1811C24v141Ev();
extern void _ZN7S1811C24v142Ev();
extern void _ZN7S1811C24v143Ev();
extern void _ZN7S1811C24v144Ev();
extern void _ZN7S1811C12v1Ev();
extern void _ZN7S1811C12v2Ev();
extern void _ZN7S1811C12v3Ev();
extern void _ZN7S1811C12v4Ev();
static  VTBL_ENTRY vtc_S1811C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1811C1[0]),
  (VTBL_ENTRY)&_ZN7S1811C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1811C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1811C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1811C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1811C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1811C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1811C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1811C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1811C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1811C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1811C1[];
extern  VTBL_ENTRY _ZTV7S1811C1[];
Class_Descriptor cd_S1811C1 = {  "S1811C1", // class name
  bases_S1811C1, 3,
  &(vtc_S1811C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1811C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1811C1),148, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1800C3  : S785C5_nt {
  virtual void  v4(); // _ZN7S1800C32v4Ev
  virtual void  v5(); // _ZN7S1800C32v5Ev
  virtual void  v6(); // _ZN7S1800C32v6Ev
  virtual void  v7(); // _ZN7S1800C32v7Ev
  virtual void  v8(); // _ZN7S1800C32v8Ev
  virtual void  v9(); // _ZN7S1800C32v9Ev
  virtual void  v10(); // _ZN7S1800C33v10Ev
  virtual void  v11(); // _ZN7S1800C33v11Ev
  virtual void  v12(); // _ZN7S1800C33v12Ev
  virtual void  v13(); // _ZN7S1800C33v13Ev
  virtual void  v14(); // _ZN7S1800C33v14Ev
  virtual void  v15(); // _ZN7S1800C33v15Ev
  virtual void  v16(); // _ZN7S1800C33v16Ev
  virtual void  v17(); // _ZN7S1800C33v17Ev
  virtual void  v18(); // _ZN7S1800C33v18Ev
  virtual void  v19(); // _ZN7S1800C33v19Ev
  virtual void  v20(); // _ZN7S1800C33v20Ev
  virtual void  v21(); // _ZN7S1800C33v21Ev
  virtual void  v22(); // _ZN7S1800C33v22Ev
  virtual void  v23(); // _ZN7S1800C33v23Ev
  virtual void  v24(); // _ZN7S1800C33v24Ev
  virtual void  v25(); // _ZN7S1800C33v25Ev
  virtual void  v26(); // _ZN7S1800C33v26Ev
  virtual void  v27(); // _ZN7S1800C33v27Ev
  virtual void  v28(); // _ZN7S1800C33v28Ev
  virtual void  v29(); // _ZN7S1800C33v29Ev
  virtual void  v30(); // _ZN7S1800C33v30Ev
  virtual void  v31(); // _ZN7S1800C33v31Ev
  virtual void  v32(); // _ZN7S1800C33v32Ev
  virtual void  v33(); // _ZN7S1800C33v33Ev
  virtual void  v34(); // _ZN7S1800C33v34Ev
  virtual void  v35(); // _ZN7S1800C33v35Ev
  virtual void  v36(); // _ZN7S1800C33v36Ev
  virtual void  v37(); // _ZN7S1800C33v37Ev
  virtual void  v38(); // _ZN7S1800C33v38Ev
  virtual void  v39(); // _ZN7S1800C33v39Ev
  virtual void  v40(); // _ZN7S1800C33v40Ev
  virtual void  v41(); // _ZN7S1800C33v41Ev
  virtual void  v42(); // _ZN7S1800C33v42Ev
  virtual void  v43(); // _ZN7S1800C33v43Ev
  virtual void  v44(); // _ZN7S1800C33v44Ev
  virtual void  v45(); // _ZN7S1800C33v45Ev
  virtual void  v46(); // _ZN7S1800C33v46Ev
  virtual void  v47(); // _ZN7S1800C33v47Ev
  virtual void  v48(); // _ZN7S1800C33v48Ev
  virtual void  v49(); // _ZN7S1800C33v49Ev
  virtual void  v50(); // _ZN7S1800C33v50Ev
  virtual void  v51(); // _ZN7S1800C33v51Ev
  virtual void  v52(); // _ZN7S1800C33v52Ev
  virtual void  v53(); // _ZN7S1800C33v53Ev
  virtual void  v54(); // _ZN7S1800C33v54Ev
  virtual void  v55(); // _ZN7S1800C33v55Ev
  virtual void  v56(); // _ZN7S1800C33v56Ev
  virtual void  v57(); // _ZN7S1800C33v57Ev
  virtual void  v58(); // _ZN7S1800C33v58Ev
  virtual void  v59(); // _ZN7S1800C33v59Ev
  virtual void  v60(); // _ZN7S1800C33v60Ev
  virtual void  v61(); // _ZN7S1800C33v61Ev
  virtual void  v62(); // _ZN7S1800C33v62Ev
  virtual void  v63(); // _ZN7S1800C33v63Ev
  virtual void  v64(); // _ZN7S1800C33v64Ev
  virtual void  v65(); // _ZN7S1800C33v65Ev
  virtual void  v66(); // _ZN7S1800C33v66Ev
  virtual void  v67(); // _ZN7S1800C33v67Ev
  virtual void  v68(); // _ZN7S1800C33v68Ev
  virtual void  v69(); // _ZN7S1800C33v69Ev
  virtual void  v70(); // _ZN7S1800C33v70Ev
  virtual void  v71(); // _ZN7S1800C33v71Ev
  virtual void  v72(); // _ZN7S1800C33v72Ev
  virtual void  v73(); // _ZN7S1800C33v73Ev
  virtual void  v74(); // _ZN7S1800C33v74Ev
  virtual void  v75(); // _ZN7S1800C33v75Ev
  virtual void  v76(); // _ZN7S1800C33v76Ev
  virtual void  v77(); // _ZN7S1800C33v77Ev
  virtual void  v78(); // _ZN7S1800C33v78Ev
  virtual void  v79(); // _ZN7S1800C33v79Ev
  virtual void  v80(); // _ZN7S1800C33v80Ev
  virtual void  v81(); // _ZN7S1800C33v81Ev
  virtual void  v82(); // _ZN7S1800C33v82Ev
  virtual void  v83(); // _ZN7S1800C33v83Ev
  virtual void  v84(); // _ZN7S1800C33v84Ev
  virtual void  v85(); // _ZN7S1800C33v85Ev
  virtual void  v86(); // _ZN7S1800C33v86Ev
  virtual void  v87(); // _ZN7S1800C33v87Ev
  virtual void  v88(); // _ZN7S1800C33v88Ev
  virtual void  v89(); // _ZN7S1800C33v89Ev
  virtual void  v90(); // _ZN7S1800C33v90Ev
  virtual void  v91(); // _ZN7S1800C33v91Ev
  virtual void  v92(); // _ZN7S1800C33v92Ev
  virtual void  v93(); // _ZN7S1800C33v93Ev
  virtual void  v94(); // _ZN7S1800C33v94Ev
  virtual void  v95(); // _ZN7S1800C33v95Ev
  virtual void  v96(); // _ZN7S1800C33v96Ev
  virtual void  v97(); // _ZN7S1800C33v97Ev
  virtual void  v98(); // _ZN7S1800C33v98Ev
  virtual void  v99(); // _ZN7S1800C33v99Ev
  virtual void  v100(); // _ZN7S1800C34v100Ev
  virtual void  v101(); // _ZN7S1800C34v101Ev
  virtual void  v102(); // _ZN7S1800C34v102Ev
  virtual void  v103(); // _ZN7S1800C34v103Ev
  virtual void  v104(); // _ZN7S1800C34v104Ev
  virtual void  v105(); // _ZN7S1800C34v105Ev
  virtual void  v106(); // _ZN7S1800C34v106Ev
  virtual void  v107(); // _ZN7S1800C34v107Ev
  virtual void  v108(); // _ZN7S1800C34v108Ev
  virtual void  v109(); // _ZN7S1800C34v109Ev
  virtual void  v110(); // _ZN7S1800C34v110Ev
  virtual void  v111(); // _ZN7S1800C34v111Ev
  virtual void  v112(); // _ZN7S1800C34v112Ev
  virtual void  v113(); // _ZN7S1800C34v113Ev
  virtual void  v114(); // _ZN7S1800C34v114Ev
  virtual void  v115(); // _ZN7S1800C34v115Ev
  virtual void  v116(); // _ZN7S1800C34v116Ev
  virtual void  v117(); // _ZN7S1800C34v117Ev
  virtual void  v118(); // _ZN7S1800C34v118Ev
  virtual void  v119(); // _ZN7S1800C34v119Ev
  virtual void  v120(); // _ZN7S1800C34v120Ev
  virtual void  v121(); // _ZN7S1800C34v121Ev
  virtual void  v122(); // _ZN7S1800C34v122Ev
  virtual void  v123(); // _ZN7S1800C34v123Ev
  virtual void  v124(); // _ZN7S1800C34v124Ev
  virtual void  v125(); // _ZN7S1800C34v125Ev
  ~S1800C3(); // tgen
  S1800C3(); // tgen
};
//SIG(-1 S1800C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1800C3 ::v4(){vfunc_called(this, "_ZN7S1800C32v4Ev");}
void  S1800C3 ::v5(){vfunc_called(this, "_ZN7S1800C32v5Ev");}
void  S1800C3 ::v6(){vfunc_called(this, "_ZN7S1800C32v6Ev");}
void  S1800C3 ::v7(){vfunc_called(this, "_ZN7S1800C32v7Ev");}
void  S1800C3 ::v8(){vfunc_called(this, "_ZN7S1800C32v8Ev");}
void  S1800C3 ::v9(){vfunc_called(this, "_ZN7S1800C32v9Ev");}
void  S1800C3 ::v10(){vfunc_called(this, "_ZN7S1800C33v10Ev");}
void  S1800C3 ::v11(){vfunc_called(this, "_ZN7S1800C33v11Ev");}
void  S1800C3 ::v12(){vfunc_called(this, "_ZN7S1800C33v12Ev");}
void  S1800C3 ::v13(){vfunc_called(this, "_ZN7S1800C33v13Ev");}
void  S1800C3 ::v14(){vfunc_called(this, "_ZN7S1800C33v14Ev");}
void  S1800C3 ::v15(){vfunc_called(this, "_ZN7S1800C33v15Ev");}
void  S1800C3 ::v16(){vfunc_called(this, "_ZN7S1800C33v16Ev");}
void  S1800C3 ::v17(){vfunc_called(this, "_ZN7S1800C33v17Ev");}
void  S1800C3 ::v18(){vfunc_called(this, "_ZN7S1800C33v18Ev");}
void  S1800C3 ::v19(){vfunc_called(this, "_ZN7S1800C33v19Ev");}
void  S1800C3 ::v20(){vfunc_called(this, "_ZN7S1800C33v20Ev");}
void  S1800C3 ::v21(){vfunc_called(this, "_ZN7S1800C33v21Ev");}
void  S1800C3 ::v22(){vfunc_called(this, "_ZN7S1800C33v22Ev");}
void  S1800C3 ::v23(){vfunc_called(this, "_ZN7S1800C33v23Ev");}
void  S1800C3 ::v24(){vfunc_called(this, "_ZN7S1800C33v24Ev");}
void  S1800C3 ::v25(){vfunc_called(this, "_ZN7S1800C33v25Ev");}
void  S1800C3 ::v26(){vfunc_called(this, "_ZN7S1800C33v26Ev");}
void  S1800C3 ::v27(){vfunc_called(this, "_ZN7S1800C33v27Ev");}
void  S1800C3 ::v28(){vfunc_called(this, "_ZN7S1800C33v28Ev");}
void  S1800C3 ::v29(){vfunc_called(this, "_ZN7S1800C33v29Ev");}
void  S1800C3 ::v30(){vfunc_called(this, "_ZN7S1800C33v30Ev");}
void  S1800C3 ::v31(){vfunc_called(this, "_ZN7S1800C33v31Ev");}
void  S1800C3 ::v32(){vfunc_called(this, "_ZN7S1800C33v32Ev");}
void  S1800C3 ::v33(){vfunc_called(this, "_ZN7S1800C33v33Ev");}
void  S1800C3 ::v34(){vfunc_called(this, "_ZN7S1800C33v34Ev");}
void  S1800C3 ::v35(){vfunc_called(this, "_ZN7S1800C33v35Ev");}
void  S1800C3 ::v36(){vfunc_called(this, "_ZN7S1800C33v36Ev");}
void  S1800C3 ::v37(){vfunc_called(this, "_ZN7S1800C33v37Ev");}
void  S1800C3 ::v38(){vfunc_called(this, "_ZN7S1800C33v38Ev");}
void  S1800C3 ::v39(){vfunc_called(this, "_ZN7S1800C33v39Ev");}
void  S1800C3 ::v40(){vfunc_called(this, "_ZN7S1800C33v40Ev");}
void  S1800C3 ::v41(){vfunc_called(this, "_ZN7S1800C33v41Ev");}
void  S1800C3 ::v42(){vfunc_called(this, "_ZN7S1800C33v42Ev");}
void  S1800C3 ::v43(){vfunc_called(this, "_ZN7S1800C33v43Ev");}
void  S1800C3 ::v44(){vfunc_called(this, "_ZN7S1800C33v44Ev");}
void  S1800C3 ::v45(){vfunc_called(this, "_ZN7S1800C33v45Ev");}
void  S1800C3 ::v46(){vfunc_called(this, "_ZN7S1800C33v46Ev");}
void  S1800C3 ::v47(){vfunc_called(this, "_ZN7S1800C33v47Ev");}
void  S1800C3 ::v48(){vfunc_called(this, "_ZN7S1800C33v48Ev");}
void  S1800C3 ::v49(){vfunc_called(this, "_ZN7S1800C33v49Ev");}
void  S1800C3 ::v50(){vfunc_called(this, "_ZN7S1800C33v50Ev");}
void  S1800C3 ::v51(){vfunc_called(this, "_ZN7S1800C33v51Ev");}
void  S1800C3 ::v52(){vfunc_called(this, "_ZN7S1800C33v52Ev");}
void  S1800C3 ::v53(){vfunc_called(this, "_ZN7S1800C33v53Ev");}
void  S1800C3 ::v54(){vfunc_called(this, "_ZN7S1800C33v54Ev");}
void  S1800C3 ::v55(){vfunc_called(this, "_ZN7S1800C33v55Ev");}
void  S1800C3 ::v56(){vfunc_called(this, "_ZN7S1800C33v56Ev");}
void  S1800C3 ::v57(){vfunc_called(this, "_ZN7S1800C33v57Ev");}
void  S1800C3 ::v58(){vfunc_called(this, "_ZN7S1800C33v58Ev");}
void  S1800C3 ::v59(){vfunc_called(this, "_ZN7S1800C33v59Ev");}
void  S1800C3 ::v60(){vfunc_called(this, "_ZN7S1800C33v60Ev");}
void  S1800C3 ::v61(){vfunc_called(this, "_ZN7S1800C33v61Ev");}
void  S1800C3 ::v62(){vfunc_called(this, "_ZN7S1800C33v62Ev");}
void  S1800C3 ::v63(){vfunc_called(this, "_ZN7S1800C33v63Ev");}
void  S1800C3 ::v64(){vfunc_called(this, "_ZN7S1800C33v64Ev");}
void  S1800C3 ::v65(){vfunc_called(this, "_ZN7S1800C33v65Ev");}
void  S1800C3 ::v66(){vfunc_called(this, "_ZN7S1800C33v66Ev");}
void  S1800C3 ::v67(){vfunc_called(this, "_ZN7S1800C33v67Ev");}
void  S1800C3 ::v68(){vfunc_called(this, "_ZN7S1800C33v68Ev");}
void  S1800C3 ::v69(){vfunc_called(this, "_ZN7S1800C33v69Ev");}
void  S1800C3 ::v70(){vfunc_called(this, "_ZN7S1800C33v70Ev");}
void  S1800C3 ::v71(){vfunc_called(this, "_ZN7S1800C33v71Ev");}
void  S1800C3 ::v72(){vfunc_called(this, "_ZN7S1800C33v72Ev");}
void  S1800C3 ::v73(){vfunc_called(this, "_ZN7S1800C33v73Ev");}
void  S1800C3 ::v74(){vfunc_called(this, "_ZN7S1800C33v74Ev");}
void  S1800C3 ::v75(){vfunc_called(this, "_ZN7S1800C33v75Ev");}
void  S1800C3 ::v76(){vfunc_called(this, "_ZN7S1800C33v76Ev");}
void  S1800C3 ::v77(){vfunc_called(this, "_ZN7S1800C33v77Ev");}
void  S1800C3 ::v78(){vfunc_called(this, "_ZN7S1800C33v78Ev");}
void  S1800C3 ::v79(){vfunc_called(this, "_ZN7S1800C33v79Ev");}
void  S1800C3 ::v80(){vfunc_called(this, "_ZN7S1800C33v80Ev");}
void  S1800C3 ::v81(){vfunc_called(this, "_ZN7S1800C33v81Ev");}
void  S1800C3 ::v82(){vfunc_called(this, "_ZN7S1800C33v82Ev");}
void  S1800C3 ::v83(){vfunc_called(this, "_ZN7S1800C33v83Ev");}
void  S1800C3 ::v84(){vfunc_called(this, "_ZN7S1800C33v84Ev");}
void  S1800C3 ::v85(){vfunc_called(this, "_ZN7S1800C33v85Ev");}
void  S1800C3 ::v86(){vfunc_called(this, "_ZN7S1800C33v86Ev");}
void  S1800C3 ::v87(){vfunc_called(this, "_ZN7S1800C33v87Ev");}
void  S1800C3 ::v88(){vfunc_called(this, "_ZN7S1800C33v88Ev");}
void  S1800C3 ::v89(){vfunc_called(this, "_ZN7S1800C33v89Ev");}
void  S1800C3 ::v90(){vfunc_called(this, "_ZN7S1800C33v90Ev");}
void  S1800C3 ::v91(){vfunc_called(this, "_ZN7S1800C33v91Ev");}
void  S1800C3 ::v92(){vfunc_called(this, "_ZN7S1800C33v92Ev");}
void  S1800C3 ::v93(){vfunc_called(this, "_ZN7S1800C33v93Ev");}
void  S1800C3 ::v94(){vfunc_called(this, "_ZN7S1800C33v94Ev");}
void  S1800C3 ::v95(){vfunc_called(this, "_ZN7S1800C33v95Ev");}
void  S1800C3 ::v96(){vfunc_called(this, "_ZN7S1800C33v96Ev");}
void  S1800C3 ::v97(){vfunc_called(this, "_ZN7S1800C33v97Ev");}
void  S1800C3 ::v98(){vfunc_called(this, "_ZN7S1800C33v98Ev");}
void  S1800C3 ::v99(){vfunc_called(this, "_ZN7S1800C33v99Ev");}
void  S1800C3 ::v100(){vfunc_called(this, "_ZN7S1800C34v100Ev");}
void  S1800C3 ::v101(){vfunc_called(this, "_ZN7S1800C34v101Ev");}
void  S1800C3 ::v102(){vfunc_called(this, "_ZN7S1800C34v102Ev");}
void  S1800C3 ::v103(){vfunc_called(this, "_ZN7S1800C34v103Ev");}
void  S1800C3 ::v104(){vfunc_called(this, "_ZN7S1800C34v104Ev");}
void  S1800C3 ::v105(){vfunc_called(this, "_ZN7S1800C34v105Ev");}
void  S1800C3 ::v106(){vfunc_called(this, "_ZN7S1800C34v106Ev");}
void  S1800C3 ::v107(){vfunc_called(this, "_ZN7S1800C34v107Ev");}
void  S1800C3 ::v108(){vfunc_called(this, "_ZN7S1800C34v108Ev");}
void  S1800C3 ::v109(){vfunc_called(this, "_ZN7S1800C34v109Ev");}
void  S1800C3 ::v110(){vfunc_called(this, "_ZN7S1800C34v110Ev");}
void  S1800C3 ::v111(){vfunc_called(this, "_ZN7S1800C34v111Ev");}
void  S1800C3 ::v112(){vfunc_called(this, "_ZN7S1800C34v112Ev");}
void  S1800C3 ::v113(){vfunc_called(this, "_ZN7S1800C34v113Ev");}
void  S1800C3 ::v114(){vfunc_called(this, "_ZN7S1800C34v114Ev");}
void  S1800C3 ::v115(){vfunc_called(this, "_ZN7S1800C34v115Ev");}
void  S1800C3 ::v116(){vfunc_called(this, "_ZN7S1800C34v116Ev");}
void  S1800C3 ::v117(){vfunc_called(this, "_ZN7S1800C34v117Ev");}
void  S1800C3 ::v118(){vfunc_called(this, "_ZN7S1800C34v118Ev");}
void  S1800C3 ::v119(){vfunc_called(this, "_ZN7S1800C34v119Ev");}
void  S1800C3 ::v120(){vfunc_called(this, "_ZN7S1800C34v120Ev");}
void  S1800C3 ::v121(){vfunc_called(this, "_ZN7S1800C34v121Ev");}
void  S1800C3 ::v122(){vfunc_called(this, "_ZN7S1800C34v122Ev");}
void  S1800C3 ::v123(){vfunc_called(this, "_ZN7S1800C34v123Ev");}
void  S1800C3 ::v124(){vfunc_called(this, "_ZN7S1800C34v124Ev");}
void  S1800C3 ::v125(){vfunc_called(this, "_ZN7S1800C34v125Ev");}
S1800C3 ::~S1800C3(){ note_dtor("S1800C3", this);} // tgen
S1800C3 ::S1800C3(){ note_ctor("S1800C3", this);} // tgen

static void Test_S1800C3()
{
  extern Class_Descriptor cd_S1800C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1800C3, buf);
    S1800C3 *dp, &lv = *(dp=new (buf) S1800C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1800C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1800C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1800C3");
    test_class_info(&lv, &cd_S1800C3);
    dp->~S1800C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1800C3(Test_S1800C3, "S1800C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1800C3C1Ev();
extern void _ZN7S1800C3D1Ev();
Name_Map name_map_S1800C3[] = {
  NSPAIR(_ZN7S1800C3C1Ev),
  NSPAIR(_ZN7S1800C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1800C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1800C3[];
extern void _ZN7S1800C3D1Ev();
extern void _ZN7S1800C3D0Ev();
extern void _ZN7S1800C32v4Ev();
extern void _ZN7S1800C32v5Ev();
extern void _ZN7S1800C32v6Ev();
extern void _ZN7S1800C32v7Ev();
extern void _ZN7S1800C32v8Ev();
extern void _ZN7S1800C32v9Ev();
extern void _ZN7S1800C33v10Ev();
extern void _ZN7S1800C33v11Ev();
extern void _ZN7S1800C33v12Ev();
extern void _ZN7S1800C33v13Ev();
extern void _ZN7S1800C33v14Ev();
extern void _ZN7S1800C33v15Ev();
extern void _ZN7S1800C33v16Ev();
extern void _ZN7S1800C33v17Ev();
extern void _ZN7S1800C33v18Ev();
extern void _ZN7S1800C33v19Ev();
extern void _ZN7S1800C33v20Ev();
extern void _ZN7S1800C33v21Ev();
extern void _ZN7S1800C33v22Ev();
extern void _ZN7S1800C33v23Ev();
extern void _ZN7S1800C33v24Ev();
extern void _ZN7S1800C33v25Ev();
extern void _ZN7S1800C33v26Ev();
extern void _ZN7S1800C33v27Ev();
extern void _ZN7S1800C33v28Ev();
extern void _ZN7S1800C33v29Ev();
extern void _ZN7S1800C33v30Ev();
extern void _ZN7S1800C33v31Ev();
extern void _ZN7S1800C33v32Ev();
extern void _ZN7S1800C33v33Ev();
extern void _ZN7S1800C33v34Ev();
extern void _ZN7S1800C33v35Ev();
extern void _ZN7S1800C33v36Ev();
extern void _ZN7S1800C33v37Ev();
extern void _ZN7S1800C33v38Ev();
extern void _ZN7S1800C33v39Ev();
extern void _ZN7S1800C33v40Ev();
extern void _ZN7S1800C33v41Ev();
extern void _ZN7S1800C33v42Ev();
extern void _ZN7S1800C33v43Ev();
extern void _ZN7S1800C33v44Ev();
extern void _ZN7S1800C33v45Ev();
extern void _ZN7S1800C33v46Ev();
extern void _ZN7S1800C33v47Ev();
extern void _ZN7S1800C33v48Ev();
extern void _ZN7S1800C33v49Ev();
extern void _ZN7S1800C33v50Ev();
extern void _ZN7S1800C33v51Ev();
extern void _ZN7S1800C33v52Ev();
extern void _ZN7S1800C33v53Ev();
extern void _ZN7S1800C33v54Ev();
extern void _ZN7S1800C33v55Ev();
extern void _ZN7S1800C33v56Ev();
extern void _ZN7S1800C33v57Ev();
extern void _ZN7S1800C33v58Ev();
extern void _ZN7S1800C33v59Ev();
extern void _ZN7S1800C33v60Ev();
extern void _ZN7S1800C33v61Ev();
extern void _ZN7S1800C33v62Ev();
extern void _ZN7S1800C33v63Ev();
extern void _ZN7S1800C33v64Ev();
extern void _ZN7S1800C33v65Ev();
extern void _ZN7S1800C33v66Ev();
extern void _ZN7S1800C33v67Ev();
extern void _ZN7S1800C33v68Ev();
extern void _ZN7S1800C33v69Ev();
extern void _ZN7S1800C33v70Ev();
extern void _ZN7S1800C33v71Ev();
extern void _ZN7S1800C33v72Ev();
extern void _ZN7S1800C33v73Ev();
extern void _ZN7S1800C33v74Ev();
extern void _ZN7S1800C33v75Ev();
extern void _ZN7S1800C33v76Ev();
extern void _ZN7S1800C33v77Ev();
extern void _ZN7S1800C33v78Ev();
extern void _ZN7S1800C33v79Ev();
extern void _ZN7S1800C33v80Ev();
extern void _ZN7S1800C33v81Ev();
extern void _ZN7S1800C33v82Ev();
extern void _ZN7S1800C33v83Ev();
extern void _ZN7S1800C33v84Ev();
extern void _ZN7S1800C33v85Ev();
extern void _ZN7S1800C33v86Ev();
extern void _ZN7S1800C33v87Ev();
extern void _ZN7S1800C33v88Ev();
extern void _ZN7S1800C33v89Ev();
extern void _ZN7S1800C33v90Ev();
extern void _ZN7S1800C33v91Ev();
extern void _ZN7S1800C33v92Ev();
extern void _ZN7S1800C33v93Ev();
extern void _ZN7S1800C33v94Ev();
extern void _ZN7S1800C33v95Ev();
extern void _ZN7S1800C33v96Ev();
extern void _ZN7S1800C33v97Ev();
extern void _ZN7S1800C33v98Ev();
extern void _ZN7S1800C33v99Ev();
extern void _ZN7S1800C34v100Ev();
extern void _ZN7S1800C34v101Ev();
extern void _ZN7S1800C34v102Ev();
extern void _ZN7S1800C34v103Ev();
extern void _ZN7S1800C34v104Ev();
extern void _ZN7S1800C34v105Ev();
extern void _ZN7S1800C34v106Ev();
extern void _ZN7S1800C34v107Ev();
extern void _ZN7S1800C34v108Ev();
extern void _ZN7S1800C34v109Ev();
extern void _ZN7S1800C34v110Ev();
extern void _ZN7S1800C34v111Ev();
extern void _ZN7S1800C34v112Ev();
extern void _ZN7S1800C34v113Ev();
extern void _ZN7S1800C34v114Ev();
extern void _ZN7S1800C34v115Ev();
extern void _ZN7S1800C34v116Ev();
extern void _ZN7S1800C34v117Ev();
extern void _ZN7S1800C34v118Ev();
extern void _ZN7S1800C34v119Ev();
extern void _ZN7S1800C34v120Ev();
extern void _ZN7S1800C34v121Ev();
extern void _ZN7S1800C34v122Ev();
extern void _ZN7S1800C34v123Ev();
extern void _ZN7S1800C34v124Ev();
extern void _ZN7S1800C34v125Ev();
static  VTBL_ENTRY vtc_S1800C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1800C3[0]),
  (VTBL_ENTRY)&_ZN7S1800C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1800C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v125Ev,
};
extern VTBL_ENTRY _ZTI7S1800C3[];
extern  VTBL_ENTRY _ZTV7S1800C3[];
Class_Descriptor cd_S1800C3 = {  "S1800C3", // class name
  bases_S1800C3, 1,
  &(vtc_S1800C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1800C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1800C3),126, //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  S1800C2  : S1800C3 {
  virtual void  v126(); // _ZN7S1800C24v126Ev
  virtual void  v127(); // _ZN7S1800C24v127Ev
  virtual void  v128(); // _ZN7S1800C24v128Ev
  virtual void  v129(); // _ZN7S1800C24v129Ev
  virtual void  v130(); // _ZN7S1800C24v130Ev
  virtual void  v131(); // _ZN7S1800C24v131Ev
  virtual void  v132(); // _ZN7S1800C24v132Ev
  virtual void  v133(); // _ZN7S1800C24v133Ev
  virtual void  v134(); // _ZN7S1800C24v134Ev
  virtual void  v135(); // _ZN7S1800C24v135Ev
  virtual void  v136(); // _ZN7S1800C24v136Ev
  virtual void  v137(); // _ZN7S1800C24v137Ev
  virtual void  v138(); // _ZN7S1800C24v138Ev
  virtual void  v139(); // _ZN7S1800C24v139Ev
  virtual void  v140(); // _ZN7S1800C24v140Ev
  virtual void  v141(); // _ZN7S1800C24v141Ev
  virtual void  v142(); // _ZN7S1800C24v142Ev
  virtual void  v143(); // _ZN7S1800C24v143Ev
  ~S1800C2(); // tgen
  S1800C2(); // tgen
};
//SIG(-1 S1800C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1800C2 ::v126(){vfunc_called(this, "_ZN7S1800C24v126Ev");}
void  S1800C2 ::v127(){vfunc_called(this, "_ZN7S1800C24v127Ev");}
void  S1800C2 ::v128(){vfunc_called(this, "_ZN7S1800C24v128Ev");}
void  S1800C2 ::v129(){vfunc_called(this, "_ZN7S1800C24v129Ev");}
void  S1800C2 ::v130(){vfunc_called(this, "_ZN7S1800C24v130Ev");}
void  S1800C2 ::v131(){vfunc_called(this, "_ZN7S1800C24v131Ev");}
void  S1800C2 ::v132(){vfunc_called(this, "_ZN7S1800C24v132Ev");}
void  S1800C2 ::v133(){vfunc_called(this, "_ZN7S1800C24v133Ev");}
void  S1800C2 ::v134(){vfunc_called(this, "_ZN7S1800C24v134Ev");}
void  S1800C2 ::v135(){vfunc_called(this, "_ZN7S1800C24v135Ev");}
void  S1800C2 ::v136(){vfunc_called(this, "_ZN7S1800C24v136Ev");}
void  S1800C2 ::v137(){vfunc_called(this, "_ZN7S1800C24v137Ev");}
void  S1800C2 ::v138(){vfunc_called(this, "_ZN7S1800C24v138Ev");}
void  S1800C2 ::v139(){vfunc_called(this, "_ZN7S1800C24v139Ev");}
void  S1800C2 ::v140(){vfunc_called(this, "_ZN7S1800C24v140Ev");}
void  S1800C2 ::v141(){vfunc_called(this, "_ZN7S1800C24v141Ev");}
void  S1800C2 ::v142(){vfunc_called(this, "_ZN7S1800C24v142Ev");}
void  S1800C2 ::v143(){vfunc_called(this, "_ZN7S1800C24v143Ev");}
S1800C2 ::~S1800C2(){ note_dtor("S1800C2", this);} // tgen
S1800C2 ::S1800C2(){ note_ctor("S1800C2", this);} // tgen

static void Test_S1800C2()
{
  extern Class_Descriptor cd_S1800C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1800C2, buf);
    S1800C2 *dp, &lv = *(dp=new (buf) S1800C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1800C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1800C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1800C3*), 0, "S1800C2");
    check_base_class_offset(lv, (S1800C3*), 0, "S1800C2");
    test_class_info(&lv, &cd_S1800C2);
    dp->~S1800C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1800C2(Test_S1800C2, "S1800C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1800C2C1Ev();
extern void _ZN7S1800C2D1Ev();
Name_Map name_map_S1800C2[] = {
  NSPAIR(_ZN7S1800C2C1Ev),
  NSPAIR(_ZN7S1800C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1800C3;
extern VTBL_ENTRY _ZTI7S1800C3[];
extern  VTBL_ENTRY _ZTV7S1800C3[];
static Base_Class bases_S1800C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1800C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1800C2[];
extern void _ZN7S1800C2D1Ev();
extern void _ZN7S1800C2D0Ev();
extern void _ZN7S1800C32v4Ev();
extern void _ZN7S1800C32v5Ev();
extern void _ZN7S1800C32v6Ev();
extern void _ZN7S1800C32v7Ev();
extern void _ZN7S1800C32v8Ev();
extern void _ZN7S1800C32v9Ev();
extern void _ZN7S1800C33v10Ev();
extern void _ZN7S1800C33v11Ev();
extern void _ZN7S1800C33v12Ev();
extern void _ZN7S1800C33v13Ev();
extern void _ZN7S1800C33v14Ev();
extern void _ZN7S1800C33v15Ev();
extern void _ZN7S1800C33v16Ev();
extern void _ZN7S1800C33v17Ev();
extern void _ZN7S1800C33v18Ev();
extern void _ZN7S1800C33v19Ev();
extern void _ZN7S1800C33v20Ev();
extern void _ZN7S1800C33v21Ev();
extern void _ZN7S1800C33v22Ev();
extern void _ZN7S1800C33v23Ev();
extern void _ZN7S1800C33v24Ev();
extern void _ZN7S1800C33v25Ev();
extern void _ZN7S1800C33v26Ev();
extern void _ZN7S1800C33v27Ev();
extern void _ZN7S1800C33v28Ev();
extern void _ZN7S1800C33v29Ev();
extern void _ZN7S1800C33v30Ev();
extern void _ZN7S1800C33v31Ev();
extern void _ZN7S1800C33v32Ev();
extern void _ZN7S1800C33v33Ev();
extern void _ZN7S1800C33v34Ev();
extern void _ZN7S1800C33v35Ev();
extern void _ZN7S1800C33v36Ev();
extern void _ZN7S1800C33v37Ev();
extern void _ZN7S1800C33v38Ev();
extern void _ZN7S1800C33v39Ev();
extern void _ZN7S1800C33v40Ev();
extern void _ZN7S1800C33v41Ev();
extern void _ZN7S1800C33v42Ev();
extern void _ZN7S1800C33v43Ev();
extern void _ZN7S1800C33v44Ev();
extern void _ZN7S1800C33v45Ev();
extern void _ZN7S1800C33v46Ev();
extern void _ZN7S1800C33v47Ev();
extern void _ZN7S1800C33v48Ev();
extern void _ZN7S1800C33v49Ev();
extern void _ZN7S1800C33v50Ev();
extern void _ZN7S1800C33v51Ev();
extern void _ZN7S1800C33v52Ev();
extern void _ZN7S1800C33v53Ev();
extern void _ZN7S1800C33v54Ev();
extern void _ZN7S1800C33v55Ev();
extern void _ZN7S1800C33v56Ev();
extern void _ZN7S1800C33v57Ev();
extern void _ZN7S1800C33v58Ev();
extern void _ZN7S1800C33v59Ev();
extern void _ZN7S1800C33v60Ev();
extern void _ZN7S1800C33v61Ev();
extern void _ZN7S1800C33v62Ev();
extern void _ZN7S1800C33v63Ev();
extern void _ZN7S1800C33v64Ev();
extern void _ZN7S1800C33v65Ev();
extern void _ZN7S1800C33v66Ev();
extern void _ZN7S1800C33v67Ev();
extern void _ZN7S1800C33v68Ev();
extern void _ZN7S1800C33v69Ev();
extern void _ZN7S1800C33v70Ev();
extern void _ZN7S1800C33v71Ev();
extern void _ZN7S1800C33v72Ev();
extern void _ZN7S1800C33v73Ev();
extern void _ZN7S1800C33v74Ev();
extern void _ZN7S1800C33v75Ev();
extern void _ZN7S1800C33v76Ev();
extern void _ZN7S1800C33v77Ev();
extern void _ZN7S1800C33v78Ev();
extern void _ZN7S1800C33v79Ev();
extern void _ZN7S1800C33v80Ev();
extern void _ZN7S1800C33v81Ev();
extern void _ZN7S1800C33v82Ev();
extern void _ZN7S1800C33v83Ev();
extern void _ZN7S1800C33v84Ev();
extern void _ZN7S1800C33v85Ev();
extern void _ZN7S1800C33v86Ev();
extern void _ZN7S1800C33v87Ev();
extern void _ZN7S1800C33v88Ev();
extern void _ZN7S1800C33v89Ev();
extern void _ZN7S1800C33v90Ev();
extern void _ZN7S1800C33v91Ev();
extern void _ZN7S1800C33v92Ev();
extern void _ZN7S1800C33v93Ev();
extern void _ZN7S1800C33v94Ev();
extern void _ZN7S1800C33v95Ev();
extern void _ZN7S1800C33v96Ev();
extern void _ZN7S1800C33v97Ev();
extern void _ZN7S1800C33v98Ev();
extern void _ZN7S1800C33v99Ev();
extern void _ZN7S1800C34v100Ev();
extern void _ZN7S1800C34v101Ev();
extern void _ZN7S1800C34v102Ev();
extern void _ZN7S1800C34v103Ev();
extern void _ZN7S1800C34v104Ev();
extern void _ZN7S1800C34v105Ev();
extern void _ZN7S1800C34v106Ev();
extern void _ZN7S1800C34v107Ev();
extern void _ZN7S1800C34v108Ev();
extern void _ZN7S1800C34v109Ev();
extern void _ZN7S1800C34v110Ev();
extern void _ZN7S1800C34v111Ev();
extern void _ZN7S1800C34v112Ev();
extern void _ZN7S1800C34v113Ev();
extern void _ZN7S1800C34v114Ev();
extern void _ZN7S1800C34v115Ev();
extern void _ZN7S1800C34v116Ev();
extern void _ZN7S1800C34v117Ev();
extern void _ZN7S1800C34v118Ev();
extern void _ZN7S1800C34v119Ev();
extern void _ZN7S1800C34v120Ev();
extern void _ZN7S1800C34v121Ev();
extern void _ZN7S1800C34v122Ev();
extern void _ZN7S1800C34v123Ev();
extern void _ZN7S1800C34v124Ev();
extern void _ZN7S1800C34v125Ev();
extern void _ZN7S1800C24v126Ev();
extern void _ZN7S1800C24v127Ev();
extern void _ZN7S1800C24v128Ev();
extern void _ZN7S1800C24v129Ev();
extern void _ZN7S1800C24v130Ev();
extern void _ZN7S1800C24v131Ev();
extern void _ZN7S1800C24v132Ev();
extern void _ZN7S1800C24v133Ev();
extern void _ZN7S1800C24v134Ev();
extern void _ZN7S1800C24v135Ev();
extern void _ZN7S1800C24v136Ev();
extern void _ZN7S1800C24v137Ev();
extern void _ZN7S1800C24v138Ev();
extern void _ZN7S1800C24v139Ev();
extern void _ZN7S1800C24v140Ev();
extern void _ZN7S1800C24v141Ev();
extern void _ZN7S1800C24v142Ev();
extern void _ZN7S1800C24v143Ev();
static  VTBL_ENTRY vtc_S1800C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1800C2[0]),
  (VTBL_ENTRY)&_ZN7S1800C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1800C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v143Ev,
};
extern VTBL_ENTRY _ZTI7S1800C2[];
extern  VTBL_ENTRY _ZTV7S1800C2[];
Class_Descriptor cd_S1800C2 = {  "S1800C2", // class name
  bases_S1800C2, 2,
  &(vtc_S1800C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1800C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1800C2),144, //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  S1800C1  : S1800C2 {
  virtual void  v1(); // _ZN7S1800C12v1Ev
  virtual void  v2(); // _ZN7S1800C12v2Ev
  virtual void  v3(); // _ZN7S1800C12v3Ev
  ~S1800C1(); // tgen
  S1800C1(); // tgen
};
//SIG(1 S1800C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2 v3}


void  S1800C1 ::v1(){vfunc_called(this, "_ZN7S1800C12v1Ev");}
void  S1800C1 ::v2(){vfunc_called(this, "_ZN7S1800C12v2Ev");}
void  S1800C1 ::v3(){vfunc_called(this, "_ZN7S1800C12v3Ev");}
S1800C1 ::~S1800C1(){ note_dtor("S1800C1", this);} // tgen
S1800C1 ::S1800C1(){ note_ctor("S1800C1", this);} // tgen

static void Test_S1800C1()
{
  extern Class_Descriptor cd_S1800C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1800C1, buf);
    S1800C1 *dp, &lv = *(dp=new (buf) S1800C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1800C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1800C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1800C3*)(S1800C2*), 0, "S1800C1");
    check_base_class_offset(lv, (S1800C3*)(S1800C2*), 0, "S1800C1");
    check_base_class_offset(lv, (S1800C2*), 0, "S1800C1");
    test_class_info(&lv, &cd_S1800C1);
    dp->~S1800C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1800C1(Test_S1800C1, "S1800C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1800C1C1Ev();
extern void _ZN7S1800C1D1Ev();
Name_Map name_map_S1800C1[] = {
  NSPAIR(_ZN7S1800C1C1Ev),
  NSPAIR(_ZN7S1800C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1800C3;
extern VTBL_ENTRY _ZTI7S1800C3[];
extern  VTBL_ENTRY _ZTV7S1800C3[];
extern Class_Descriptor cd_S1800C2;
extern VTBL_ENTRY _ZTI7S1800C2[];
extern  VTBL_ENTRY _ZTV7S1800C2[];
static Base_Class bases_S1800C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1800C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1800C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1800C1[];
extern void _ZN7S1800C1D1Ev();
extern void _ZN7S1800C1D0Ev();
extern void _ZN7S1800C32v4Ev();
extern void _ZN7S1800C32v5Ev();
extern void _ZN7S1800C32v6Ev();
extern void _ZN7S1800C32v7Ev();
extern void _ZN7S1800C32v8Ev();
extern void _ZN7S1800C32v9Ev();
extern void _ZN7S1800C33v10Ev();
extern void _ZN7S1800C33v11Ev();
extern void _ZN7S1800C33v12Ev();
extern void _ZN7S1800C33v13Ev();
extern void _ZN7S1800C33v14Ev();
extern void _ZN7S1800C33v15Ev();
extern void _ZN7S1800C33v16Ev();
extern void _ZN7S1800C33v17Ev();
extern void _ZN7S1800C33v18Ev();
extern void _ZN7S1800C33v19Ev();
extern void _ZN7S1800C33v20Ev();
extern void _ZN7S1800C33v21Ev();
extern void _ZN7S1800C33v22Ev();
extern void _ZN7S1800C33v23Ev();
extern void _ZN7S1800C33v24Ev();
extern void _ZN7S1800C33v25Ev();
extern void _ZN7S1800C33v26Ev();
extern void _ZN7S1800C33v27Ev();
extern void _ZN7S1800C33v28Ev();
extern void _ZN7S1800C33v29Ev();
extern void _ZN7S1800C33v30Ev();
extern void _ZN7S1800C33v31Ev();
extern void _ZN7S1800C33v32Ev();
extern void _ZN7S1800C33v33Ev();
extern void _ZN7S1800C33v34Ev();
extern void _ZN7S1800C33v35Ev();
extern void _ZN7S1800C33v36Ev();
extern void _ZN7S1800C33v37Ev();
extern void _ZN7S1800C33v38Ev();
extern void _ZN7S1800C33v39Ev();
extern void _ZN7S1800C33v40Ev();
extern void _ZN7S1800C33v41Ev();
extern void _ZN7S1800C33v42Ev();
extern void _ZN7S1800C33v43Ev();
extern void _ZN7S1800C33v44Ev();
extern void _ZN7S1800C33v45Ev();
extern void _ZN7S1800C33v46Ev();
extern void _ZN7S1800C33v47Ev();
extern void _ZN7S1800C33v48Ev();
extern void _ZN7S1800C33v49Ev();
extern void _ZN7S1800C33v50Ev();
extern void _ZN7S1800C33v51Ev();
extern void _ZN7S1800C33v52Ev();
extern void _ZN7S1800C33v53Ev();
extern void _ZN7S1800C33v54Ev();
extern void _ZN7S1800C33v55Ev();
extern void _ZN7S1800C33v56Ev();
extern void _ZN7S1800C33v57Ev();
extern void _ZN7S1800C33v58Ev();
extern void _ZN7S1800C33v59Ev();
extern void _ZN7S1800C33v60Ev();
extern void _ZN7S1800C33v61Ev();
extern void _ZN7S1800C33v62Ev();
extern void _ZN7S1800C33v63Ev();
extern void _ZN7S1800C33v64Ev();
extern void _ZN7S1800C33v65Ev();
extern void _ZN7S1800C33v66Ev();
extern void _ZN7S1800C33v67Ev();
extern void _ZN7S1800C33v68Ev();
extern void _ZN7S1800C33v69Ev();
extern void _ZN7S1800C33v70Ev();
extern void _ZN7S1800C33v71Ev();
extern void _ZN7S1800C33v72Ev();
extern void _ZN7S1800C33v73Ev();
extern void _ZN7S1800C33v74Ev();
extern void _ZN7S1800C33v75Ev();
extern void _ZN7S1800C33v76Ev();
extern void _ZN7S1800C33v77Ev();
extern void _ZN7S1800C33v78Ev();
extern void _ZN7S1800C33v79Ev();
extern void _ZN7S1800C33v80Ev();
extern void _ZN7S1800C33v81Ev();
extern void _ZN7S1800C33v82Ev();
extern void _ZN7S1800C33v83Ev();
extern void _ZN7S1800C33v84Ev();
extern void _ZN7S1800C33v85Ev();
extern void _ZN7S1800C33v86Ev();
extern void _ZN7S1800C33v87Ev();
extern void _ZN7S1800C33v88Ev();
extern void _ZN7S1800C33v89Ev();
extern void _ZN7S1800C33v90Ev();
extern void _ZN7S1800C33v91Ev();
extern void _ZN7S1800C33v92Ev();
extern void _ZN7S1800C33v93Ev();
extern void _ZN7S1800C33v94Ev();
extern void _ZN7S1800C33v95Ev();
extern void _ZN7S1800C33v96Ev();
extern void _ZN7S1800C33v97Ev();
extern void _ZN7S1800C33v98Ev();
extern void _ZN7S1800C33v99Ev();
extern void _ZN7S1800C34v100Ev();
extern void _ZN7S1800C34v101Ev();
extern void _ZN7S1800C34v102Ev();
extern void _ZN7S1800C34v103Ev();
extern void _ZN7S1800C34v104Ev();
extern void _ZN7S1800C34v105Ev();
extern void _ZN7S1800C34v106Ev();
extern void _ZN7S1800C34v107Ev();
extern void _ZN7S1800C34v108Ev();
extern void _ZN7S1800C34v109Ev();
extern void _ZN7S1800C34v110Ev();
extern void _ZN7S1800C34v111Ev();
extern void _ZN7S1800C34v112Ev();
extern void _ZN7S1800C34v113Ev();
extern void _ZN7S1800C34v114Ev();
extern void _ZN7S1800C34v115Ev();
extern void _ZN7S1800C34v116Ev();
extern void _ZN7S1800C34v117Ev();
extern void _ZN7S1800C34v118Ev();
extern void _ZN7S1800C34v119Ev();
extern void _ZN7S1800C34v120Ev();
extern void _ZN7S1800C34v121Ev();
extern void _ZN7S1800C34v122Ev();
extern void _ZN7S1800C34v123Ev();
extern void _ZN7S1800C34v124Ev();
extern void _ZN7S1800C34v125Ev();
extern void _ZN7S1800C24v126Ev();
extern void _ZN7S1800C24v127Ev();
extern void _ZN7S1800C24v128Ev();
extern void _ZN7S1800C24v129Ev();
extern void _ZN7S1800C24v130Ev();
extern void _ZN7S1800C24v131Ev();
extern void _ZN7S1800C24v132Ev();
extern void _ZN7S1800C24v133Ev();
extern void _ZN7S1800C24v134Ev();
extern void _ZN7S1800C24v135Ev();
extern void _ZN7S1800C24v136Ev();
extern void _ZN7S1800C24v137Ev();
extern void _ZN7S1800C24v138Ev();
extern void _ZN7S1800C24v139Ev();
extern void _ZN7S1800C24v140Ev();
extern void _ZN7S1800C24v141Ev();
extern void _ZN7S1800C24v142Ev();
extern void _ZN7S1800C24v143Ev();
extern void _ZN7S1800C12v1Ev();
extern void _ZN7S1800C12v2Ev();
extern void _ZN7S1800C12v3Ev();
static  VTBL_ENTRY vtc_S1800C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1800C1[0]),
  (VTBL_ENTRY)&_ZN7S1800C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1800C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1800C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1800C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1800C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1800C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1800C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1800C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1800C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1800C1[];
extern  VTBL_ENTRY _ZTV7S1800C1[];
Class_Descriptor cd_S1800C1 = {  "S1800C1", // class name
  bases_S1800C1, 3,
  &(vtc_S1800C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1800C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1800C1),147, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1791C3  : S785C5_nt {
  virtual void  v3(); // _ZN7S1791C32v3Ev
  virtual void  v4(); // _ZN7S1791C32v4Ev
  virtual void  v5(); // _ZN7S1791C32v5Ev
  virtual void  v6(); // _ZN7S1791C32v6Ev
  virtual void  v7(); // _ZN7S1791C32v7Ev
  virtual void  v8(); // _ZN7S1791C32v8Ev
  virtual void  v9(); // _ZN7S1791C32v9Ev
  virtual void  v10(); // _ZN7S1791C33v10Ev
  virtual void  v11(); // _ZN7S1791C33v11Ev
  virtual void  v12(); // _ZN7S1791C33v12Ev
  virtual void  v13(); // _ZN7S1791C33v13Ev
  virtual void  v14(); // _ZN7S1791C33v14Ev
  virtual void  v15(); // _ZN7S1791C33v15Ev
  virtual void  v16(); // _ZN7S1791C33v16Ev
  virtual void  v17(); // _ZN7S1791C33v17Ev
  virtual void  v18(); // _ZN7S1791C33v18Ev
  virtual void  v19(); // _ZN7S1791C33v19Ev
  virtual void  v20(); // _ZN7S1791C33v20Ev
  virtual void  v21(); // _ZN7S1791C33v21Ev
  virtual void  v22(); // _ZN7S1791C33v22Ev
  virtual void  v23(); // _ZN7S1791C33v23Ev
  virtual void  v24(); // _ZN7S1791C33v24Ev
  virtual void  v25(); // _ZN7S1791C33v25Ev
  virtual void  v26(); // _ZN7S1791C33v26Ev
  virtual void  v27(); // _ZN7S1791C33v27Ev
  virtual void  v28(); // _ZN7S1791C33v28Ev
  virtual void  v29(); // _ZN7S1791C33v29Ev
  virtual void  v30(); // _ZN7S1791C33v30Ev
  virtual void  v31(); // _ZN7S1791C33v31Ev
  virtual void  v32(); // _ZN7S1791C33v32Ev
  virtual void  v33(); // _ZN7S1791C33v33Ev
  virtual void  v34(); // _ZN7S1791C33v34Ev
  virtual void  v35(); // _ZN7S1791C33v35Ev
  virtual void  v36(); // _ZN7S1791C33v36Ev
  virtual void  v37(); // _ZN7S1791C33v37Ev
  virtual void  v38(); // _ZN7S1791C33v38Ev
  virtual void  v39(); // _ZN7S1791C33v39Ev
  virtual void  v40(); // _ZN7S1791C33v40Ev
  virtual void  v41(); // _ZN7S1791C33v41Ev
  virtual void  v42(); // _ZN7S1791C33v42Ev
  virtual void  v43(); // _ZN7S1791C33v43Ev
  virtual void  v44(); // _ZN7S1791C33v44Ev
  virtual void  v45(); // _ZN7S1791C33v45Ev
  virtual void  v46(); // _ZN7S1791C33v46Ev
  virtual void  v47(); // _ZN7S1791C33v47Ev
  virtual void  v48(); // _ZN7S1791C33v48Ev
  virtual void  v49(); // _ZN7S1791C33v49Ev
  virtual void  v50(); // _ZN7S1791C33v50Ev
  virtual void  v51(); // _ZN7S1791C33v51Ev
  virtual void  v52(); // _ZN7S1791C33v52Ev
  virtual void  v53(); // _ZN7S1791C33v53Ev
  virtual void  v54(); // _ZN7S1791C33v54Ev
  virtual void  v55(); // _ZN7S1791C33v55Ev
  virtual void  v56(); // _ZN7S1791C33v56Ev
  virtual void  v57(); // _ZN7S1791C33v57Ev
  virtual void  v58(); // _ZN7S1791C33v58Ev
  virtual void  v59(); // _ZN7S1791C33v59Ev
  virtual void  v60(); // _ZN7S1791C33v60Ev
  virtual void  v61(); // _ZN7S1791C33v61Ev
  virtual void  v62(); // _ZN7S1791C33v62Ev
  virtual void  v63(); // _ZN7S1791C33v63Ev
  virtual void  v64(); // _ZN7S1791C33v64Ev
  virtual void  v65(); // _ZN7S1791C33v65Ev
  virtual void  v66(); // _ZN7S1791C33v66Ev
  virtual void  v67(); // _ZN7S1791C33v67Ev
  virtual void  v68(); // _ZN7S1791C33v68Ev
  virtual void  v69(); // _ZN7S1791C33v69Ev
  virtual void  v70(); // _ZN7S1791C33v70Ev
  virtual void  v71(); // _ZN7S1791C33v71Ev
  virtual void  v72(); // _ZN7S1791C33v72Ev
  virtual void  v73(); // _ZN7S1791C33v73Ev
  virtual void  v74(); // _ZN7S1791C33v74Ev
  virtual void  v75(); // _ZN7S1791C33v75Ev
  virtual void  v76(); // _ZN7S1791C33v76Ev
  virtual void  v77(); // _ZN7S1791C33v77Ev
  virtual void  v78(); // _ZN7S1791C33v78Ev
  virtual void  v79(); // _ZN7S1791C33v79Ev
  virtual void  v80(); // _ZN7S1791C33v80Ev
  virtual void  v81(); // _ZN7S1791C33v81Ev
  virtual void  v82(); // _ZN7S1791C33v82Ev
  virtual void  v83(); // _ZN7S1791C33v83Ev
  virtual void  v84(); // _ZN7S1791C33v84Ev
  virtual void  v85(); // _ZN7S1791C33v85Ev
  virtual void  v86(); // _ZN7S1791C33v86Ev
  virtual void  v87(); // _ZN7S1791C33v87Ev
  virtual void  v88(); // _ZN7S1791C33v88Ev
  virtual void  v89(); // _ZN7S1791C33v89Ev
  virtual void  v90(); // _ZN7S1791C33v90Ev
  virtual void  v91(); // _ZN7S1791C33v91Ev
  virtual void  v92(); // _ZN7S1791C33v92Ev
  virtual void  v93(); // _ZN7S1791C33v93Ev
  virtual void  v94(); // _ZN7S1791C33v94Ev
  virtual void  v95(); // _ZN7S1791C33v95Ev
  virtual void  v96(); // _ZN7S1791C33v96Ev
  virtual void  v97(); // _ZN7S1791C33v97Ev
  virtual void  v98(); // _ZN7S1791C33v98Ev
  virtual void  v99(); // _ZN7S1791C33v99Ev
  virtual void  v100(); // _ZN7S1791C34v100Ev
  virtual void  v101(); // _ZN7S1791C34v101Ev
  virtual void  v102(); // _ZN7S1791C34v102Ev
  virtual void  v103(); // _ZN7S1791C34v103Ev
  virtual void  v104(); // _ZN7S1791C34v104Ev
  virtual void  v105(); // _ZN7S1791C34v105Ev
  virtual void  v106(); // _ZN7S1791C34v106Ev
  virtual void  v107(); // _ZN7S1791C34v107Ev
  virtual void  v108(); // _ZN7S1791C34v108Ev
  virtual void  v109(); // _ZN7S1791C34v109Ev
  virtual void  v110(); // _ZN7S1791C34v110Ev
  virtual void  v111(); // _ZN7S1791C34v111Ev
  virtual void  v112(); // _ZN7S1791C34v112Ev
  virtual void  v113(); // _ZN7S1791C34v113Ev
  virtual void  v114(); // _ZN7S1791C34v114Ev
  virtual void  v115(); // _ZN7S1791C34v115Ev
  virtual void  v116(); // _ZN7S1791C34v116Ev
  virtual void  v117(); // _ZN7S1791C34v117Ev
  virtual void  v118(); // _ZN7S1791C34v118Ev
  virtual void  v119(); // _ZN7S1791C34v119Ev
  virtual void  v120(); // _ZN7S1791C34v120Ev
  virtual void  v121(); // _ZN7S1791C34v121Ev
  virtual void  v122(); // _ZN7S1791C34v122Ev
  virtual void  v123(); // _ZN7S1791C34v123Ev
  virtual void  v124(); // _ZN7S1791C34v124Ev
  ~S1791C3(); // tgen
  S1791C3(); // tgen
};
//SIG(-1 S1791C3) C1{ BC2{ vd m Fp Fi} 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 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}


void  S1791C3 ::v3(){vfunc_called(this, "_ZN7S1791C32v3Ev");}
void  S1791C3 ::v4(){vfunc_called(this, "_ZN7S1791C32v4Ev");}
void  S1791C3 ::v5(){vfunc_called(this, "_ZN7S1791C32v5Ev");}
void  S1791C3 ::v6(){vfunc_called(this, "_ZN7S1791C32v6Ev");}
void  S1791C3 ::v7(){vfunc_called(this, "_ZN7S1791C32v7Ev");}
void  S1791C3 ::v8(){vfunc_called(this, "_ZN7S1791C32v8Ev");}
void  S1791C3 ::v9(){vfunc_called(this, "_ZN7S1791C32v9Ev");}
void  S1791C3 ::v10(){vfunc_called(this, "_ZN7S1791C33v10Ev");}
void  S1791C3 ::v11(){vfunc_called(this, "_ZN7S1791C33v11Ev");}
void  S1791C3 ::v12(){vfunc_called(this, "_ZN7S1791C33v12Ev");}
void  S1791C3 ::v13(){vfunc_called(this, "_ZN7S1791C33v13Ev");}
void  S1791C3 ::v14(){vfunc_called(this, "_ZN7S1791C33v14Ev");}
void  S1791C3 ::v15(){vfunc_called(this, "_ZN7S1791C33v15Ev");}
void  S1791C3 ::v16(){vfunc_called(this, "_ZN7S1791C33v16Ev");}
void  S1791C3 ::v17(){vfunc_called(this, "_ZN7S1791C33v17Ev");}
void  S1791C3 ::v18(){vfunc_called(this, "_ZN7S1791C33v18Ev");}
void  S1791C3 ::v19(){vfunc_called(this, "_ZN7S1791C33v19Ev");}
void  S1791C3 ::v20(){vfunc_called(this, "_ZN7S1791C33v20Ev");}
void  S1791C3 ::v21(){vfunc_called(this, "_ZN7S1791C33v21Ev");}
void  S1791C3 ::v22(){vfunc_called(this, "_ZN7S1791C33v22Ev");}
void  S1791C3 ::v23(){vfunc_called(this, "_ZN7S1791C33v23Ev");}
void  S1791C3 ::v24(){vfunc_called(this, "_ZN7S1791C33v24Ev");}
void  S1791C3 ::v25(){vfunc_called(this, "_ZN7S1791C33v25Ev");}
void  S1791C3 ::v26(){vfunc_called(this, "_ZN7S1791C33v26Ev");}
void  S1791C3 ::v27(){vfunc_called(this, "_ZN7S1791C33v27Ev");}
void  S1791C3 ::v28(){vfunc_called(this, "_ZN7S1791C33v28Ev");}
void  S1791C3 ::v29(){vfunc_called(this, "_ZN7S1791C33v29Ev");}
void  S1791C3 ::v30(){vfunc_called(this, "_ZN7S1791C33v30Ev");}
void  S1791C3 ::v31(){vfunc_called(this, "_ZN7S1791C33v31Ev");}
void  S1791C3 ::v32(){vfunc_called(this, "_ZN7S1791C33v32Ev");}
void  S1791C3 ::v33(){vfunc_called(this, "_ZN7S1791C33v33Ev");}
void  S1791C3 ::v34(){vfunc_called(this, "_ZN7S1791C33v34Ev");}
void  S1791C3 ::v35(){vfunc_called(this, "_ZN7S1791C33v35Ev");}
void  S1791C3 ::v36(){vfunc_called(this, "_ZN7S1791C33v36Ev");}
void  S1791C3 ::v37(){vfunc_called(this, "_ZN7S1791C33v37Ev");}
void  S1791C3 ::v38(){vfunc_called(this, "_ZN7S1791C33v38Ev");}
void  S1791C3 ::v39(){vfunc_called(this, "_ZN7S1791C33v39Ev");}
void  S1791C3 ::v40(){vfunc_called(this, "_ZN7S1791C33v40Ev");}
void  S1791C3 ::v41(){vfunc_called(this, "_ZN7S1791C33v41Ev");}
void  S1791C3 ::v42(){vfunc_called(this, "_ZN7S1791C33v42Ev");}
void  S1791C3 ::v43(){vfunc_called(this, "_ZN7S1791C33v43Ev");}
void  S1791C3 ::v44(){vfunc_called(this, "_ZN7S1791C33v44Ev");}
void  S1791C3 ::v45(){vfunc_called(this, "_ZN7S1791C33v45Ev");}
void  S1791C3 ::v46(){vfunc_called(this, "_ZN7S1791C33v46Ev");}
void  S1791C3 ::v47(){vfunc_called(this, "_ZN7S1791C33v47Ev");}
void  S1791C3 ::v48(){vfunc_called(this, "_ZN7S1791C33v48Ev");}
void  S1791C3 ::v49(){vfunc_called(this, "_ZN7S1791C33v49Ev");}
void  S1791C3 ::v50(){vfunc_called(this, "_ZN7S1791C33v50Ev");}
void  S1791C3 ::v51(){vfunc_called(this, "_ZN7S1791C33v51Ev");}
void  S1791C3 ::v52(){vfunc_called(this, "_ZN7S1791C33v52Ev");}
void  S1791C3 ::v53(){vfunc_called(this, "_ZN7S1791C33v53Ev");}
void  S1791C3 ::v54(){vfunc_called(this, "_ZN7S1791C33v54Ev");}
void  S1791C3 ::v55(){vfunc_called(this, "_ZN7S1791C33v55Ev");}
void  S1791C3 ::v56(){vfunc_called(this, "_ZN7S1791C33v56Ev");}
void  S1791C3 ::v57(){vfunc_called(this, "_ZN7S1791C33v57Ev");}
void  S1791C3 ::v58(){vfunc_called(this, "_ZN7S1791C33v58Ev");}
void  S1791C3 ::v59(){vfunc_called(this, "_ZN7S1791C33v59Ev");}
void  S1791C3 ::v60(){vfunc_called(this, "_ZN7S1791C33v60Ev");}
void  S1791C3 ::v61(){vfunc_called(this, "_ZN7S1791C33v61Ev");}
void  S1791C3 ::v62(){vfunc_called(this, "_ZN7S1791C33v62Ev");}
void  S1791C3 ::v63(){vfunc_called(this, "_ZN7S1791C33v63Ev");}
void  S1791C3 ::v64(){vfunc_called(this, "_ZN7S1791C33v64Ev");}
void  S1791C3 ::v65(){vfunc_called(this, "_ZN7S1791C33v65Ev");}
void  S1791C3 ::v66(){vfunc_called(this, "_ZN7S1791C33v66Ev");}
void  S1791C3 ::v67(){vfunc_called(this, "_ZN7S1791C33v67Ev");}
void  S1791C3 ::v68(){vfunc_called(this, "_ZN7S1791C33v68Ev");}
void  S1791C3 ::v69(){vfunc_called(this, "_ZN7S1791C33v69Ev");}
void  S1791C3 ::v70(){vfunc_called(this, "_ZN7S1791C33v70Ev");}
void  S1791C3 ::v71(){vfunc_called(this, "_ZN7S1791C33v71Ev");}
void  S1791C3 ::v72(){vfunc_called(this, "_ZN7S1791C33v72Ev");}
void  S1791C3 ::v73(){vfunc_called(this, "_ZN7S1791C33v73Ev");}
void  S1791C3 ::v74(){vfunc_called(this, "_ZN7S1791C33v74Ev");}
void  S1791C3 ::v75(){vfunc_called(this, "_ZN7S1791C33v75Ev");}
void  S1791C3 ::v76(){vfunc_called(this, "_ZN7S1791C33v76Ev");}
void  S1791C3 ::v77(){vfunc_called(this, "_ZN7S1791C33v77Ev");}
void  S1791C3 ::v78(){vfunc_called(this, "_ZN7S1791C33v78Ev");}
void  S1791C3 ::v79(){vfunc_called(this, "_ZN7S1791C33v79Ev");}
void  S1791C3 ::v80(){vfunc_called(this, "_ZN7S1791C33v80Ev");}
void  S1791C3 ::v81(){vfunc_called(this, "_ZN7S1791C33v81Ev");}
void  S1791C3 ::v82(){vfunc_called(this, "_ZN7S1791C33v82Ev");}
void  S1791C3 ::v83(){vfunc_called(this, "_ZN7S1791C33v83Ev");}
void  S1791C3 ::v84(){vfunc_called(this, "_ZN7S1791C33v84Ev");}
void  S1791C3 ::v85(){vfunc_called(this, "_ZN7S1791C33v85Ev");}
void  S1791C3 ::v86(){vfunc_called(this, "_ZN7S1791C33v86Ev");}
void  S1791C3 ::v87(){vfunc_called(this, "_ZN7S1791C33v87Ev");}
void  S1791C3 ::v88(){vfunc_called(this, "_ZN7S1791C33v88Ev");}
void  S1791C3 ::v89(){vfunc_called(this, "_ZN7S1791C33v89Ev");}
void  S1791C3 ::v90(){vfunc_called(this, "_ZN7S1791C33v90Ev");}
void  S1791C3 ::v91(){vfunc_called(this, "_ZN7S1791C33v91Ev");}
void  S1791C3 ::v92(){vfunc_called(this, "_ZN7S1791C33v92Ev");}
void  S1791C3 ::v93(){vfunc_called(this, "_ZN7S1791C33v93Ev");}
void  S1791C3 ::v94(){vfunc_called(this, "_ZN7S1791C33v94Ev");}
void  S1791C3 ::v95(){vfunc_called(this, "_ZN7S1791C33v95Ev");}
void  S1791C3 ::v96(){vfunc_called(this, "_ZN7S1791C33v96Ev");}
void  S1791C3 ::v97(){vfunc_called(this, "_ZN7S1791C33v97Ev");}
void  S1791C3 ::v98(){vfunc_called(this, "_ZN7S1791C33v98Ev");}
void  S1791C3 ::v99(){vfunc_called(this, "_ZN7S1791C33v99Ev");}
void  S1791C3 ::v100(){vfunc_called(this, "_ZN7S1791C34v100Ev");}
void  S1791C3 ::v101(){vfunc_called(this, "_ZN7S1791C34v101Ev");}
void  S1791C3 ::v102(){vfunc_called(this, "_ZN7S1791C34v102Ev");}
void  S1791C3 ::v103(){vfunc_called(this, "_ZN7S1791C34v103Ev");}
void  S1791C3 ::v104(){vfunc_called(this, "_ZN7S1791C34v104Ev");}
void  S1791C3 ::v105(){vfunc_called(this, "_ZN7S1791C34v105Ev");}
void  S1791C3 ::v106(){vfunc_called(this, "_ZN7S1791C34v106Ev");}
void  S1791C3 ::v107(){vfunc_called(this, "_ZN7S1791C34v107Ev");}
void  S1791C3 ::v108(){vfunc_called(this, "_ZN7S1791C34v108Ev");}
void  S1791C3 ::v109(){vfunc_called(this, "_ZN7S1791C34v109Ev");}
void  S1791C3 ::v110(){vfunc_called(this, "_ZN7S1791C34v110Ev");}
void  S1791C3 ::v111(){vfunc_called(this, "_ZN7S1791C34v111Ev");}
void  S1791C3 ::v112(){vfunc_called(this, "_ZN7S1791C34v112Ev");}
void  S1791C3 ::v113(){vfunc_called(this, "_ZN7S1791C34v113Ev");}
void  S1791C3 ::v114(){vfunc_called(this, "_ZN7S1791C34v114Ev");}
void  S1791C3 ::v115(){vfunc_called(this, "_ZN7S1791C34v115Ev");}
void  S1791C3 ::v116(){vfunc_called(this, "_ZN7S1791C34v116Ev");}
void  S1791C3 ::v117(){vfunc_called(this, "_ZN7S1791C34v117Ev");}
void  S1791C3 ::v118(){vfunc_called(this, "_ZN7S1791C34v118Ev");}
void  S1791C3 ::v119(){vfunc_called(this, "_ZN7S1791C34v119Ev");}
void  S1791C3 ::v120(){vfunc_called(this, "_ZN7S1791C34v120Ev");}
void  S1791C3 ::v121(){vfunc_called(this, "_ZN7S1791C34v121Ev");}
void  S1791C3 ::v122(){vfunc_called(this, "_ZN7S1791C34v122Ev");}
void  S1791C3 ::v123(){vfunc_called(this, "_ZN7S1791C34v123Ev");}
void  S1791C3 ::v124(){vfunc_called(this, "_ZN7S1791C34v124Ev");}
S1791C3 ::~S1791C3(){ note_dtor("S1791C3", this);} // tgen
S1791C3 ::S1791C3(){ note_ctor("S1791C3", this);} // tgen

static void Test_S1791C3()
{
  extern Class_Descriptor cd_S1791C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1791C3, buf);
    S1791C3 *dp, &lv = *(dp=new (buf) S1791C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1791C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1791C3)");
    check_base_class_offset(lv, (S785C5_nt*), 0, "S1791C3");
    test_class_info(&lv, &cd_S1791C3);
    dp->~S1791C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1791C3(Test_S1791C3, "S1791C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1791C3C1Ev();
extern void _ZN7S1791C3D1Ev();
Name_Map name_map_S1791C3[] = {
  NSPAIR(_ZN7S1791C3C1Ev),
  NSPAIR(_ZN7S1791C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
static Base_Class bases_S1791C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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 _ZTI7S1791C3[];
extern void _ZN7S1791C3D1Ev();
extern void _ZN7S1791C3D0Ev();
extern void _ZN7S1791C32v3Ev();
extern void _ZN7S1791C32v4Ev();
extern void _ZN7S1791C32v5Ev();
extern void _ZN7S1791C32v6Ev();
extern void _ZN7S1791C32v7Ev();
extern void _ZN7S1791C32v8Ev();
extern void _ZN7S1791C32v9Ev();
extern void _ZN7S1791C33v10Ev();
extern void _ZN7S1791C33v11Ev();
extern void _ZN7S1791C33v12Ev();
extern void _ZN7S1791C33v13Ev();
extern void _ZN7S1791C33v14Ev();
extern void _ZN7S1791C33v15Ev();
extern void _ZN7S1791C33v16Ev();
extern void _ZN7S1791C33v17Ev();
extern void _ZN7S1791C33v18Ev();
extern void _ZN7S1791C33v19Ev();
extern void _ZN7S1791C33v20Ev();
extern void _ZN7S1791C33v21Ev();
extern void _ZN7S1791C33v22Ev();
extern void _ZN7S1791C33v23Ev();
extern void _ZN7S1791C33v24Ev();
extern void _ZN7S1791C33v25Ev();
extern void _ZN7S1791C33v26Ev();
extern void _ZN7S1791C33v27Ev();
extern void _ZN7S1791C33v28Ev();
extern void _ZN7S1791C33v29Ev();
extern void _ZN7S1791C33v30Ev();
extern void _ZN7S1791C33v31Ev();
extern void _ZN7S1791C33v32Ev();
extern void _ZN7S1791C33v33Ev();
extern void _ZN7S1791C33v34Ev();
extern void _ZN7S1791C33v35Ev();
extern void _ZN7S1791C33v36Ev();
extern void _ZN7S1791C33v37Ev();
extern void _ZN7S1791C33v38Ev();
extern void _ZN7S1791C33v39Ev();
extern void _ZN7S1791C33v40Ev();
extern void _ZN7S1791C33v41Ev();
extern void _ZN7S1791C33v42Ev();
extern void _ZN7S1791C33v43Ev();
extern void _ZN7S1791C33v44Ev();
extern void _ZN7S1791C33v45Ev();
extern void _ZN7S1791C33v46Ev();
extern void _ZN7S1791C33v47Ev();
extern void _ZN7S1791C33v48Ev();
extern void _ZN7S1791C33v49Ev();
extern void _ZN7S1791C33v50Ev();
extern void _ZN7S1791C33v51Ev();
extern void _ZN7S1791C33v52Ev();
extern void _ZN7S1791C33v53Ev();
extern void _ZN7S1791C33v54Ev();
extern void _ZN7S1791C33v55Ev();
extern void _ZN7S1791C33v56Ev();
extern void _ZN7S1791C33v57Ev();
extern void _ZN7S1791C33v58Ev();
extern void _ZN7S1791C33v59Ev();
extern void _ZN7S1791C33v60Ev();
extern void _ZN7S1791C33v61Ev();
extern void _ZN7S1791C33v62Ev();
extern void _ZN7S1791C33v63Ev();
extern void _ZN7S1791C33v64Ev();
extern void _ZN7S1791C33v65Ev();
extern void _ZN7S1791C33v66Ev();
extern void _ZN7S1791C33v67Ev();
extern void _ZN7S1791C33v68Ev();
extern void _ZN7S1791C33v69Ev();
extern void _ZN7S1791C33v70Ev();
extern void _ZN7S1791C33v71Ev();
extern void _ZN7S1791C33v72Ev();
extern void _ZN7S1791C33v73Ev();
extern void _ZN7S1791C33v74Ev();
extern void _ZN7S1791C33v75Ev();
extern void _ZN7S1791C33v76Ev();
extern void _ZN7S1791C33v77Ev();
extern void _ZN7S1791C33v78Ev();
extern void _ZN7S1791C33v79Ev();
extern void _ZN7S1791C33v80Ev();
extern void _ZN7S1791C33v81Ev();
extern void _ZN7S1791C33v82Ev();
extern void _ZN7S1791C33v83Ev();
extern void _ZN7S1791C33v84Ev();
extern void _ZN7S1791C33v85Ev();
extern void _ZN7S1791C33v86Ev();
extern void _ZN7S1791C33v87Ev();
extern void _ZN7S1791C33v88Ev();
extern void _ZN7S1791C33v89Ev();
extern void _ZN7S1791C33v90Ev();
extern void _ZN7S1791C33v91Ev();
extern void _ZN7S1791C33v92Ev();
extern void _ZN7S1791C33v93Ev();
extern void _ZN7S1791C33v94Ev();
extern void _ZN7S1791C33v95Ev();
extern void _ZN7S1791C33v96Ev();
extern void _ZN7S1791C33v97Ev();
extern void _ZN7S1791C33v98Ev();
extern void _ZN7S1791C33v99Ev();
extern void _ZN7S1791C34v100Ev();
extern void _ZN7S1791C34v101Ev();
extern void _ZN7S1791C34v102Ev();
extern void _ZN7S1791C34v103Ev();
extern void _ZN7S1791C34v104Ev();
extern void _ZN7S1791C34v105Ev();
extern void _ZN7S1791C34v106Ev();
extern void _ZN7S1791C34v107Ev();
extern void _ZN7S1791C34v108Ev();
extern void _ZN7S1791C34v109Ev();
extern void _ZN7S1791C34v110Ev();
extern void _ZN7S1791C34v111Ev();
extern void _ZN7S1791C34v112Ev();
extern void _ZN7S1791C34v113Ev();
extern void _ZN7S1791C34v114Ev();
extern void _ZN7S1791C34v115Ev();
extern void _ZN7S1791C34v116Ev();
extern void _ZN7S1791C34v117Ev();
extern void _ZN7S1791C34v118Ev();
extern void _ZN7S1791C34v119Ev();
extern void _ZN7S1791C34v120Ev();
extern void _ZN7S1791C34v121Ev();
extern void _ZN7S1791C34v122Ev();
extern void _ZN7S1791C34v123Ev();
extern void _ZN7S1791C34v124Ev();
static  VTBL_ENTRY vtc_S1791C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1791C3[0]),
  (VTBL_ENTRY)&_ZN7S1791C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1791C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v124Ev,
};
extern VTBL_ENTRY _ZTI7S1791C3[];
extern  VTBL_ENTRY _ZTV7S1791C3[];
Class_Descriptor cd_S1791C3 = {  "S1791C3", // class name
  bases_S1791C3, 1,
  &(vtc_S1791C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1791C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1791C3),126, //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  S1791C2  : S1791C3 {
  virtual void  v125(); // _ZN7S1791C24v125Ev
  virtual void  v126(); // _ZN7S1791C24v126Ev
  virtual void  v127(); // _ZN7S1791C24v127Ev
  virtual void  v128(); // _ZN7S1791C24v128Ev
  virtual void  v129(); // _ZN7S1791C24v129Ev
  virtual void  v130(); // _ZN7S1791C24v130Ev
  virtual void  v131(); // _ZN7S1791C24v131Ev
  virtual void  v132(); // _ZN7S1791C24v132Ev
  virtual void  v133(); // _ZN7S1791C24v133Ev
  virtual void  v134(); // _ZN7S1791C24v134Ev
  virtual void  v135(); // _ZN7S1791C24v135Ev
  virtual void  v136(); // _ZN7S1791C24v136Ev
  virtual void  v137(); // _ZN7S1791C24v137Ev
  virtual void  v138(); // _ZN7S1791C24v138Ev
  virtual void  v139(); // _ZN7S1791C24v139Ev
  virtual void  v140(); // _ZN7S1791C24v140Ev
  virtual void  v141(); // _ZN7S1791C24v141Ev
  virtual void  v142(); // _ZN7S1791C24v142Ev
  ~S1791C2(); // tgen
  S1791C2(); // tgen
};
//SIG(-1 S1791C2) C1{ BC2{ BC3{ vd m Fp Fi} 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 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18}


void  S1791C2 ::v125(){vfunc_called(this, "_ZN7S1791C24v125Ev");}
void  S1791C2 ::v126(){vfunc_called(this, "_ZN7S1791C24v126Ev");}
void  S1791C2 ::v127(){vfunc_called(this, "_ZN7S1791C24v127Ev");}
void  S1791C2 ::v128(){vfunc_called(this, "_ZN7S1791C24v128Ev");}
void  S1791C2 ::v129(){vfunc_called(this, "_ZN7S1791C24v129Ev");}
void  S1791C2 ::v130(){vfunc_called(this, "_ZN7S1791C24v130Ev");}
void  S1791C2 ::v131(){vfunc_called(this, "_ZN7S1791C24v131Ev");}
void  S1791C2 ::v132(){vfunc_called(this, "_ZN7S1791C24v132Ev");}
void  S1791C2 ::v133(){vfunc_called(this, "_ZN7S1791C24v133Ev");}
void  S1791C2 ::v134(){vfunc_called(this, "_ZN7S1791C24v134Ev");}
void  S1791C2 ::v135(){vfunc_called(this, "_ZN7S1791C24v135Ev");}
void  S1791C2 ::v136(){vfunc_called(this, "_ZN7S1791C24v136Ev");}
void  S1791C2 ::v137(){vfunc_called(this, "_ZN7S1791C24v137Ev");}
void  S1791C2 ::v138(){vfunc_called(this, "_ZN7S1791C24v138Ev");}
void  S1791C2 ::v139(){vfunc_called(this, "_ZN7S1791C24v139Ev");}
void  S1791C2 ::v140(){vfunc_called(this, "_ZN7S1791C24v140Ev");}
void  S1791C2 ::v141(){vfunc_called(this, "_ZN7S1791C24v141Ev");}
void  S1791C2 ::v142(){vfunc_called(this, "_ZN7S1791C24v142Ev");}
S1791C2 ::~S1791C2(){ note_dtor("S1791C2", this);} // tgen
S1791C2 ::S1791C2(){ note_ctor("S1791C2", this);} // tgen

static void Test_S1791C2()
{
  extern Class_Descriptor cd_S1791C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1791C2, buf);
    S1791C2 *dp, &lv = *(dp=new (buf) S1791C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1791C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1791C2)");
    check_base_class_offset(lv, (S785C5_nt*)(S1791C3*), 0, "S1791C2");
    check_base_class_offset(lv, (S1791C3*), 0, "S1791C2");
    test_class_info(&lv, &cd_S1791C2);
    dp->~S1791C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1791C2(Test_S1791C2, "S1791C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1791C2C1Ev();
extern void _ZN7S1791C2D1Ev();
Name_Map name_map_S1791C2[] = {
  NSPAIR(_ZN7S1791C2C1Ev),
  NSPAIR(_ZN7S1791C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1791C3;
extern VTBL_ENTRY _ZTI7S1791C3[];
extern  VTBL_ENTRY _ZTV7S1791C3[];
static Base_Class bases_S1791C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1791C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1791C2[];
extern void _ZN7S1791C2D1Ev();
extern void _ZN7S1791C2D0Ev();
extern void _ZN7S1791C32v3Ev();
extern void _ZN7S1791C32v4Ev();
extern void _ZN7S1791C32v5Ev();
extern void _ZN7S1791C32v6Ev();
extern void _ZN7S1791C32v7Ev();
extern void _ZN7S1791C32v8Ev();
extern void _ZN7S1791C32v9Ev();
extern void _ZN7S1791C33v10Ev();
extern void _ZN7S1791C33v11Ev();
extern void _ZN7S1791C33v12Ev();
extern void _ZN7S1791C33v13Ev();
extern void _ZN7S1791C33v14Ev();
extern void _ZN7S1791C33v15Ev();
extern void _ZN7S1791C33v16Ev();
extern void _ZN7S1791C33v17Ev();
extern void _ZN7S1791C33v18Ev();
extern void _ZN7S1791C33v19Ev();
extern void _ZN7S1791C33v20Ev();
extern void _ZN7S1791C33v21Ev();
extern void _ZN7S1791C33v22Ev();
extern void _ZN7S1791C33v23Ev();
extern void _ZN7S1791C33v24Ev();
extern void _ZN7S1791C33v25Ev();
extern void _ZN7S1791C33v26Ev();
extern void _ZN7S1791C33v27Ev();
extern void _ZN7S1791C33v28Ev();
extern void _ZN7S1791C33v29Ev();
extern void _ZN7S1791C33v30Ev();
extern void _ZN7S1791C33v31Ev();
extern void _ZN7S1791C33v32Ev();
extern void _ZN7S1791C33v33Ev();
extern void _ZN7S1791C33v34Ev();
extern void _ZN7S1791C33v35Ev();
extern void _ZN7S1791C33v36Ev();
extern void _ZN7S1791C33v37Ev();
extern void _ZN7S1791C33v38Ev();
extern void _ZN7S1791C33v39Ev();
extern void _ZN7S1791C33v40Ev();
extern void _ZN7S1791C33v41Ev();
extern void _ZN7S1791C33v42Ev();
extern void _ZN7S1791C33v43Ev();
extern void _ZN7S1791C33v44Ev();
extern void _ZN7S1791C33v45Ev();
extern void _ZN7S1791C33v46Ev();
extern void _ZN7S1791C33v47Ev();
extern void _ZN7S1791C33v48Ev();
extern void _ZN7S1791C33v49Ev();
extern void _ZN7S1791C33v50Ev();
extern void _ZN7S1791C33v51Ev();
extern void _ZN7S1791C33v52Ev();
extern void _ZN7S1791C33v53Ev();
extern void _ZN7S1791C33v54Ev();
extern void _ZN7S1791C33v55Ev();
extern void _ZN7S1791C33v56Ev();
extern void _ZN7S1791C33v57Ev();
extern void _ZN7S1791C33v58Ev();
extern void _ZN7S1791C33v59Ev();
extern void _ZN7S1791C33v60Ev();
extern void _ZN7S1791C33v61Ev();
extern void _ZN7S1791C33v62Ev();
extern void _ZN7S1791C33v63Ev();
extern void _ZN7S1791C33v64Ev();
extern void _ZN7S1791C33v65Ev();
extern void _ZN7S1791C33v66Ev();
extern void _ZN7S1791C33v67Ev();
extern void _ZN7S1791C33v68Ev();
extern void _ZN7S1791C33v69Ev();
extern void _ZN7S1791C33v70Ev();
extern void _ZN7S1791C33v71Ev();
extern void _ZN7S1791C33v72Ev();
extern void _ZN7S1791C33v73Ev();
extern void _ZN7S1791C33v74Ev();
extern void _ZN7S1791C33v75Ev();
extern void _ZN7S1791C33v76Ev();
extern void _ZN7S1791C33v77Ev();
extern void _ZN7S1791C33v78Ev();
extern void _ZN7S1791C33v79Ev();
extern void _ZN7S1791C33v80Ev();
extern void _ZN7S1791C33v81Ev();
extern void _ZN7S1791C33v82Ev();
extern void _ZN7S1791C33v83Ev();
extern void _ZN7S1791C33v84Ev();
extern void _ZN7S1791C33v85Ev();
extern void _ZN7S1791C33v86Ev();
extern void _ZN7S1791C33v87Ev();
extern void _ZN7S1791C33v88Ev();
extern void _ZN7S1791C33v89Ev();
extern void _ZN7S1791C33v90Ev();
extern void _ZN7S1791C33v91Ev();
extern void _ZN7S1791C33v92Ev();
extern void _ZN7S1791C33v93Ev();
extern void _ZN7S1791C33v94Ev();
extern void _ZN7S1791C33v95Ev();
extern void _ZN7S1791C33v96Ev();
extern void _ZN7S1791C33v97Ev();
extern void _ZN7S1791C33v98Ev();
extern void _ZN7S1791C33v99Ev();
extern void _ZN7S1791C34v100Ev();
extern void _ZN7S1791C34v101Ev();
extern void _ZN7S1791C34v102Ev();
extern void _ZN7S1791C34v103Ev();
extern void _ZN7S1791C34v104Ev();
extern void _ZN7S1791C34v105Ev();
extern void _ZN7S1791C34v106Ev();
extern void _ZN7S1791C34v107Ev();
extern void _ZN7S1791C34v108Ev();
extern void _ZN7S1791C34v109Ev();
extern void _ZN7S1791C34v110Ev();
extern void _ZN7S1791C34v111Ev();
extern void _ZN7S1791C34v112Ev();
extern void _ZN7S1791C34v113Ev();
extern void _ZN7S1791C34v114Ev();
extern void _ZN7S1791C34v115Ev();
extern void _ZN7S1791C34v116Ev();
extern void _ZN7S1791C34v117Ev();
extern void _ZN7S1791C34v118Ev();
extern void _ZN7S1791C34v119Ev();
extern void _ZN7S1791C34v120Ev();
extern void _ZN7S1791C34v121Ev();
extern void _ZN7S1791C34v122Ev();
extern void _ZN7S1791C34v123Ev();
extern void _ZN7S1791C34v124Ev();
extern void _ZN7S1791C24v125Ev();
extern void _ZN7S1791C24v126Ev();
extern void _ZN7S1791C24v127Ev();
extern void _ZN7S1791C24v128Ev();
extern void _ZN7S1791C24v129Ev();
extern void _ZN7S1791C24v130Ev();
extern void _ZN7S1791C24v131Ev();
extern void _ZN7S1791C24v132Ev();
extern void _ZN7S1791C24v133Ev();
extern void _ZN7S1791C24v134Ev();
extern void _ZN7S1791C24v135Ev();
extern void _ZN7S1791C24v136Ev();
extern void _ZN7S1791C24v137Ev();
extern void _ZN7S1791C24v138Ev();
extern void _ZN7S1791C24v139Ev();
extern void _ZN7S1791C24v140Ev();
extern void _ZN7S1791C24v141Ev();
extern void _ZN7S1791C24v142Ev();
static  VTBL_ENTRY vtc_S1791C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1791C2[0]),
  (VTBL_ENTRY)&_ZN7S1791C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1791C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v142Ev,
};
extern VTBL_ENTRY _ZTI7S1791C2[];
extern  VTBL_ENTRY _ZTV7S1791C2[];
Class_Descriptor cd_S1791C2 = {  "S1791C2", // class name
  bases_S1791C2, 2,
  &(vtc_S1791C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1791C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1791C2),144, //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  S1791C1  : S1791C2 {
  virtual void  v1(); // _ZN7S1791C12v1Ev
  virtual void  v2(); // _ZN7S1791C12v2Ev
  ~S1791C1(); // tgen
  S1791C1(); // tgen
};
//SIG(1 S1791C1) C1{ BC2{ BC3{ BC4{ vd m Fp Fi} 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 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} v1 v2}


void  S1791C1 ::v1(){vfunc_called(this, "_ZN7S1791C12v1Ev");}
void  S1791C1 ::v2(){vfunc_called(this, "_ZN7S1791C12v2Ev");}
S1791C1 ::~S1791C1(){ note_dtor("S1791C1", this);} // tgen
S1791C1 ::S1791C1(){ note_ctor("S1791C1", this);} // tgen

static void Test_S1791C1()
{
  extern Class_Descriptor cd_S1791C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1791C1, buf);
    S1791C1 *dp, &lv = *(dp=new (buf) S1791C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1791C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1791C1)");
    check_base_class_offset(lv, (S785C5_nt*)(S1791C3*)(S1791C2*), 0, "S1791C1");
    check_base_class_offset(lv, (S1791C3*)(S1791C2*), 0, "S1791C1");
    check_base_class_offset(lv, (S1791C2*), 0, "S1791C1");
    test_class_info(&lv, &cd_S1791C1);
    dp->~S1791C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1791C1(Test_S1791C1, "S1791C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1791C1C1Ev();
extern void _ZN7S1791C1D1Ev();
Name_Map name_map_S1791C1[] = {
  NSPAIR(_ZN7S1791C1C1Ev),
  NSPAIR(_ZN7S1791C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S785C5_nt;
extern VTBL_ENTRY _ZTI9S785C5_nt[];
extern  VTBL_ENTRY _ZTV9S785C5_nt[];
extern Class_Descriptor cd_S1791C3;
extern VTBL_ENTRY _ZTI7S1791C3[];
extern  VTBL_ENTRY _ZTV7S1791C3[];
extern Class_Descriptor cd_S1791C2;
extern VTBL_ENTRY _ZTI7S1791C2[];
extern  VTBL_ENTRY _ZTV7S1791C2[];
static Base_Class bases_S1791C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S785C5_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_S1791C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1791C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1791C1[];
extern void _ZN7S1791C1D1Ev();
extern void _ZN7S1791C1D0Ev();
extern void _ZN7S1791C32v3Ev();
extern void _ZN7S1791C32v4Ev();
extern void _ZN7S1791C32v5Ev();
extern void _ZN7S1791C32v6Ev();
extern void _ZN7S1791C32v7Ev();
extern void _ZN7S1791C32v8Ev();
extern void _ZN7S1791C32v9Ev();
extern void _ZN7S1791C33v10Ev();
extern void _ZN7S1791C33v11Ev();
extern void _ZN7S1791C33v12Ev();
extern void _ZN7S1791C33v13Ev();
extern void _ZN7S1791C33v14Ev();
extern void _ZN7S1791C33v15Ev();
extern void _ZN7S1791C33v16Ev();
extern void _ZN7S1791C33v17Ev();
extern void _ZN7S1791C33v18Ev();
extern void _ZN7S1791C33v19Ev();
extern void _ZN7S1791C33v20Ev();
extern void _ZN7S1791C33v21Ev();
extern void _ZN7S1791C33v22Ev();
extern void _ZN7S1791C33v23Ev();
extern void _ZN7S1791C33v24Ev();
extern void _ZN7S1791C33v25Ev();
extern void _ZN7S1791C33v26Ev();
extern void _ZN7S1791C33v27Ev();
extern void _ZN7S1791C33v28Ev();
extern void _ZN7S1791C33v29Ev();
extern void _ZN7S1791C33v30Ev();
extern void _ZN7S1791C33v31Ev();
extern void _ZN7S1791C33v32Ev();
extern void _ZN7S1791C33v33Ev();
extern void _ZN7S1791C33v34Ev();
extern void _ZN7S1791C33v35Ev();
extern void _ZN7S1791C33v36Ev();
extern void _ZN7S1791C33v37Ev();
extern void _ZN7S1791C33v38Ev();
extern void _ZN7S1791C33v39Ev();
extern void _ZN7S1791C33v40Ev();
extern void _ZN7S1791C33v41Ev();
extern void _ZN7S1791C33v42Ev();
extern void _ZN7S1791C33v43Ev();
extern void _ZN7S1791C33v44Ev();
extern void _ZN7S1791C33v45Ev();
extern void _ZN7S1791C33v46Ev();
extern void _ZN7S1791C33v47Ev();
extern void _ZN7S1791C33v48Ev();
extern void _ZN7S1791C33v49Ev();
extern void _ZN7S1791C33v50Ev();
extern void _ZN7S1791C33v51Ev();
extern void _ZN7S1791C33v52Ev();
extern void _ZN7S1791C33v53Ev();
extern void _ZN7S1791C33v54Ev();
extern void _ZN7S1791C33v55Ev();
extern void _ZN7S1791C33v56Ev();
extern void _ZN7S1791C33v57Ev();
extern void _ZN7S1791C33v58Ev();
extern void _ZN7S1791C33v59Ev();
extern void _ZN7S1791C33v60Ev();
extern void _ZN7S1791C33v61Ev();
extern void _ZN7S1791C33v62Ev();
extern void _ZN7S1791C33v63Ev();
extern void _ZN7S1791C33v64Ev();
extern void _ZN7S1791C33v65Ev();
extern void _ZN7S1791C33v66Ev();
extern void _ZN7S1791C33v67Ev();
extern void _ZN7S1791C33v68Ev();
extern void _ZN7S1791C33v69Ev();
extern void _ZN7S1791C33v70Ev();
extern void _ZN7S1791C33v71Ev();
extern void _ZN7S1791C33v72Ev();
extern void _ZN7S1791C33v73Ev();
extern void _ZN7S1791C33v74Ev();
extern void _ZN7S1791C33v75Ev();
extern void _ZN7S1791C33v76Ev();
extern void _ZN7S1791C33v77Ev();
extern void _ZN7S1791C33v78Ev();
extern void _ZN7S1791C33v79Ev();
extern void _ZN7S1791C33v80Ev();
extern void _ZN7S1791C33v81Ev();
extern void _ZN7S1791C33v82Ev();
extern void _ZN7S1791C33v83Ev();
extern void _ZN7S1791C33v84Ev();
extern void _ZN7S1791C33v85Ev();
extern void _ZN7S1791C33v86Ev();
extern void _ZN7S1791C33v87Ev();
extern void _ZN7S1791C33v88Ev();
extern void _ZN7S1791C33v89Ev();
extern void _ZN7S1791C33v90Ev();
extern void _ZN7S1791C33v91Ev();
extern void _ZN7S1791C33v92Ev();
extern void _ZN7S1791C33v93Ev();
extern void _ZN7S1791C33v94Ev();
extern void _ZN7S1791C33v95Ev();
extern void _ZN7S1791C33v96Ev();
extern void _ZN7S1791C33v97Ev();
extern void _ZN7S1791C33v98Ev();
extern void _ZN7S1791C33v99Ev();
extern void _ZN7S1791C34v100Ev();
extern void _ZN7S1791C34v101Ev();
extern void _ZN7S1791C34v102Ev();
extern void _ZN7S1791C34v103Ev();
extern void _ZN7S1791C34v104Ev();
extern void _ZN7S1791C34v105Ev();
extern void _ZN7S1791C34v106Ev();
extern void _ZN7S1791C34v107Ev();
extern void _ZN7S1791C34v108Ev();
extern void _ZN7S1791C34v109Ev();
extern void _ZN7S1791C34v110Ev();
extern void _ZN7S1791C34v111Ev();
extern void _ZN7S1791C34v112Ev();
extern void _ZN7S1791C34v113Ev();
extern void _ZN7S1791C34v114Ev();
extern void _ZN7S1791C34v115Ev();
extern void _ZN7S1791C34v116Ev();
extern void _ZN7S1791C34v117Ev();
extern void _ZN7S1791C34v118Ev();
extern void _ZN7S1791C34v119Ev();
extern void _ZN7S1791C34v120Ev();
extern void _ZN7S1791C34v121Ev();
extern void _ZN7S1791C34v122Ev();
extern void _ZN7S1791C34v123Ev();
extern void _ZN7S1791C34v124Ev();
extern void _ZN7S1791C24v125Ev();
extern void _ZN7S1791C24v126Ev();
extern void _ZN7S1791C24v127Ev();
extern void _ZN7S1791C24v128Ev();
extern void _ZN7S1791C24v129Ev();
extern void _ZN7S1791C24v130Ev();
extern void _ZN7S1791C24v131Ev();
extern void _ZN7S1791C24v132Ev();
extern void _ZN7S1791C24v133Ev();
extern void _ZN7S1791C24v134Ev();
extern void _ZN7S1791C24v135Ev();
extern void _ZN7S1791C24v136Ev();
extern void _ZN7S1791C24v137Ev();
extern void _ZN7S1791C24v138Ev();
extern void _ZN7S1791C24v139Ev();
extern void _ZN7S1791C24v140Ev();
extern void _ZN7S1791C24v141Ev();
extern void _ZN7S1791C24v142Ev();
extern void _ZN7S1791C12v1Ev();
extern void _ZN7S1791C12v2Ev();
static  VTBL_ENTRY vtc_S1791C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1791C1[0]),
  (VTBL_ENTRY)&_ZN7S1791C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1791C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1791C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v19Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v20Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v21Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v29Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v30Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v31Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v32Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v33Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v34Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v35Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v36Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v37Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v38Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v39Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v40Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v41Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v42Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v43Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v44Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v45Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v46Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v47Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v48Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v49Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v50Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v51Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v52Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v53Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v54Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v55Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v56Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v57Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v58Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v59Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v60Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v61Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v62Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v63Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v64Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v65Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v66Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v78Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v79Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v80Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v81Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v82Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v83Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v84Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v85Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v86Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v87Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v88Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v89Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v90Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v91Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v92Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v93Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v94Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1791C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1791C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1791C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1791C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1791C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1791C1[];
extern  VTBL_ENTRY _ZTV7S1791C1[];
Class_Descriptor cd_S1791C1 = {  "S1791C1", // class name
  bases_S1791C1, 3,
  &(vtc_S1791C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1791C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1791C1),146, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C4  {
  short s19244c4f0:6;
  long s19244c4f1;
  short s19244c4f2:4;
  __tsi64 s19244c4f3[13];
  void *s19244c4f4;
  virtual void  v6(); // _ZN8S19244C42v6Ev
  ~S19244C4(); // tgen
  S19244C4(); // tgen
};
//SIG(-1 S19244C4) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S19244C4 ::v6(){vfunc_called(this, "_ZN8S19244C42v6Ev");}
S19244C4 ::~S19244C4(){ note_dtor("S19244C4", this);} // tgen
S19244C4 ::S19244C4(){ note_ctor("S19244C4", this);} // tgen

static void Test_S19244C4()
{
  extern Class_Descriptor cd_S19244C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,32)];
    init_test(&cd_S19244C4, buf);
    S19244C4 *dp, &lv = *(dp=new (buf) S19244C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,124), "sizeof(S19244C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19244C4)");
    set_bf_and_test(lv, s19244c4f0, ABISELECT(8,4), 0, 6, 1, "S19244C4");
    set_bf_and_test(lv, s19244c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19244C4");
    check_field_offset(lv, s19244c4f1, ABISELECT(16,8), "S19244C4.s19244c4f1");
    set_bf_and_test(lv, s19244c4f2, ABISELECT(24,12), 0, 4, 1, "S19244C4");
    set_bf_and_test(lv, s19244c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19244C4");
    check_field_offset(lv, s19244c4f3, ABISELECT(32,16), "S19244C4.s19244c4f3");
    check_field_offset(lv, s19244c4f4, ABISELECT(136,120), "S19244C4.s19244c4f4");
    test_class_info(&lv, &cd_S19244C4);
    dp->~S19244C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C4(Test_S19244C4, "S19244C4", ABISELECT(144,124));

#else // __cplusplus

extern void _ZN8S19244C4C1Ev();
extern void _ZN8S19244C4D1Ev();
Name_Map name_map_S19244C4[] = {
  NSPAIR(_ZN8S19244C4C1Ev),
  NSPAIR(_ZN8S19244C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19244C4[];
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C4[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
Class_Descriptor cd_S19244C4 = {  "S19244C4", // class name
  0,0,//no base classes
  &(vtc_S19244C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI8S19244C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19244C4),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  S19244C3  {
  __tsi64 s19244c3f0;
  long double s19244c3f1;
  void *s19244c3f2;
  char s19244c3f3;
  ::S19244C4 s19244c3f4;
  void *s19244c3f5[2];
  __tsi64 s19244c3f6[8];
  short s19244c3f7;
  void *s19244c3f8;
  __tsi64 s19244c3f9:64;
  virtual void  v1(); // _ZN8S19244C32v1Ev
  ~S19244C3(); // tgen
  S19244C3(); // tgen
};
//SIG(-1 S19244C3) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


void  S19244C3 ::v1(){vfunc_called(this, "_ZN8S19244C32v1Ev");}
S19244C3 ::~S19244C3(){ note_dtor("S19244C3", this);} // tgen
S19244C3 ::S19244C3(){ note_ctor("S19244C3", this);} // tgen

static void Test_S19244C3()
{
  extern Class_Descriptor cd_S19244C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,62)];
    init_test(&cd_S19244C3, buf);
    S19244C3 *dp, &lv = *(dp=new (buf) S19244C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,244), "sizeof(S19244C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C3)");
    check_field_offset(lv, s19244c3f0, ABISELECT(8,4), "S19244C3.s19244c3f0");
    check_field_offset(lv, s19244c3f1, ABISELECT(16,12), "S19244C3.s19244c3f1");
    check_field_offset(lv, s19244c3f2, ABISELECT(32,24), "S19244C3.s19244c3f2");
    check_field_offset(lv, s19244c3f3, ABISELECT(40,28), "S19244C3.s19244c3f3");
    check_field_offset(lv, s19244c3f4, ABISELECT(48,32), "S19244C3.s19244c3f4");
    check_field_offset(lv, s19244c3f5, ABISELECT(192,156), "S19244C3.s19244c3f5");
    check_field_offset(lv, s19244c3f6, ABISELECT(208,164), "S19244C3.s19244c3f6");
    check_field_offset(lv, s19244c3f7, ABISELECT(272,228), "S19244C3.s19244c3f7");
    check_field_offset(lv, s19244c3f8, ABISELECT(280,232), "S19244C3.s19244c3f8");
    set_bf_and_test(lv, s19244c3f9, ABISELECT(288,236), 0, 64, 1, "S19244C3");
    set_bf_and_test(lv, s19244c3f9, ABISELECT(288,236), 0, 64, hide_sll(1LL<<63), "S19244C3");
    test_class_info(&lv, &cd_S19244C3);
    dp->~S19244C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C3(Test_S19244C3, "S19244C3", ABISELECT(304,244));

#else // __cplusplus

extern void _ZN8S19244C3C1Ev();
extern void _ZN8S19244C3D1Ev();
Name_Map name_map_S19244C3[] = {
  NSPAIR(_ZN8S19244C3C1Ev),
  NSPAIR(_ZN8S19244C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19244C3[];
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY vtc_S19244C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C3[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
Class_Descriptor cd_S19244C3 = {  "S19244C3", // class name
  0,0,//no base classes
  &(vtc_S19244C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI8S19244C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19244C3),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C5  : virtual S19244C4 {
  void *s19244c5f0;
  ::S19244C4 s19244c5f1;
  int s19244c5f2:3;
  ~S19244C5(); // tgen
  S19244C5(); // tgen
};
//SIG(-1 S19244C5) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S19244C5 ::~S19244C5(){ note_dtor("S19244C5", this);} // tgen
S19244C5 ::S19244C5(){ note_ctor("S19244C5", this);} // tgen

static void Test_S19244C5()
{
  extern Class_Descriptor cd_S19244C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,66)];
    init_test(&cd_S19244C5, buf);
    S19244C5 *dp, &lv = *(dp=new (buf) S19244C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,260), "sizeof(S19244C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19244C5)");
    check_base_class_offset(lv, (S19244C4*), ABISELECT(168,136), "S19244C5");
    check_field_offset(lv, s19244c5f0, ABISELECT(8,4), "S19244C5.s19244c5f0");
    check_field_offset(lv, s19244c5f1, ABISELECT(16,8), "S19244C5.s19244c5f1");
    set_bf_and_test(lv, s19244c5f2, ABISELECT(160,132), 0, 3, 1, "S19244C5");
    set_bf_and_test(lv, s19244c5f2, ABISELECT(160,132), 0, 3, hide_sll(1LL<<2), "S19244C5");
    test_class_info(&lv, &cd_S19244C5);
    dp->~S19244C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C5(Test_S19244C5, "S19244C5", ABISELECT(312,260));

#else // __cplusplus

extern void _ZN8S19244C5C1Ev();
extern void _ZN8S19244C5D1Ev();
Name_Map name_map_S19244C5[] = {
  NSPAIR(_ZN8S19244C5C1Ev),
  NSPAIR(_ZN8S19244C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
static Base_Class bases_S19244C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C4,    ABISELECT(168,136), //bcp->offset
    3, //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 _ZTI8S19244C5[];
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C5[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern VTBL_ENTRY _ZTV8S19244C5[];
static  VTT_ENTRY vtt_S19244C5[] = {
  {&(_ZTV8S19244C5[3]),  3,7},
  {&(_ZTV8S19244C5[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
Class_Descriptor cd_S19244C5 = {  "S19244C5", // class name
  bases_S19244C5, 1,
  &(vtc_S19244C5[0]), // expected_vtbl_contents
  &(vtt_S19244C5[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI8S19244C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19244C5),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19244C5),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  S19244C2  : S19244C3 {
  ::S19244C5 s19244c2f0;
  int s19244c2f1;
  void *s19244c2f2;
  int s19244c2f3;
  virtual  ~S19244C2(); // _ZN8S19244C2D1Ev
  virtual void  v2(); // _ZN8S19244C22v2Ev
  S19244C2(); // tgen
};
//SIG(-1 S19244C2) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


 S19244C2 ::~S19244C2(){ note_dtor("S19244C2", this);}
void  S19244C2 ::v2(){vfunc_called(this, "_ZN8S19244C22v2Ev");}
S19244C2 ::S19244C2(){ note_ctor("S19244C2", this);} // tgen

static void Test_S19244C2()
{
  extern Class_Descriptor cd_S19244C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,130)];
    init_test(&cd_S19244C2, buf);
    S19244C2 *dp, &lv = *(dp=new (buf) S19244C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,516), "sizeof(S19244C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C2)");
    check_base_class_offset(lv, (S19244C3*), 0, "S19244C2");
    check_field_offset(lv, s19244c2f0, ABISELECT(296,244), "S19244C2.s19244c2f0");
    check_field_offset(lv, s19244c2f1, ABISELECT(608,504), "S19244C2.s19244c2f1");
    check_field_offset(lv, s19244c2f2, ABISELECT(616,508), "S19244C2.s19244c2f2");
    check_field_offset(lv, s19244c2f3, ABISELECT(624,512), "S19244C2.s19244c2f3");
    test_class_info(&lv, &cd_S19244C2);
    dp->~S19244C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C2(Test_S19244C2, "S19244C2", ABISELECT(640,516));

#else // __cplusplus

extern void _ZN8S19244C2C1Ev();
extern void _ZN8S19244C2D1Ev();
Name_Map name_map_S19244C2[] = {
  NSPAIR(_ZN8S19244C2C1Ev),
  NSPAIR(_ZN8S19244C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
static Base_Class bases_S19244C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19244C2[];
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C2D1Ev();
extern void _ZN8S19244C2D0Ev();
extern void _ZN8S19244C22v2Ev();
static  VTBL_ENTRY vtc_S19244C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C2[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19244C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19244C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19244C2[];
extern  VTBL_ENTRY _ZTV8S19244C2[];
Class_Descriptor cd_S19244C2 = {  "S19244C2", // class name
  bases_S19244C2, 1,
  &(vtc_S19244C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI8S19244C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19244C2),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  S19244C7  {
  int s19244c7f0[2];
  __tsi64 s19244c7f1[2];
  ::S19244C4 s19244c7f2[3];
  virtual void  v3(); // _ZN8S19244C72v3Ev
  virtual void  v4(); // _ZN8S19244C72v4Ev
  virtual void  v5(); // _ZN8S19244C72v5Ev
  ~S19244C7(); // tgen
  S19244C7(); // tgen
};
//SIG(-1 S19244C7) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S19244C7 ::v3(){vfunc_called(this, "_ZN8S19244C72v3Ev");}
void  S19244C7 ::v4(){vfunc_called(this, "_ZN8S19244C72v4Ev");}
void  S19244C7 ::v5(){vfunc_called(this, "_ZN8S19244C72v5Ev");}
S19244C7 ::~S19244C7(){ note_dtor("S19244C7", this);} // tgen
S19244C7 ::S19244C7(){ note_ctor("S19244C7", this);} // tgen

static void Test_S19244C7()
{
  extern Class_Descriptor cd_S19244C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,101)];
    init_test(&cd_S19244C7, buf);
    S19244C7 *dp, &lv = *(dp=new (buf) S19244C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,400), "sizeof(S19244C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19244C7)");
    check_field_offset(lv, s19244c7f0, ABISELECT(8,4), "S19244C7.s19244c7f0");
    check_field_offset(lv, s19244c7f1, ABISELECT(16,12), "S19244C7.s19244c7f1");
    check_field_offset(lv, s19244c7f2, ABISELECT(32,28), "S19244C7.s19244c7f2");
    test_class_info(&lv, &cd_S19244C7);
    dp->~S19244C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C7(Test_S19244C7, "S19244C7", ABISELECT(464,400));

#else // __cplusplus

extern void _ZN8S19244C7C1Ev();
extern void _ZN8S19244C7D1Ev();
Name_Map name_map_S19244C7[] = {
  NSPAIR(_ZN8S19244C7C1Ev),
  NSPAIR(_ZN8S19244C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19244C7[];
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY vtc_S19244C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C7[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
Class_Descriptor cd_S19244C7 = {  "S19244C7", // class name
  0,0,//no base classes
  &(vtc_S19244C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI8S19244C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19244C7),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C10  : S19244C4 , virtual S19244C7 , virtual S19244C5 , virtual S19244C3 {
  ::S19244C3 s19244c10f0;
  short s19244c10f1;
  int s19244c10f2[2];
  ~S19244C10(); // tgen
  S19244C10(); // tgen
};
//SIG(-1 S19244C10) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} VBC3{ v2 v3 v4 Fi[2] FL[2] FC2[3]} VBC4{ VBC2 Fp FC2 Fi:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] FL[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19244C10 ::~S19244C10(){ note_dtor("S19244C10", this);} // tgen
S19244C10 ::S19244C10(){ note_ctor("S19244C10", this);} // tgen

static void Test_S19244C10()
{
  extern Class_Descriptor cd_S19244C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,322)];
    init_test(&cd_S19244C10, buf);
    S19244C10 *dp, &lv = *(dp=new (buf) S19244C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,1284), "sizeof(S19244C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C10)");
    /*is_ambiguous_... S19244C10::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*), 0, "S19244C10");
    check_base_class_offset(lv, (S19244C7*), ABISELECT(464,380), "S19244C10");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(1096,916), "S19244C10");
    check_base_class_offset(lv, (S19244C5*), ABISELECT(928,780), "S19244C10");
    check_base_class_offset(lv, (S19244C3*), ABISELECT(1248,1040), "S19244C10");
    check_field_offset(lv, s19244c10f0, ABISELECT(144,124), "S19244C10.s19244c10f0");
    check_field_offset(lv, s19244c10f1, ABISELECT(448,368), "S19244C10.s19244c10f1");
    check_field_offset(lv, s19244c10f2, ABISELECT(452,372), "S19244C10.s19244c10f2");
    test_class_info(&lv, &cd_S19244C10);
    dp->~S19244C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C10(Test_S19244C10, "S19244C10", ABISELECT(1552,1284));

#else // __cplusplus

extern void _ZN9S19244C10C1Ev();
extern void _ZN9S19244C10D1Ev();
Name_Map name_map_S19244C10[] = {
  NSPAIR(_ZN9S19244C10C1Ev),
  NSPAIR(_ZN9S19244C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
static Base_Class bases_S19244C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19244C7,    ABISELECT(464,380), //bcp->offset
    7, //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},
  {&cd_S19244C4,    ABISELECT(1096,916), //bcp->offset
    18, //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
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19244C5,    ABISELECT(928,780), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C3,    ABISELECT(1248,1040), //bcp->offset
    22, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19244C10[];
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY vtc_S19244C10[] = {
  ABISELECT(1248,1040),
  ABISELECT(1096,916),
  ABISELECT(928,780),
  ABISELECT(464,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(168,136),
  ABISELECT(-928,-780),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  0,
  ABISELECT(-1096,-916),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  0,
  ABISELECT(-1248,-1040),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S19244C10[];
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C10[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__9S19244C10[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C10[] = {
  {&(_ZTV9S19244C10[6]),  6,26},
  {&(_ZTV9S19244C10[12]),  12,26},
  {&(_ZTV9S19244C10[18]),  18,26},
  {&(_ZTV9S19244C10[21]),  21,26},
  {&(_ZTV9S19244C10[25]),  25,26},
  {&(_tg__ZTV8S19244C5__9S19244C10[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__9S19244C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19244C10[];
extern  VTBL_ENTRY _ZTV9S19244C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C10[];
Class_Descriptor cd_S19244C10 = {  "S19244C10", // class name
  bases_S19244C10, 5,
  &(vtc_S19244C10[0]), // expected_vtbl_contents
  &(vtt_S19244C10[0]), // expected_vtt_contents
  ABISELECT(1552,1284), // object size
  NSPAIRA(_ZTI9S19244C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19244C10),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19244C10),7, //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  S19244C9  : S19244C3 , S19244C7 , S19244C4 {
  __tsi64 s19244c9f0[2];
  void *s19244c9f1[8];
  ::S19244C10 s19244c9f2;
  void *s19244c9f3;
  int s19244c9f4;
  ::S19244C10 s19244c9f5;
  int s19244c9f6;
  virtual  ~S19244C9(); // _ZN8S19244C9D1Ev
  virtual void  v7(); // _ZN8S19244C92v7Ev
  S19244C9(); // tgen
};
//SIG(-1 S19244C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19244C9 ::~S19244C9(){ note_dtor("S19244C9", this);}
void  S19244C9 ::v7(){vfunc_called(this, "_ZN8S19244C92v7Ev");}
S19244C9 ::S19244C9(){ note_ctor("S19244C9", this);} // tgen

static void Test_S19244C9()
{
  extern Class_Descriptor cd_S19244C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,850)];
    init_test(&cd_S19244C9, buf);
    S19244C9 *dp, &lv = *(dp=new (buf) S19244C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,3396), "sizeof(S19244C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C9)");
    check_base_class_offset(lv, (S19244C3*), 0, "S19244C9");
    check_base_class_offset(lv, (S19244C7*), ABISELECT(296,244), "S19244C9");
    check_base_class_offset(lv, (S19244C4*), ABISELECT(760,644), "S19244C9");
    check_field_offset(lv, s19244c9f0, ABISELECT(904,768), "S19244C9.s19244c9f0");
    check_field_offset(lv, s19244c9f1, ABISELECT(920,784), "S19244C9.s19244c9f1");
    check_field_offset(lv, s19244c9f2, ABISELECT(992,816), "S19244C9.s19244c9f2");
    check_field_offset(lv, s19244c9f3, ABISELECT(2544,2100), "S19244C9.s19244c9f3");
    check_field_offset(lv, s19244c9f4, ABISELECT(2552,2104), "S19244C9.s19244c9f4");
    check_field_offset(lv, s19244c9f5, ABISELECT(2560,2108), "S19244C9.s19244c9f5");
    check_field_offset(lv, s19244c9f6, ABISELECT(4112,3392), "S19244C9.s19244c9f6");
    test_class_info(&lv, &cd_S19244C9);
    dp->~S19244C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C9(Test_S19244C9, "S19244C9", ABISELECT(4128,3396));

#else // __cplusplus

extern void _ZN8S19244C9C1Ev();
extern void _ZN8S19244C9D1Ev();
Name_Map name_map_S19244C9[] = {
  NSPAIR(_ZN8S19244C9C1Ev),
  NSPAIR(_ZN8S19244C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
static Base_Class bases_S19244C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19244C7,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_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_S19244C4,    ABISELECT(760,644), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19244C9[];
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C9D1Ev();
extern void _ZN8S19244C9D0Ev();
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C9[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19244C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI8S19244C9[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI8S19244C9[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
Class_Descriptor cd_S19244C9 = {  "S19244C9", // class name
  bases_S19244C9, 3,
  &(vtc_S19244C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI8S19244C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19244C9),14, //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  S19244C11  : virtual S19244C3 , virtual S19244C9 , virtual S19244C4 , virtual S19244C5 {
  __tsi64 s19244c11f0:44;
  void *s19244c11f1;
  int s19244c11f2;
  ::S19244C10 s19244c11f3;
  __tsi64 s19244c11f4[2];
  int s19244c11f5[3];
  ::S19244C9 s19244c11f6;
  char s19244c11f7:7;
  ::S19244C2 s19244c11f8;
  ~S19244C11(); // tgen
  S19244C11(); // tgen
};
//SIG(-1 S19244C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC8{ BC2 vd v7 FC7 Fi Fp Fi}}


S19244C11 ::~S19244C11(){ note_dtor("S19244C11", this);} // tgen
S19244C11 ::S19244C11(){ note_ctor("S19244C11", this);} // tgen

static void Test_S19244C11()
{
  extern Class_Descriptor cd_S19244C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,2288)];
    init_test(&cd_S19244C11, buf);
    S19244C11 *dp, &lv = *(dp=new (buf) S19244C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,9148), "sizeof(S19244C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C11)");
    /*is_ambiguous_... S19244C11::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*), ABISELECT(6400,5248), "S19244C11");
    check_base_class_offset(lv, (S19244C3*)(S19244C9*), ABISELECT(6704,5492), "S19244C11");
    check_base_class_offset(lv, (S19244C7*)(S19244C9*), ABISELECT(7000,5736), "S19244C11");
    check_base_class_offset(lv, (S19244C4*)(S19244C9*), ABISELECT(7464,6136), "S19244C11");
    check_base_class_offset(lv, (S19244C9*), ABISELECT(6704,5492), "S19244C11");
    /*is_ambiguous_... S19244C11::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*), ABISELECT(10824,8888), "S19244C11");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(10824,8888), "S19244C11");
    check_base_class_offset(lv, (S19244C5*), ABISELECT(10968,9012), "S19244C11");
    set_bf_and_test(lv, s19244c11f0, ABISELECT(8,4), 0, 44, 1, "S19244C11");
    set_bf_and_test(lv, s19244c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19244C11");
    check_field_offset(lv, s19244c11f1, ABISELECT(16,12), "S19244C11.s19244c11f1");
    check_field_offset(lv, s19244c11f2, ABISELECT(24,16), "S19244C11.s19244c11f2");
    check_field_offset(lv, s19244c11f3, ABISELECT(32,20), "S19244C11.s19244c11f3");
    check_field_offset(lv, s19244c11f4, ABISELECT(1584,1304), "S19244C11.s19244c11f4");
    check_field_offset(lv, s19244c11f5, ABISELECT(1600,1320), "S19244C11.s19244c11f5");
    check_field_offset(lv, s19244c11f6, ABISELECT(1616,1332), "S19244C11.s19244c11f6");
    set_bf_and_test(lv, s19244c11f7, ABISELECT(5744,4728), 0, 7, 1, "S19244C11");
    set_bf_and_test(lv, s19244c11f7, ABISELECT(5744,4728), 0, 7, hide_sll(1LL<<6), "S19244C11");
    check_field_offset(lv, s19244c11f8, ABISELECT(5760,4732), "S19244C11.s19244c11f8");
    test_class_info(&lv, &cd_S19244C11);
    dp->~S19244C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C11(Test_S19244C11, "S19244C11", ABISELECT(11136,9148));

#else // __cplusplus

extern void _ZN9S19244C11C1Ev();
extern void _ZN9S19244C11D1Ev();
Name_Map name_map_S19244C11[] = {
  NSPAIR(_ZN9S19244C11C1Ev),
  NSPAIR(_ZN9S19244C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C9;
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
static Base_Class bases_S19244C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    ABISELECT(6400,5248), //bcp->offset
    8, //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_S19244C3,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19244C7,    ABISELECT(7000,5736), //bcp->offset
    25, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19244C4,    ABISELECT(7464,6136), //bcp->offset
    30, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19244C9,    ABISELECT(6704,5492), //bcp->offset
    12, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C4,    ABISELECT(10824,8888), //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C5,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19244C11[];
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19244C11D1Ev,_ZThn5492_N9S19244C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19244C11D0Ev,_ZThn5492_N9S19244C11D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C11[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
extern VTBL_ENTRY _ZTV9S19244C11[];
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C11[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__9S19244C11[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C11[] = {
  {&(_ZTV9S19244C11[6]),  6,40},
  {&(_ZTV9S19244C11[11]),  11,40},
  {&(_ZTV9S19244C11[21]),  21,40},
  {&(_ZTV9S19244C11[27]),  27,40},
  {&(_ZTV9S19244C11[32]),  32,40},
  {&(_ZTV9S19244C11[36]),  36,40},
  {&(_ZTV9S19244C11[40]),  40,40},
  {&(_tg__ZTV8S19244C5__9S19244C11[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__9S19244C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19244C11D0Ev,_ZThn5492_N9S19244C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19244C11D1Ev,_ZThn5492_N9S19244C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19244C11 = {  "S19244C11", // class name
  bases_S19244C11, 7,
  &(vtc_S19244C11[0]), // expected_vtbl_contents
  &(vtt_S19244C11[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI9S19244C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19244C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19244C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C8  : virtual S19244C9 , virtual S19244C4 , virtual S19244C5 , S19244C10 , S19244C11 {
  ::S19244C9 s19244c8f0;
  __tsi64 s19244c8f1;
  char s19244c8f2:7;
  virtual void  v8(); // _ZN8S19244C82v8Ev
  ~S19244C8(); // tgen
  S19244C8(); // tgen
};
//SIG(-1 S19244C8) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 Fi:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC4 VBC7 BC6 BC8{ VBC3 VBC2 VBC4 VBC7 FL:44 Fp Fi FC6 FL[2] Fi[3] FC2 Fc:7 FC9{ BC3 vd v8 FC7 Fi Fp Fi}} v1 FC2 FL Fc:7}


void  S19244C8 ::v8(){vfunc_called(this, "_ZN8S19244C82v8Ev");}
S19244C8 ::~S19244C8(){ note_dtor("S19244C8", this);} // tgen
S19244C8 ::S19244C8(){ note_ctor("S19244C8", this);} // tgen

static void Test_S19244C8()
{
  extern Class_Descriptor cd_S19244C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,3335)];
    init_test(&cd_S19244C8, buf);
    S19244C8 *dp, &lv = *(dp=new (buf) S19244C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,13336), "sizeof(S19244C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C8)");
    check_base_class_offset(lv, (S19244C3*)(S19244C9*), ABISELECT(11008,9036), "S19244C8");
    check_base_class_offset(lv, (S19244C7*)(S19244C9*), ABISELECT(11304,9280), "S19244C8");
    check_base_class_offset(lv, (S19244C4*)(S19244C9*), ABISELECT(11768,9680), "S19244C8");
    check_base_class_offset(lv, (S19244C9*), ABISELECT(11008,9036), "S19244C8");
    check_base_class_offset(lv, (S19244C9*)(S19244C11*), ABISELECT(11008,9036), "S19244C8");
    /*is_ambiguous_... S19244C8::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*), ABISELECT(15128,12432), "S19244C8");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(15128,12432), "S19244C8");
    /*is_ambiguous_... S19244C11::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C11*), ABISELECT(15128,12432), "S19244C8");
    check_base_class_offset(lv, (S19244C5*), ABISELECT(15272,12556), "S19244C8");
    check_base_class_offset(lv, (S19244C5*)(S19244C10*), ABISELECT(15272,12556), "S19244C8");
    check_base_class_offset(lv, (S19244C5*)(S19244C11*), ABISELECT(15272,12556), "S19244C8");
    /*is_ambiguous_... S19244C10::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C10*), 0, "S19244C8");
    check_base_class_offset(lv, (S19244C7*)(S19244C10*), ABISELECT(15440,12692), "S19244C8");
    check_base_class_offset(lv, (S19244C3*)(S19244C10*), ABISELECT(15904,13092), "S19244C8");
    /*is_ambiguous_... S19244C11::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C11*), ABISELECT(15904,13092), "S19244C8");
    check_base_class_offset(lv, (S19244C10*), 0, "S19244C8");
    check_base_class_offset(lv, (S19244C11*), ABISELECT(464,380), "S19244C8");
    check_field_offset(lv, s19244c8f0, ABISELECT(6864,5628), "S19244C8.s19244c8f0");
    check_field_offset(lv, s19244c8f1, ABISELECT(10992,9024), "S19244C8.s19244c8f1");
    set_bf_and_test(lv, s19244c8f2, ABISELECT(11000,9032), 0, 7, 1, "S19244C8");
    set_bf_and_test(lv, s19244c8f2, ABISELECT(11000,9032), 0, 7, hide_sll(1LL<<6), "S19244C8");
    test_class_info(&lv, &cd_S19244C8);
    dp->~S19244C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C8(Test_S19244C8, "S19244C8", ABISELECT(16208,13336));

#else // __cplusplus

extern void _ZN8S19244C8C1Ev();
extern void _ZN8S19244C8D1Ev();
Name_Map name_map_S19244C8[] = {
  NSPAIR(_ZN8S19244C8C1Ev),
  NSPAIR(_ZN8S19244C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C9;
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C10;
extern VTBL_ENTRY _ZTI9S19244C10[];
extern  VTBL_ENTRY _ZTV9S19244C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C10[];
extern Class_Descriptor cd_S19244C11;
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
static Base_Class bases_S19244C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    ABISELECT(11008,9036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19244C7,    ABISELECT(11304,9280), //bcp->offset
    32, //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19244C4,    ABISELECT(11768,9680), //bcp->offset
    37, //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_S19244C9,    ABISELECT(11008,9036), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C4,    ABISELECT(15128,12432), //bcp->offset
    40, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C5,    ABISELECT(15272,12556), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19244C7,    ABISELECT(15440,12692), //bcp->offset
    47, //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
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19244C3,    ABISELECT(15904,13092), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19244C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S19244C11,    ABISELECT(464,380), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19244C8[];
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void _ZN8S19244C8D1Ev();
extern void _ZN8S19244C8D0Ev();
extern void ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev)();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY vtc_S19244C8[] = {
  ABISELECT(11008,9036),
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D0Ev,
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19244C8[];
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C10__8S19244C8[] = {
  ABISELECT(15904,13092),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__9S19244C10__8S19244C8[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C10__8S19244C8[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C10__8S19244C8[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C10__8S19244C8[] = {
  0,
  ABISELECT(-15904,-13092),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C11__8S19244C8[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(15440,12712),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C11__8S19244C8[] = {
  0,
  ABISELECT(-15440,-12712),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C11__8S19244C8[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C11__8S19244C8[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__9S19244C11__8S19244C8[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C11__8S19244C8[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C11__8S19244C8[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C8[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__8S19244C8[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C8[] = {
  {&(_ZTV8S19244C8[7]),  7,59},
  {&(_tg__ZTV9S19244C10__8S19244C8[6]),  6,7},
  {&(_tg__ZTV8S19244C7__9S19244C10__8S19244C8[5]),  5,8},
  {&(_tg__ZTV8S19244C5__9S19244C10__8S19244C8[3]),  3,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C10__8S19244C8[3]),  3,4},
  {&(_tg__ZTV8S19244C3__9S19244C10__8S19244C8[3]),  3,4},
  {&(_tg__ZTV9S19244C11__8S19244C8[6]),  6,8},
  {&(_tg__ZTV8S19244C3__9S19244C11__8S19244C8[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C11__8S19244C8[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C11__8S19244C8[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__9S19244C11__8S19244C8[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C11__8S19244C8[3]),  3,4},
  {&(_tg__ZTV8S19244C5__9S19244C11__8S19244C8[3]),  3,3},
  {&(_ZTV8S19244C8[28]),  28,59},
  {&(_ZTV8S19244C8[34]),  34,59},
  {&(_ZTV8S19244C8[39]),  39,59},
  {&(_ZTV8S19244C8[43]),  43,59},
  {&(_ZTV8S19244C8[47]),  47,59},
  {&(_ZTV8S19244C8[52]),  52,59},
  {&(_ZTV8S19244C8[58]),  58,59},
  {&(_ZTV8S19244C8[17]),  17,59},
  {&(_tg__ZTV8S19244C5__8S19244C8[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__8S19244C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19244C8[];
extern  VTBL_ENTRY _ZTV8S19244C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C8[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19244C8 = {  "S19244C8", // class name
  bases_S19244C8, 11,
  &(vtc_S19244C8[0]), // expected_vtbl_contents
  &(vtt_S19244C8[0]), // expected_vtt_contents
  ABISELECT(16208,13336), // object size
  NSPAIRA(_ZTI8S19244C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19244C8),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19244C8),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C6  : virtual S19244C3 , S19244C7 , virtual S19244C8 {
  char s19244c6f0:8;
  int s19244c6f1;
  ~S19244C6(); // tgen
  S19244C6(); // tgen
};
//SIG(-1 S19244C6) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v2 v3 v4 Fi[2] FL[2] FC3[3]} VBC5{ VBC6{ BC2 BC4 BC3 vd v6 FL[2] Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 Fi:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC7 Fi} VBC3 VBC8 BC7 BC9{ VBC2 VBC6 VBC3 VBC8 FL:44 Fp Fi FC7 FL[2] Fi[3] FC6 Fc:7 FC10{ BC2 vd v8 FC8 Fi Fp Fi}} v7 FC6 FL Fc:7} Fc:8 Fi}


S19244C6 ::~S19244C6(){ note_dtor("S19244C6", this);} // tgen
S19244C6 ::S19244C6(){ note_ctor("S19244C6", this);} // tgen

static void Test_S19244C6()
{
  extern Class_Descriptor cd_S19244C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,3437)];
    init_test(&cd_S19244C6, buf);
    S19244C6 *dp, &lv = *(dp=new (buf) S19244C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,13744), "sizeof(S19244C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C6)");
    /*is_ambiguous_... S19244C6::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*), ABISELECT(480,408), "S19244C6");
    check_base_class_offset(lv, (S19244C3*)(S19244C10*)(S19244C8*), ABISELECT(480,408), "S19244C6");
    /*is_ambiguous_... S19244C11::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C11*)(S19244C8*), ABISELECT(480,408), "S19244C6");
    /*is_ambiguous_... S19244C6::S19244C7 */ AMB_check_base_class_offset(lv, (S19244C7*), 0, "S19244C6");
    check_base_class_offset(lv, (S19244C3*)(S19244C9*), ABISELECT(11792,9688), "S19244C6");
    check_base_class_offset(lv, (S19244C7*)(S19244C9*), ABISELECT(12088,9932), "S19244C6");
    check_base_class_offset(lv, (S19244C4*)(S19244C9*), ABISELECT(12552,10332), "S19244C6");
    check_base_class_offset(lv, (S19244C9*)(S19244C8*), ABISELECT(11792,9688), "S19244C6");
    check_base_class_offset(lv, (S19244C9*)(S19244C11*)(S19244C8*), ABISELECT(11792,9688), "S19244C6");
    /*is_ambiguous_... S19244C8::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C8*), ABISELECT(15912,13084), "S19244C6");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(15912,13084), "S19244C6");
    /*is_ambiguous_... S19244C11::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C11*)(S19244C8*), ABISELECT(15912,13084), "S19244C6");
    check_base_class_offset(lv, (S19244C5*)(S19244C8*), ABISELECT(16056,13208), "S19244C6");
    check_base_class_offset(lv, (S19244C5*)(S19244C10*)(S19244C8*), ABISELECT(16056,13208), "S19244C6");
    check_base_class_offset(lv, (S19244C5*)(S19244C11*)(S19244C8*), ABISELECT(16056,13208), "S19244C6");
    /*is_ambiguous_... S19244C10::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C10*)(S19244C8*), ABISELECT(784,652), "S19244C6");
    check_base_class_offset(lv, (S19244C7*)(S19244C10*)(S19244C8*), ABISELECT(16224,13344), "S19244C6");
    check_base_class_offset(lv, (S19244C10*)(S19244C8*), ABISELECT(784,652), "S19244C6");
    check_base_class_offset(lv, (S19244C11*)(S19244C8*), ABISELECT(1248,1032), "S19244C6");
    check_base_class_offset(lv, (S19244C8*), ABISELECT(784,652), "S19244C6");
    set_bf_and_test(lv, s19244c6f0, ABISELECT(464,400), 0, 8, 1, "S19244C6");
    set_bf_and_test(lv, s19244c6f0, ABISELECT(464,400), 0, 8, hide_sll(1LL<<7), "S19244C6");
    check_field_offset(lv, s19244c6f1, ABISELECT(468,404), "S19244C6.s19244c6f1");
    test_class_info(&lv, &cd_S19244C6);
    dp->~S19244C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C6(Test_S19244C6, "S19244C6", ABISELECT(16688,13744));

#else // __cplusplus

extern void _ZN8S19244C6C1Ev();
extern void _ZN8S19244C6D1Ev();
Name_Map name_map_S19244C6[] = {
  NSPAIR(_ZN8S19244C6C1Ev),
  NSPAIR(_ZN8S19244C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C9;
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C10;
extern VTBL_ENTRY _ZTI9S19244C10[];
extern  VTBL_ENTRY _ZTV9S19244C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C10[];
extern Class_Descriptor cd_S19244C11;
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
extern Class_Descriptor cd_S19244C8;
extern VTBL_ENTRY _ZTI8S19244C8[];
extern  VTBL_ENTRY _ZTV8S19244C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C8[];
static Base_Class bases_S19244C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    ABISELECT(480,408), //bcp->offset
    13, //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_S19244C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19244C3,    ABISELECT(11792,9688), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19244C7,    ABISELECT(12088,9932), //bcp->offset
    52, //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19244C4,    ABISELECT(12552,10332), //bcp->offset
    57, //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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19244C9,    ABISELECT(11792,9688), //bcp->offset
    39, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19244C4,    ABISELECT(15912,13084), //bcp->offset
    60, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19244C5,    ABISELECT(16056,13208), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19244C4,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S19244C7,    ABISELECT(16224,13344), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    10, //immediately_derived
  0, 1},
  {&cd_S19244C10,    ABISELECT(784,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19244C11,    ABISELECT(1248,1032), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19244C8,    ABISELECT(784,652), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19244C6[];
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C6D1Ev();
extern void _ZN8S19244C6D0Ev();
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev)();
extern void ABISELECT(_ZThn784_N8S19244C6D1Ev,_ZThn652_N8S19244C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev)();
extern void ABISELECT(_ZThn784_N8S19244C6D0Ev,_ZThn652_N8S19244C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19244C6D1Ev,_ZTvn380_n40_N8S19244C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19244C6D0Ev,_ZTvn380_n40_N8S19244C6D0Ev)();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev)();
extern void ABISELECT(_ZThn11792_N8S19244C6D1Ev,_ZThn9688_N8S19244C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev)();
extern void ABISELECT(_ZThn11792_N8S19244C6D0Ev,_ZThn9688_N8S19244C6D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY vtc_S19244C6[] = {
  ABISELECT(16224,13344),
  ABISELECT(16056,13208),
  ABISELECT(15912,13084),
  ABISELECT(11792,9688),
  ABISELECT(784,652),
  ABISELECT(480,408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19244C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C6D0Ev,
  0,
  ABISELECT(-480,-408),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  ABISELECT(-784,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  ABISELECT(-784,-652),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev),
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1248,-1032),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C6D1Ev,_ZTvn380_n40_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C6D0Ev,_ZTvn380_n40_N8S19244C6D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11792,-9688),
  0,
  ABISELECT(-11792,-9688),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-12088,-9932),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-12552,-10332),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  0,
  ABISELECT(-15912,-13084),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-144,-124),
  ABISELECT(-16056,-13208),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-13344),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S19244C6[];
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void _ZN8S19244C8D1Ev();
extern void _ZN8S19244C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C8__8S19244C6[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D0Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C108S19244C8__8S19244C6[] = {
  ABISELECT(-304,-244),
  ABISELECT(15128,12432),
  ABISELECT(15272,12556),
  ABISELECT(15440,12692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__9S19244C108S19244C8__8S19244C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C108S19244C8__8S19244C6[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C108S19244C8__8S19244C6[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C108S19244C8__8S19244C6[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C118S19244C8__8S19244C6[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C118S19244C8__8S19244C6[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C118S19244C8__8S19244C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C118S19244C8__8S19244C6[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__9S19244C118S19244C8__8S19244C6[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C118S19244C8__8S19244C6[] = {
  0,
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C118S19244C8__8S19244C6[] = {
  ABISELECT(-144,-124),
  ABISELECT(-14808,-12176),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__8S19244C8__8S19244C6[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__8S19244C8__8S19244C6[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__8S19244C8__8S19244C6[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__8S19244C8__8S19244C6[] = {
  0,
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C8__8S19244C6[] = {
  ABISELECT(-144,-124),
  ABISELECT(-15272,-12556),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__A1__8S19244C8__8S19244C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-12692),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__A1__8S19244C8__8S19244C6[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19244C11__8S19244C8__8S19244C6[] = {
  ABISELECT(14808,12176),
  ABISELECT(14664,12052),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C6[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__8S19244C6[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C6[] = {
  {&(_ZTV8S19244C6[8]),  8,75},
  {&(_ZTV8S19244C6[16]),  16,75},
  {&(_ZTV8S19244C6[27]),  27,75},
  {&(_ZTV8S19244C6[48]),  48,75},
  {&(_ZTV8S19244C6[54]),  54,75},
  {&(_ZTV8S19244C6[59]),  59,75},
  {&(_ZTV8S19244C6[63]),  63,75},
  {&(_ZTV8S19244C6[67]),  67,75},
  {&(_ZTV8S19244C6[72]),  72,75},
  {&(_ZTV8S19244C6[37]),  37,75},
  {&(_tg__ZTV8S19244C8__8S19244C6[7]),  7,11},
  {&(_tg__ZTV9S19244C108S19244C8__8S19244C6[6]),  6,7},
  {&(_tg__ZTV8S19244C7__9S19244C108S19244C8__8S19244C6[5]),  5,8},
  {&(_tg__ZTV8S19244C5__9S19244C108S19244C8__8S19244C6[3]),  3,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C108S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV8S19244C3__9S19244C108S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV9S19244C118S19244C8__8S19244C6[6]),  6,8},
  {&(_tg__ZTV8S19244C3__9S19244C118S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C118S19244C8__8S19244C6[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C118S19244C8__8S19244C6[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__9S19244C118S19244C8__8S19244C6[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C118S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV8S19244C5__9S19244C118S19244C8__8S19244C6[3]),  3,3},
  {&(_tg__ZTV8S19244C9__8S19244C8__8S19244C6[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__8S19244C8__8S19244C6[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__8S19244C8__8S19244C6[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__8S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV8S19244C5__8S19244C8__8S19244C6[3]),  3,3},
  {&(_tg__ZTV8S19244C7__A1__8S19244C8__8S19244C6[5]),  5,8},
  {&(_tg__ZTV8S19244C3__A1__8S19244C8__8S19244C6[3]),  3,4},
  {&(_tg__ZTV9S19244C11__8S19244C8__8S19244C6[6]),  6,8},
  {&(_tg__ZTV8S19244C5__8S19244C6[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__8S19244C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19244C6[];
extern  VTBL_ENTRY _ZTV8S19244C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C6[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19244C6D0Ev,_ZThn9688_N8S19244C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19244C6D1Ev,_ZThn9688_N8S19244C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19244C6D0Ev,_ZThn652_N8S19244C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19244C6D1Ev,_ZThn652_N8S19244C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19244C6 = {  "S19244C6", // class name
  bases_S19244C6, 13,
  &(vtc_S19244C6[0]), // expected_vtbl_contents
  &(vtt_S19244C6[0]), // expected_vtt_contents
  ABISELECT(16688,13744), // object size
  NSPAIRA(_ZTI8S19244C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19244C6),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19244C6),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C12  : virtual S19244C5 {
  ::S19244C11 s19244c12f0;
  int s19244c12f1:6;
  int s19244c12f2;
  __tsi64 s19244c12f3;
  ~S19244C12(); // tgen
  S19244C12(); // tgen
};
//SIG(-1 S19244C12) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC3 Fi:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 FL[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} Fi:6 Fi FL}


S19244C12 ::~S19244C12(){ note_dtor("S19244C12", this);} // tgen
S19244C12 ::S19244C12(){ note_ctor("S19244C12", this);} // tgen

static void Test_S19244C12()
{
  extern Class_Descriptor cd_S19244C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,2358)];
    init_test(&cd_S19244C12, buf);
    S19244C12 *dp, &lv = *(dp=new (buf) S19244C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,9428), "sizeof(S19244C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C12)");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(11336,9304), "S19244C12");
    check_base_class_offset(lv, (S19244C5*), ABISELECT(11168,9168), "S19244C12");
    check_field_offset(lv, s19244c12f0, ABISELECT(16,4), "S19244C12.s19244c12f0");
    set_bf_and_test(lv, s19244c12f1, ABISELECT(11152,9152), 0, 6, 1, "S19244C12");
    set_bf_and_test(lv, s19244c12f1, ABISELECT(11152,9152), 0, 6, hide_sll(1LL<<5), "S19244C12");
    check_field_offset(lv, s19244c12f2, ABISELECT(11156,9156), "S19244C12.s19244c12f2");
    check_field_offset(lv, s19244c12f3, ABISELECT(11160,9160), "S19244C12.s19244c12f3");
    test_class_info(&lv, &cd_S19244C12);
    dp->~S19244C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C12(Test_S19244C12, "S19244C12", ABISELECT(11488,9428));

#else // __cplusplus

extern void _ZN9S19244C12C1Ev();
extern void _ZN9S19244C12D1Ev();
Name_Map name_map_S19244C12[] = {
  NSPAIR(_ZN9S19244C12C1Ev),
  NSPAIR(_ZN9S19244C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
static Base_Class bases_S19244C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C4,    ABISELECT(11336,9304), //bcp->offset
    7, //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
    1, //immediately_derived
  0, 1},
  {&cd_S19244C5,    ABISELECT(11168,9168), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //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 _ZTI9S19244C12[];
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C12[] = {
  ABISELECT(11336,9304),
  ABISELECT(11168,9168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
  ABISELECT(168,136),
  ABISELECT(-11168,-9168),
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
  0,
  ABISELECT(-11336,-9304),
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19244C12[];
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C12[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__9S19244C12[] = {
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C12[] = {
  {&(_ZTV9S19244C12[4]),  4,11},
  {&(_ZTV9S19244C12[7]),  7,11},
  {&(_ZTV9S19244C12[10]),  10,11},
  {&(_tg__ZTV8S19244C5__9S19244C12[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__9S19244C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19244C12[];
extern  VTBL_ENTRY _ZTV9S19244C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C12[];
Class_Descriptor cd_S19244C12 = {  "S19244C12", // class name
  bases_S19244C12, 2,
  &(vtc_S19244C12[0]), // expected_vtbl_contents
  &(vtt_S19244C12[0]), // expected_vtt_contents
  ABISELECT(11488,9428), // object size
  NSPAIRA(_ZTI9S19244C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19244C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19244C12),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  S19244C13  : virtual S19244C2 , virtual S19244C4 , virtual S19244C11 {
  int s19244c13f0;
  long double s19244c13f1;
  int s19244c13f2;
  void *s19244c13f3;
  long s19244c13f4;
  ::S19762C23_nt s19244c13f5;
  int s19244c13f6;
  __tsi64 s19244c13f7;
  virtual  ~S19244C13(); // _ZN9S19244C13D2Ev
  S19244C13(); // tgen
};
//SIG(-1 S19244C13) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 Fi:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 FL[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL}


 S19244C13 ::~S19244C13(){ note_dtor("S19244C13", this);}
S19244C13 ::S19244C13(){ note_ctor("S19244C13", this);} // tgen

static void Test_S19244C13()
{
  extern Class_Descriptor cd_S19244C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,2430)];
    init_test(&cd_S19244C13, buf);
    S19244C13 *dp, &lv = *(dp=new (buf) S19244C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,9716), "sizeof(S19244C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C13)");
    check_base_class_offset(lv, (S19244C3*)(S19244C2*), ABISELECT(80,52), "S19244C13");
    check_base_class_offset(lv, (S19244C2*), ABISELECT(80,52), "S19244C13");
    /*is_ambiguous_... S19244C13::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*), ABISELECT(712,568), "S19244C13");
    /*is_ambiguous_... S19244C11::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C11*), ABISELECT(712,568), "S19244C13");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(712,568), "S19244C13");
    /*is_ambiguous_... S19244C11::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C11*), ABISELECT(7264,5940), "S19244C13");
    check_base_class_offset(lv, (S19244C3*)(S19244C9*), ABISELECT(7568,6184), "S19244C13");
    check_base_class_offset(lv, (S19244C7*)(S19244C9*), ABISELECT(7864,6428), "S19244C13");
    check_base_class_offset(lv, (S19244C4*)(S19244C9*), ABISELECT(8328,6828), "S19244C13");
    check_base_class_offset(lv, (S19244C9*)(S19244C11*), ABISELECT(7568,6184), "S19244C13");
    check_base_class_offset(lv, (S19244C5*)(S19244C11*), ABISELECT(11688,9580), "S19244C13");
    check_base_class_offset(lv, (S19244C11*), ABISELECT(864,692), "S19244C13");
    check_field_offset(lv, s19244c13f0, ABISELECT(8,4), "S19244C13.s19244c13f0");
    check_field_offset(lv, s19244c13f1, ABISELECT(16,8), "S19244C13.s19244c13f1");
    check_field_offset(lv, s19244c13f2, ABISELECT(32,20), "S19244C13.s19244c13f2");
    check_field_offset(lv, s19244c13f3, ABISELECT(40,24), "S19244C13.s19244c13f3");
    check_field_offset(lv, s19244c13f4, ABISELECT(48,28), "S19244C13.s19244c13f4");
    check_field_offset(lv, s19244c13f5, ABISELECT(56,32), "S19244C13.s19244c13f5");
    check_field_offset(lv, s19244c13f6, ABISELECT(64,40), "S19244C13.s19244c13f6");
    check_field_offset(lv, s19244c13f7, ABISELECT(72,44), "S19244C13.s19244c13f7");
    test_class_info(&lv, &cd_S19244C13);
    dp->~S19244C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C13(Test_S19244C13, "S19244C13", ABISELECT(11856,9716));

#else // __cplusplus

extern void _ZN9S19244C13C1Ev();
extern void _ZN9S19244C13D2Ev();
Name_Map name_map_S19244C13[] = {
  NSPAIR(_ZN9S19244C13C1Ev),
  NSPAIR(_ZN9S19244C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C2;
extern VTBL_ENTRY _ZTI8S19244C2[];
extern  VTBL_ENTRY _ZTV8S19244C2[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C9;
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
extern Class_Descriptor cd_S19244C11;
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
static Base_Class bases_S19244C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19244C2,    ABISELECT(80,52), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C4,    ABISELECT(712,568), //bcp->offset
    19, //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},
  {&cd_S19244C3,    ABISELECT(7264,5940), //bcp->offset
    32, //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
    9, //immediately_derived
  0, 1},
  {&cd_S19244C3,    ABISELECT(7568,6184), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19244C7,    ABISELECT(7864,6428), //bcp->offset
    49, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19244C4,    ABISELECT(8328,6828), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19244C9,    ABISELECT(7568,6184), //bcp->offset
    36, //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
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19244C5,    ABISELECT(11688,9580), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19244C11,    ABISELECT(864,692), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19244C13[];
extern void _ZN9S19244C13D1Ev();
extern void _ZN9S19244C13D0Ev();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S19244C13D1Ev,_ZThn52_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S19244C13D0Ev,_ZThn52_N9S19244C13D0Ev)() __attribute__((weak));
extern void _ZN8S19244C22v2Ev();
extern void _ZN8S19244C42v6Ev();
extern void ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn864_N9S19244C13D1Ev,_ZThn692_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn864_N9S19244C13D0Ev,_ZThn692_N9S19244C13D0Ev)() __attribute__((weak));
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19244C13D1Ev,_ZThn6184_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19244C13D0Ev,_ZThn6184_N9S19244C13D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY vtc_S19244C13[] = {
  ABISELECT(11688,9580),
  ABISELECT(7568,6184),
  ABISELECT(7264,5940),
  ABISELECT(864,692),
  ABISELECT(712,568),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN9S19244C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C13D0Ev,
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C22v2Ev,
  0,
  ABISELECT(-712,-568),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-864,-692),
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-864,-692),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev),
  0,
  ABISELECT(-7264,-5940),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7568,-6184),
  0,
  ABISELECT(-7568,-6184),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-7864,-6428),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-8328,-6828),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-10976,-9012),
  ABISELECT(-11688,-9580),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
};
extern VTBL_ENTRY _ZTV9S19244C13[];
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C11__9S19244C13[] = {
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C11__9S19244C13[] = {
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19244C11D1Ev,_ZThn5492_N9S19244C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19244C11D0Ev,_ZThn5492_N9S19244C11D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C11__9S19244C13[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C11__9S19244C13[] = {
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__9S19244C11__9S19244C13[] = {
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C11__9S19244C13[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C11__9S19244C13[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C13[] = {
  ABISELECT(-10976,-9012),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__9S19244C13[] = {
  0,
  ABISELECT(10976,9012),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTT_ENTRY vtt_S19244C13[] = {
  {&(_ZTV9S19244C13[8]),  8,60},
  {&(_ZTV9S19244C13[15]),  15,60},
  {&(_ZTV9S19244C13[22]),  22,60},
  {&(_ZTV9S19244C13[30]),  30,60},
  {&(_ZTV9S19244C13[35]),  35,60},
  {&(_ZTV9S19244C13[45]),  45,60},
  {&(_ZTV9S19244C13[51]),  51,60},
  {&(_ZTV9S19244C13[56]),  56,60},
  {&(_ZTV9S19244C13[60]),  60,60},
  {&(_tg__ZTV9S19244C11__9S19244C13[6]),  6,8},
  {&(_tg__ZTV8S19244C3__9S19244C11__9S19244C13[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C11__9S19244C13[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C11__9S19244C13[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__9S19244C11__9S19244C13[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C11__9S19244C13[3]),  3,4},
  {&(_tg__ZTV8S19244C5__9S19244C11__9S19244C13[3]),  3,3},
  {&(_tg__ZTV8S19244C5__9S19244C13[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__9S19244C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19244C13[];
extern  VTBL_ENTRY _ZTV9S19244C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C13[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19244C11D0Ev,_ZThn5492_N9S19244C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19244C11D1Ev,_ZThn5492_N9S19244C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19244C13D0Ev,_ZThn692_N9S19244C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19244C13D1Ev,_ZThn692_N9S19244C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19244C13D0Ev,_ZThn6184_N9S19244C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19244C13D0Ev,_ZThn52_N9S19244C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19244C13D1Ev,_ZThn6184_N9S19244C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19244C13D1Ev,_ZThn52_N9S19244C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19244C13 = {  "S19244C13", // class name
  bases_S19244C13, 10,
  &(vtc_S19244C13[0]), // expected_vtbl_contents
  &(vtt_S19244C13[0]), // expected_vtt_contents
  ABISELECT(11856,9716), // object size
  NSPAIRA(_ZTI9S19244C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19244C13),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19244C13),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19244C1  : virtual S19244C2 , virtual S19244C4 , virtual S19244C6 , S19244C12 , S19244C13 {
  int s19244c1f0;
  int s19244c1f1;
  int s19244c1f2;
  int s19244c1f3;
  virtual  ~S19244C1(); // _ZN8S19244C1D2Ev
  S19244C1(); // tgen
};
//SIG(1 S19244C1) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 Fi:3} Fi Fp Fi} VBC4 VBC6{ VBC3 BC7{ v4 v5 v6 Fi[2] FL[2] FC4[3]} VBC8{ VBC9{ BC3 BC7 BC4 vd v7 FL[2] Fp[8] FC10{ BC4 VBC7 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC10 Fi} VBC4 VBC5 BC10 BC11{ VBC3 VBC9 VBC4 VBC5 FL:44 Fp Fi FC10 FL[2] Fi[3] FC9 Fc:7 FC2} v8 FC9 FL Fc:7} Fc:8 Fi} BC12{ VBC5 FC11 Fi:6 Fi FL} BC13{ VBC2 VBC4 VBC11 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL} vd Fi Fi Fi Fi}


 S19244C1 ::~S19244C1(){ note_dtor("S19244C1", this);}
S19244C1 ::S19244C1(){ note_ctor("S19244C1", this);} // tgen

static void Test_S19244C1()
{
  extern Class_Descriptor cd_S19244C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2187,7187)];
    init_test(&cd_S19244C1, buf);
    S19244C1 *dp, &lv = *(dp=new (buf) S19244C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(34976,28744), "sizeof(S19244C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19244C1)");
    check_base_class_offset(lv, (S19244C3*)(S19244C2*), ABISELECT(11264,9236), "S19244C1");
    check_base_class_offset(lv, (S19244C2*), ABISELECT(11264,9236), "S19244C1");
    check_base_class_offset(lv, (S19244C2*)(S19244C13*), ABISELECT(11264,9236), "S19244C1");
    /*is_ambiguous_... S19244C1::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*), ABISELECT(11896,9752), "S19244C1");
    /*is_ambiguous_... S19244C8::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C8*), ABISELECT(11896,9752), "S19244C1");
    check_base_class_offset(lv, (S19244C4*)(S19244C5*), ABISELECT(11896,9752), "S19244C1");
    /*is_ambiguous_... S19244C11::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C11*)(S19244C8*), ABISELECT(11896,9752), "S19244C1");
    /*is_ambiguous_... S19244C13::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C13*), ABISELECT(11896,9752), "S19244C1");
    /*is_ambiguous_... S19244C1::S19244C11 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C11*), ABISELECT(11896,9752), "S19244C1");
    /*is_ambiguous_... S19244C6::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C6*), ABISELECT(12512,10284), "S19244C1");
    check_base_class_offset(lv, (S19244C3*)(S19244C10*)(S19244C8*), ABISELECT(12512,10284), "S19244C1");
    /*is_ambiguous_... S19244C11::S19244C3 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C11*)(S19244C8*), ABISELECT(12512,10284), "S19244C1");
    /*is_ambiguous_... S19244C1::S19244C11 */ AMB_check_base_class_offset(lv, (S19244C3*)(S19244C11*), ABISELECT(12512,10284), "S19244C1");
    /*is_ambiguous_... S19244C6::S19244C7 */ AMB_check_base_class_offset(lv, (S19244C7*)(S19244C6*), ABISELECT(12040,9876), "S19244C1");
    check_base_class_offset(lv, (S19244C3*)(S19244C9*), ABISELECT(23824,19564), "S19244C1");
    check_base_class_offset(lv, (S19244C7*)(S19244C9*), ABISELECT(24120,19808), "S19244C1");
    check_base_class_offset(lv, (S19244C4*)(S19244C9*), ABISELECT(24584,20208), "S19244C1");
    check_base_class_offset(lv, (S19244C9*)(S19244C8*), ABISELECT(23824,19564), "S19244C1");
    check_base_class_offset(lv, (S19244C9*)(S19244C11*)(S19244C8*), ABISELECT(23824,19564), "S19244C1");
    /*is_ambiguous_... S19244C1::S19244C11 */ AMB_check_base_class_offset(lv, (S19244C9*)(S19244C11*), ABISELECT(23824,19564), "S19244C1");
    check_base_class_offset(lv, (S19244C5*)(S19244C8*), ABISELECT(27944,22960), "S19244C1");
    check_base_class_offset(lv, (S19244C5*)(S19244C10*)(S19244C8*), ABISELECT(27944,22960), "S19244C1");
    check_base_class_offset(lv, (S19244C5*)(S19244C11*)(S19244C8*), ABISELECT(27944,22960), "S19244C1");
    check_base_class_offset(lv, (S19244C5*)(S19244C12*), ABISELECT(27944,22960), "S19244C1");
    /*is_ambiguous_... S19244C1::S19244C11 */ AMB_check_base_class_offset(lv, (S19244C5*)(S19244C11*), ABISELECT(27944,22960), "S19244C1");
    /*is_ambiguous_... S19244C10::S19244C4 */ AMB_check_base_class_offset(lv, (S19244C4*)(S19244C10*)(S19244C8*), ABISELECT(12816,10528), "S19244C1");
    check_base_class_offset(lv, (S19244C7*)(S19244C10*)(S19244C8*), ABISELECT(28112,23096), "S19244C1");
    check_base_class_offset(lv, (S19244C10*)(S19244C8*), ABISELECT(12816,10528), "S19244C1");
    check_base_class_offset(lv, (S19244C11*)(S19244C8*), ABISELECT(13280,10908), "S19244C1");
    check_base_class_offset(lv, (S19244C8*)(S19244C6*), ABISELECT(12816,10528), "S19244C1");
    check_base_class_offset(lv, (S19244C6*), ABISELECT(12040,9876), "S19244C1");
    check_base_class_offset(lv, (S19244C12*), 0, "S19244C1");
    check_base_class_offset(lv, (S19244C11*)(S19244C13*), ABISELECT(28576,23496), "S19244C1");
    check_base_class_offset(lv, (S19244C13*), ABISELECT(11168,9168), "S19244C1");
    check_field_offset(lv, s19244c1f0, ABISELECT(11248,9220), "S19244C1.s19244c1f0");
    check_field_offset(lv, s19244c1f1, ABISELECT(11252,9224), "S19244C1.s19244c1f1");
    check_field_offset(lv, s19244c1f2, ABISELECT(11256,9228), "S19244C1.s19244c1f2");
    check_field_offset(lv, s19244c1f3, ABISELECT(11260,9232), "S19244C1.s19244c1f3");
    test_class_info(&lv, &cd_S19244C1);
    dp->~S19244C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19244C1(Test_S19244C1, "S19244C1", ABISELECT(34976,28744));

#else // __cplusplus

extern void _ZN8S19244C1C1Ev();
extern void _ZN8S19244C1D2Ev();
Name_Map name_map_S19244C1[] = {
  NSPAIR(_ZN8S19244C1C1Ev),
  NSPAIR(_ZN8S19244C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C2;
extern VTBL_ENTRY _ZTI8S19244C2[];
extern  VTBL_ENTRY _ZTV8S19244C2[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C3;
extern VTBL_ENTRY _ZTI8S19244C3[];
extern  VTBL_ENTRY _ZTV8S19244C3[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C9;
extern VTBL_ENTRY _ZTI8S19244C9[];
extern  VTBL_ENTRY _ZTV8S19244C9[];
extern Class_Descriptor cd_S19244C5;
extern VTBL_ENTRY _ZTI8S19244C5[];
extern  VTBL_ENTRY _ZTV8S19244C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C5[];
extern Class_Descriptor cd_S19244C4;
extern VTBL_ENTRY _ZTI8S19244C4[];
extern  VTBL_ENTRY _ZTV8S19244C4[];
extern Class_Descriptor cd_S19244C7;
extern VTBL_ENTRY _ZTI8S19244C7[];
extern  VTBL_ENTRY _ZTV8S19244C7[];
extern Class_Descriptor cd_S19244C10;
extern VTBL_ENTRY _ZTI9S19244C10[];
extern  VTBL_ENTRY _ZTV9S19244C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C10[];
extern Class_Descriptor cd_S19244C11;
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
extern Class_Descriptor cd_S19244C8;
extern VTBL_ENTRY _ZTI8S19244C8[];
extern  VTBL_ENTRY _ZTV8S19244C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C8[];
extern Class_Descriptor cd_S19244C6;
extern VTBL_ENTRY _ZTI8S19244C6[];
extern  VTBL_ENTRY _ZTV8S19244C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C6[];
extern Class_Descriptor cd_S19244C12;
extern VTBL_ENTRY _ZTI9S19244C12[];
extern  VTBL_ENTRY _ZTV9S19244C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C12[];
extern Class_Descriptor cd_S19244C11;
extern VTBL_ENTRY _ZTI9S19244C11[];
extern  VTBL_ENTRY _ZTV9S19244C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C11[];
extern Class_Descriptor cd_S19244C13;
extern VTBL_ENTRY _ZTI9S19244C13[];
extern  VTBL_ENTRY _ZTV9S19244C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19244C13[];
static Base_Class bases_S19244C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19244C3,    ABISELECT(11264,9236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S19244C2,    ABISELECT(11264,9236), //bcp->offset
    23, //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},
  {&cd_S19244C4,    ABISELECT(11896,9752), //bcp->offset
    32, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C3,    ABISELECT(12512,10284), //bcp->offset
    53, //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
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19244C7,    ABISELECT(12040,9876), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19244C3,    ABISELECT(23824,19564), //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19244C7,    ABISELECT(24120,19808), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19244C4,    ABISELECT(24584,20208), //bcp->offset
    97, //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19244C9,    ABISELECT(23824,19564), //bcp->offset
    79, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19244C5,    ABISELECT(27944,22960), //bcp->offset
    100, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19244C4,    ABISELECT(12816,10528), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19244C7,    ABISELECT(28112,23096), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 1},
  {&cd_S19244C10,    ABISELECT(12816,10528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19244C11,    ABISELECT(13280,10908), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19244C8,    ABISELECT(12816,10528), //bcp->offset
    57, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19244C6,    ABISELECT(12040,9876), //bcp->offset
    36, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19244C12,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19244C11,    ABISELECT(28576,23496), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19244C13,    ABISELECT(11168,9168), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19244C1[];
extern void _ZN8S19244C1D1Ev();
extern void _ZN8S19244C1D0Ev();
extern void ABISELECT(_ZThn11168_N8S19244C1D1Ev,_ZThn9168_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn11168_N8S19244C1D0Ev,_ZThn9168_N8S19244C1D0Ev)();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C1D1Ev,_ZTv0_n16_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn11264_N8S19244C1D1Ev,_ZThn9236_N8S19244C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C1D0Ev,_ZTv0_n16_N8S19244C1D0Ev)();
extern void ABISELECT(_ZThn11264_N8S19244C1D0Ev,_ZThn9236_N8S19244C1D0Ev)() __attribute__((weak));
extern void _ZN8S19244C22v2Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void ABISELECT(_ZTv0_n96_N8S19244C1D1Ev,_ZTv0_n48_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn12040_N8S19244C1D1Ev,_ZThn9876_N8S19244C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19244C1D0Ev,_ZTv0_n48_N8S19244C1D0Ev)();
extern void ABISELECT(_ZThn12040_N8S19244C1D0Ev,_ZThn9876_N8S19244C1D0Ev)() __attribute__((weak));
extern void _ZN8S19244C32v1Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19244C1D1Ev,_ZTv0_n40_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn12816_N8S19244C1D1Ev,_ZThn10528_N8S19244C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19244C1D0Ev,_ZTv0_n40_N8S19244C1D0Ev)();
extern void ABISELECT(_ZThn12816_N8S19244C1D0Ev,_ZThn10528_N8S19244C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19244C1D1Ev,_ZTvn380_n40_N8S19244C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19244C1D0Ev,_ZTvn380_n40_N8S19244C1D0Ev)();
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C1D1Ev,_ZTv0_n16_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn23824_N8S19244C1D1Ev,_ZThn19564_N8S19244C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C1D0Ev,_ZTv0_n16_N8S19244C1D0Ev)();
extern void ABISELECT(_ZThn23824_N8S19244C1D0Ev,_ZThn19564_N8S19244C1D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S19244C1D1Ev,_ZTv0_n28_N8S19244C1D1Ev)();
extern void ABISELECT(_ZThn28576_N8S19244C1D1Ev,_ZThn23496_N8S19244C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19244C1D0Ev,_ZTv0_n28_N8S19244C1D0Ev)();
extern void ABISELECT(_ZThn28576_N8S19244C1D0Ev,_ZThn23496_N8S19244C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19244C1[] = {
  ABISELECT(28576,23496),
  ABISELECT(28112,23096),
  ABISELECT(23824,19564),
  ABISELECT(12816,10528),
  ABISELECT(12512,10284),
  ABISELECT(12040,9876),
  ABISELECT(11264,9236),
  ABISELECT(11896,9752),
  ABISELECT(27944,22960),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C1D0Ev,
  ABISELECT(16776,13792),
  ABISELECT(12656,10396),
  ABISELECT(1344,1116),
  ABISELECT(17408,14328),
  ABISELECT(728,584),
  ABISELECT(96,68),
  ABISELECT(-11168,-9168),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19244C1D1Ev,_ZThn9168_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19244C1D0Ev,_ZThn9168_N8S19244C1D0Ev),
  0,
  ABISELECT(-11264,-9236),
  0,
  ABISELECT(-11264,-9236),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C1D1Ev,_ZTv0_n16_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C1D0Ev,_ZTv0_n16_N8S19244C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C22v2Ev,
  0,
  ABISELECT(-11896,-9752),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-12040,-9876),
  0,
  0,
  0,
  ABISELECT(16072,13220),
  ABISELECT(15904,13084),
  ABISELECT(-144,-124),
  ABISELECT(11784,9688),
  ABISELECT(776,652),
  ABISELECT(472,408),
  ABISELECT(-12040,-9876),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19244C1D1Ev,_ZTv0_n48_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19244C1D0Ev,_ZTv0_n48_N8S19244C1D0Ev),
  0,
  ABISELECT(-12512,-10284),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  ABISELECT(-12816,-10528),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(-920,-776),
  ABISELECT(15128,12432),
  ABISELECT(15296,12568),
  ABISELECT(-12816,-10528),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C1D1Ev,_ZTv0_n40_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C1D0Ev,_ZTv0_n40_N8S19244C1D0Ev),
  ABISELECT(14664,12052),
  ABISELECT(-1384,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-13280,-10908),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C1D1Ev,_ZTvn380_n40_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C1D0Ev,_ZTvn380_n40_N8S19244C1D0Ev),
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-23824,-19564),
  0,
  ABISELECT(-23824,-19564),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C1D1Ev,_ZTv0_n16_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C1D0Ev,_ZTv0_n16_N8S19244C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
  ABISELECT(-24120,-19808),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-24584,-20208),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  ABISELECT(-16048,-13208),
  ABISELECT(-27944,-22960),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  0,
  0,
  0,
  ABISELECT(-28112,-23096),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  ABISELECT(-28576,-23496),
  ABISELECT(-632,-536),
  ABISELECT(-16680,-13744),
  ABISELECT(-4752,-3932),
  ABISELECT(-16064,-13212),
  ABISELECT(-28576,-23496),
  (VTBL_ENTRY)&(_ZTI8S19244C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19244C1D1Ev,_ZTv0_n28_N8S19244C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19244C1D0Ev,_ZTv0_n28_N8S19244C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19244C1[];
static  VTBL_ENTRY _tg__ZTV9S19244C12__8S19244C1[] = {
  ABISELECT(11896,9752),
  ABISELECT(27944,22960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C12__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-27944,-22960),
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__9S19244C12__8S19244C1[] = {
  0,
  ABISELECT(-11896,-9752),
  (VTBL_ENTRY)&(_ZTI9S19244C12[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN9S19244C13D1Ev();
extern void _ZN9S19244C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C13__8S19244C1[] = {
  ABISELECT(16776,13792),
  ABISELECT(12656,10396),
  ABISELECT(1344,1116),
  ABISELECT(17408,14328),
  ABISELECT(728,584),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN9S19244C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C13D0Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19244C13D1Ev,_ZThn68_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19244C13D0Ev,_ZThn68_N9S19244C13D0Ev)() __attribute__((weak));
extern void _ZN8S19244C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C2__9S19244C13__8S19244C1[] = {
  0,
  ABISELECT(-96,-68),
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C22v2Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__9S19244C13__8S19244C1[] = {
  0,
  ABISELECT(-728,-584),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn17408_N9S19244C13D1Ev,_ZThn14328_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn17408_N9S19244C13D0Ev,_ZThn14328_N9S19244C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19244C11__9S19244C13__8S19244C1[] = {
  ABISELECT(-17408,-14328),
  ABISELECT(-632,-536),
  ABISELECT(-16680,-13744),
  ABISELECT(-4752,-3932),
  ABISELECT(-16064,-13212),
  ABISELECT(-17408,-14328),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev),
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__A1__9S19244C13__8S19244C1[] = {
  0,
  ABISELECT(-1344,-1116),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev)();
extern void ABISELECT(_ZThn12656_N9S19244C13D1Ev,_ZThn10396_N9S19244C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev)();
extern void ABISELECT(_ZThn12656_N9S19244C13D0Ev,_ZThn10396_N9S19244C13D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C13__8S19244C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-12656,-10396),
  0,
  ABISELECT(-12656,-10396),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C13__8S19244C1[] = {
  ABISELECT(-12952,-10640),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__A1__9S19244C13__8S19244C1[] = {
  ABISELECT(-13416,-11040),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C13__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-16776,-13792),
  (VTBL_ENTRY)&(_ZTI9S19244C13[0]),
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
extern void _ZN8S19244C6D1Ev();
extern void _ZN8S19244C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C6__8S19244C1[] = {
  ABISELECT(16072,13220),
  ABISELECT(15904,13084),
  ABISELECT(-144,-124),
  ABISELECT(11784,9688),
  ABISELECT(776,652),
  ABISELECT(472,408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19244C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C6D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__8S19244C6__8S19244C1[] = {
  0,
  ABISELECT(-472,-408),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev)();
extern void ABISELECT(_ZThn776_N8S19244C6D1Ev,_ZThn652_N8S19244C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev)();
extern void ABISELECT(_ZThn776_N8S19244C6D0Ev,_ZThn652_N8S19244C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19244C8__8S19244C6__8S19244C1[] = {
  ABISELECT(-776,-652),
  0,
  0,
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(-920,-776),
  ABISELECT(15128,12432),
  ABISELECT(15296,12568),
  ABISELECT(-776,-652),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev),
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev)();
extern void ABISELECT(_ZThn11784_N8S19244C6D1Ev,_ZThn9688_N8S19244C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev)();
extern void ABISELECT(_ZThn11784_N8S19244C6D0Ev,_ZThn9688_N8S19244C6D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__8S19244C6__8S19244C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11784,-9688),
  0,
  ABISELECT(-11784,-9688),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__A1__8S19244C6__8S19244C1[] = {
  ABISELECT(-12080,-9932),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__8S19244C6__8S19244C1[] = {
  ABISELECT(-12544,-10332),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__8S19244C6__8S19244C1[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C6__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-15904,-13084),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__A2__8S19244C6__8S19244C1[] = {
  0,
  0,
  0,
  ABISELECT(-16072,-13220),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S19244C6D1Ev,_ZTvn380_n40_N8S19244C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19244C6D0Ev,_ZTvn380_n40_N8S19244C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19244C118S19244C8__8S19244C6__8S19244C1[] = {
  ABISELECT(14664,12052),
  ABISELECT(-1384,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-1240,-1032),
  (VTBL_ENTRY)&(_ZTI8S19244C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C6D1Ev,_ZTvn380_n40_N8S19244C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19244C6D0Ev,_ZTvn380_n40_N8S19244C6D0Ev),
};
extern void _ZN8S19244C42v6Ev();
extern void _ZN8S19244C82v8Ev();
extern void _ZN8S19244C8D1Ev();
extern void _ZN8S19244C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C8__8S19244C1[] = {
  ABISELECT(11008,9036),
  ABISELECT(-304,-244),
  ABISELECT(-920,-776),
  ABISELECT(15128,12432),
  ABISELECT(15296,12568),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19244C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19244C8D0Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C108S19244C8__8S19244C1[] = {
  ABISELECT(-304,-244),
  ABISELECT(-920,-776),
  ABISELECT(15128,12432),
  ABISELECT(15296,12568),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__9S19244C108S19244C8__8S19244C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-12568),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C108S19244C8__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C108S19244C8__8S19244C1[] = {
  0,
  ABISELECT(920,776),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C108S19244C8__8S19244C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI9S19244C10[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C118S19244C8__8S19244C1[] = {
  ABISELECT(14664,12052),
  ABISELECT(-1384,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C118S19244C8__8S19244C1[] = {
  0,
  ABISELECT(768,624),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C118S19244C8__8S19244C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-10544,-8656),
  0,
  ABISELECT(-10544,-8656),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C118S19244C8__8S19244C1[] = {
  ABISELECT(-10840,-8900),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__9S19244C118S19244C8__8S19244C1[] = {
  ABISELECT(-11304,-9300),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C118S19244C8__8S19244C1[] = {
  0,
  ABISELECT(1384,1156),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C118S19244C8__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-14664,-12052),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev)() __attribute__((weak));
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__8S19244C8__8S19244C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-11008,-9036),
  0,
  ABISELECT(-11008,-9036),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__8S19244C8__8S19244C1[] = {
  ABISELECT(-11304,-9280),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__8S19244C8__8S19244C1[] = {
  ABISELECT(-11768,-9680),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__8S19244C8__8S19244C1[] = {
  0,
  ABISELECT(920,776),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C8__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(-15128,-12432),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C7__A1__8S19244C8__8S19244C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-12568),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__A1__8S19244C8__8S19244C1[] = {
  0,
  ABISELECT(304,244),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19244C11__8S19244C8__8S19244C1[] = {
  ABISELECT(14664,12052),
  ABISELECT(-1384,-1156),
  ABISELECT(10544,8656),
  ABISELECT(-768,-624),
  ABISELECT(-464,-380),
  (VTBL_ENTRY)&(_ZTI8S19244C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D1Ev,_ZThn380_N8S19244C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19244C8D0Ev,_ZThn380_N8S19244C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  0,
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__8S19244C5__8S19244C1[] = {
  0,
  ABISELECT(16048,13208),
  (VTBL_ENTRY)&(_ZTI8S19244C5[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN9S19244C11D1Ev();
extern void _ZN9S19244C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19244C11__A1__8S19244C1[] = {
  ABISELECT(-632,-536),
  ABISELECT(-16680,-13744),
  ABISELECT(-4752,-3932),
  ABISELECT(-16064,-13212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN9S19244C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19244C11D0Ev,
};
extern void _ZN8S19244C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C3__9S19244C11__A1__8S19244C1[] = {
  0,
  ABISELECT(16064,13212),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
};
extern void _ZN8S19244C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev)();
extern void _ZN8S19244C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C9__9S19244C11__A1__8S19244C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(4752,3932),
  0,
  ABISELECT(4752,3932),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19244C92v7Ev,
};
extern void _ZN8S19244C72v3Ev();
extern void _ZN8S19244C72v4Ev();
extern void _ZN8S19244C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C78S19244C9__9S19244C11__A1__8S19244C1[] = {
  ABISELECT(4456,3688),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19244C72v5Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C48S19244C9__9S19244C11__A1__8S19244C1[] = {
  ABISELECT(3992,3288),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
extern void _ZN8S19244C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19244C4__A1__9S19244C11__A1__8S19244C1[] = {
  0,
  ABISELECT(16680,13744),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
  (VTBL_ENTRY)&_ZN8S19244C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19244C5__9S19244C11__A1__8S19244C1[] = {
  ABISELECT(-16048,-13208),
  ABISELECT(632,536),
  (VTBL_ENTRY)&(_ZTI9S19244C11[0]),
};
static  VTT_ENTRY vtt_S19244C1[] = {
  {&(_ZTV8S19244C1[11]),  11,120},
  {&(_tg__ZTV9S19244C12__8S19244C1[4]),  4,4},
  {&(_tg__ZTV8S19244C5__9S19244C12__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C4__9S19244C12__8S19244C1[3]),  3,4},
  {&(_tg__ZTV9S19244C13__8S19244C1[8]),  8,10},
  {&(_tg__ZTV8S19244C2__9S19244C13__8S19244C1[5]),  5,9},
  {&(_tg__ZTV8S19244C4__9S19244C13__8S19244C1[3]),  3,4},
  {&(_tg__ZTV9S19244C11__9S19244C13__8S19244C1[7]),  7,9},
  {&(_tg__ZTV8S19244C3__A1__9S19244C13__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C13__8S19244C1[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C13__8S19244C1[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__A1__9S19244C13__8S19244C1[2]),  2,3},
  {&(_tg__ZTV8S19244C5__9S19244C13__8S19244C1[3]),  3,3},
  {&(_ZTV8S19244C1[28]),  28,120},
  {&(_ZTV8S19244C1[35]),  35,120},
  {&(_ZTV8S19244C1[48]),  48,120},
  {&(_ZTV8S19244C1[56]),  56,120},
  {&(_ZTV8S19244C1[67]),  67,120},
  {&(_ZTV8S19244C1[88]),  88,120},
  {&(_ZTV8S19244C1[94]),  94,120},
  {&(_ZTV8S19244C1[99]),  99,120},
  {&(_ZTV8S19244C1[103]),  103,120},
  {&(_ZTV8S19244C1[108]),  108,120},
  {&(_ZTV8S19244C1[77]),  77,120},
  {&(_ZTV8S19244C1[21]),  21,120},
  {&(_ZTV8S19244C1[118]),  118,120},
  {&(_tg__ZTV8S19244C6__8S19244C1[8]),  8,13},
  {&(_tg__ZTV8S19244C3__8S19244C6__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C8__8S19244C6__8S19244C1[10]),  10,14},
  {&(_tg__ZTV8S19244C9__8S19244C6__8S19244C1[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__A1__8S19244C6__8S19244C1[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__8S19244C6__8S19244C1[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__8S19244C6__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C5__8S19244C6__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C7__A2__8S19244C6__8S19244C1[5]),  5,8},
  {&(_tg__ZTV9S19244C118S19244C8__8S19244C6__8S19244C1[6]),  6,8},
  {&(_tg__ZTV8S19244C8__8S19244C1[7]),  7,11},
  {&(_tg__ZTV9S19244C108S19244C8__8S19244C1[6]),  6,7},
  {&(_tg__ZTV8S19244C7__9S19244C108S19244C8__8S19244C1[5]),  5,8},
  {&(_tg__ZTV8S19244C5__9S19244C108S19244C8__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C108S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C3__9S19244C108S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV9S19244C118S19244C8__8S19244C1[6]),  6,8},
  {&(_tg__ZTV8S19244C3__9S19244C118S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C118S19244C8__8S19244C1[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C118S19244C8__8S19244C1[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__9S19244C118S19244C8__8S19244C1[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C118S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C5__9S19244C118S19244C8__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C9__8S19244C8__8S19244C1[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__8S19244C8__8S19244C1[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__8S19244C8__8S19244C1[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__8S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C5__8S19244C8__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C7__A1__8S19244C8__8S19244C1[5]),  5,8},
  {&(_tg__ZTV8S19244C3__A1__8S19244C8__8S19244C1[3]),  3,4},
  {&(_tg__ZTV9S19244C11__8S19244C8__8S19244C1[6]),  6,8},
  {&(_tg__ZTV8S19244C5__8S19244C1[3]),  3,3},
  {&(_tg__ZTV8S19244C4__8S19244C5__8S19244C1[3]),  3,4},
  {&(_tg__ZTV9S19244C11__A1__8S19244C1[6]),  6,8},
  {&(_tg__ZTV8S19244C3__9S19244C11__A1__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C9__9S19244C11__A1__8S19244C1[9]),  9,13},
  {&(_tg__ZTV8S19244C78S19244C9__9S19244C11__A1__8S19244C1[2]),  2,5},
  {&(_tg__ZTV8S19244C48S19244C9__9S19244C11__A1__8S19244C1[2]),  2,3},
  {&(_tg__ZTV8S19244C4__A1__9S19244C11__A1__8S19244C1[3]),  3,4},
  {&(_tg__ZTV8S19244C5__9S19244C11__A1__8S19244C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19244C1[];
extern  VTBL_ENTRY _ZTV8S19244C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19244C1[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D0Ev,_ZTv0_n16_N8S19244C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D0Ev,_ZThn9036_N8S19244C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C8D1Ev,_ZTv0_n16_N8S19244C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19244C8D1Ev,_ZThn9036_N8S19244C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D0Ev,_ZTv0_n16_N9S19244C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D0Ev,_ZThn8656_N9S19244C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C11D1Ev,_ZTv0_n16_N9S19244C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19244C11D1Ev,_ZThn8656_N9S19244C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C6D0Ev,_ZTv0_n16_N8S19244C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19244C6D0Ev,_ZThn9688_N8S19244C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C6D1Ev,_ZTv0_n16_N8S19244C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19244C6D1Ev,_ZThn9688_N8S19244C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C6D0Ev,_ZTv0_n40_N8S19244C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19244C6D0Ev,_ZThn652_N8S19244C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C6D1Ev,_ZTv0_n40_N8S19244C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19244C6D1Ev,_ZThn652_N8S19244C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19244C13D0Ev,_ZTv0_n28_N9S19244C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19244C13D0Ev,_ZThn14328_N9S19244C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19244C13D1Ev,_ZTv0_n28_N9S19244C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19244C13D1Ev,_ZThn14328_N9S19244C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C13D0Ev,_ZTv0_n16_N9S19244C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19244C13D0Ev,_ZThn10396_N9S19244C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19244C13D0Ev,_ZThn68_N9S19244C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19244C13D1Ev,_ZTv0_n16_N9S19244C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19244C13D1Ev,_ZThn10396_N9S19244C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19244C13D1Ev,_ZThn68_N9S19244C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19244C1D0Ev,_ZTv0_n28_N8S19244C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19244C1D0Ev,_ZThn23496_N8S19244C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19244C1D1Ev,_ZTv0_n28_N8S19244C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19244C1D1Ev,_ZThn23496_N8S19244C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C1D0Ev,_ZTv0_n40_N8S19244C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19244C1D0Ev,_ZThn10528_N8S19244C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19244C1D1Ev,_ZTv0_n40_N8S19244C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19244C1D1Ev,_ZThn10528_N8S19244C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19244C1D0Ev,_ZTv0_n48_N8S19244C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19244C1D0Ev,_ZThn9876_N8S19244C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19244C1D1Ev,_ZTv0_n48_N8S19244C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19244C1D1Ev,_ZThn9876_N8S19244C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C1D0Ev,_ZTv0_n16_N8S19244C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19244C1D0Ev,_ZThn19564_N8S19244C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19244C1D0Ev,_ZThn9236_N8S19244C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19244C1D1Ev,_ZTv0_n16_N8S19244C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19244C1D1Ev,_ZThn19564_N8S19244C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19244C1D1Ev,_ZThn9236_N8S19244C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19244C1 = {  "S19244C1", // class name
  bases_S19244C1, 19,
  &(vtc_S19244C1[0]), // expected_vtbl_contents
  &(vtt_S19244C1[0]), // expected_vtt_contents
  ABISELECT(34976,28744), // object size
  NSPAIRA(_ZTI8S19244C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19244C1),120, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19244C1),66, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7571C3  {
  short s7571c3f0:6;
  long s7571c3f1;
  short s7571c3f2:4;
  __tsi64 s7571c3f3[13];
  void *s7571c3f4;
  virtual void  v3(); // _ZN7S7571C32v3Ev
  ~S7571C3(); // tgen
  S7571C3(); // tgen
};
//SIG(-1 S7571C3) C1{ v1 Fs:6 Fl Fs:4 FL[13] Fp}


void  S7571C3 ::v3(){vfunc_called(this, "_ZN7S7571C32v3Ev");}
S7571C3 ::~S7571C3(){ note_dtor("S7571C3", this);} // tgen
S7571C3 ::S7571C3(){ note_ctor("S7571C3", this);} // tgen

static void Test_S7571C3()
{
  extern Class_Descriptor cd_S7571C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,32)];
    init_test(&cd_S7571C3, buf);
    S7571C3 *dp, &lv = *(dp=new (buf) S7571C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,124), "sizeof(S7571C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7571C3)");
    set_bf_and_test(lv, s7571c3f0, ABISELECT(8,4), 0, 6, 1, "S7571C3");
    set_bf_and_test(lv, s7571c3f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S7571C3");
    check_field_offset(lv, s7571c3f1, ABISELECT(16,8), "S7571C3.s7571c3f1");
    set_bf_and_test(lv, s7571c3f2, ABISELECT(24,12), 0, 4, 1, "S7571C3");
    set_bf_and_test(lv, s7571c3f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S7571C3");
    check_field_offset(lv, s7571c3f3, ABISELECT(32,16), "S7571C3.s7571c3f3");
    check_field_offset(lv, s7571c3f4, ABISELECT(136,120), "S7571C3.s7571c3f4");
    test_class_info(&lv, &cd_S7571C3);
    dp->~S7571C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C3(Test_S7571C3, "S7571C3", ABISELECT(144,124));

#else // __cplusplus

extern void _ZN7S7571C3C1Ev();
extern void _ZN7S7571C3D1Ev();
Name_Map name_map_S7571C3[] = {
  NSPAIR(_ZN7S7571C3C1Ev),
  NSPAIR(_ZN7S7571C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7571C3[];
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C3[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
Class_Descriptor cd_S7571C3 = {  "S7571C3", // class name
  0,0,//no base classes
  &(vtc_S7571C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,124), // object size
  NSPAIRA(_ZTI7S7571C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7571C3),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  S7571C2  : virtual S7571C3 {
  void *s7571c2f0;
  ::S7571C3 s7571c2f1;
  int s7571c2f2:3;
  ~S7571C2(); // tgen
  S7571C2(); // tgen
};
//SIG(-1 S7571C2) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC2 Fi:3}


S7571C2 ::~S7571C2(){ note_dtor("S7571C2", this);} // tgen
S7571C2 ::S7571C2(){ note_ctor("S7571C2", this);} // tgen

static void Test_S7571C2()
{
  extern Class_Descriptor cd_S7571C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,66)];
    init_test(&cd_S7571C2, buf);
    S7571C2 *dp, &lv = *(dp=new (buf) S7571C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,260), "sizeof(S7571C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7571C2)");
    check_base_class_offset(lv, (S7571C3*), ABISELECT(168,136), "S7571C2");
    check_field_offset(lv, s7571c2f0, ABISELECT(8,4), "S7571C2.s7571c2f0");
    check_field_offset(lv, s7571c2f1, ABISELECT(16,8), "S7571C2.s7571c2f1");
    set_bf_and_test(lv, s7571c2f2, ABISELECT(160,132), 0, 3, 1, "S7571C2");
    set_bf_and_test(lv, s7571c2f2, ABISELECT(160,132), 0, 3, hide_sll(1LL<<2), "S7571C2");
    test_class_info(&lv, &cd_S7571C2);
    dp->~S7571C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C2(Test_S7571C2, "S7571C2", ABISELECT(312,260));

#else // __cplusplus

extern void _ZN7S7571C2C1Ev();
extern void _ZN7S7571C2D1Ev();
Name_Map name_map_S7571C2[] = {
  NSPAIR(_ZN7S7571C2C1Ev),
  NSPAIR(_ZN7S7571C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
static Base_Class bases_S7571C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C3,    ABISELECT(168,136), //bcp->offset
    3, //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 _ZTI7S7571C2[];
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C2[] = {
  ABISELECT(168,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  0,
  ABISELECT(-168,-136),
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern VTBL_ENTRY _ZTV7S7571C2[];
static  VTT_ENTRY vtt_S7571C2[] = {
  {&(_ZTV7S7571C2[3]),  3,7},
  {&(_ZTV7S7571C2[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S7571C2[];
extern  VTBL_ENTRY _ZTV7S7571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C2[];
Class_Descriptor cd_S7571C2 = {  "S7571C2", // class name
  bases_S7571C2, 1,
  &(vtc_S7571C2[0]), // expected_vtbl_contents
  &(vtt_S7571C2[0]), // expected_vtt_contents
  ABISELECT(312,260), // object size
  NSPAIRA(_ZTI7S7571C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7571C2),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7571C2),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  S7571C6  {
  __tsi64 s7571c6f0;
  long double s7571c6f1;
  void *s7571c6f2;
  char s7571c6f3;
  ::S7571C3 s7571c6f4;
  void *s7571c6f5[2];
  __tsi64 s7571c6f6[8];
  short s7571c6f7;
  void *s7571c6f8;
  __tsi64 s7571c6f9:64;
  virtual void  v4(); // _ZN7S7571C62v4Ev
  ~S7571C6(); // tgen
  S7571C6(); // tgen
};
//SIG(-1 S7571C6) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64}


void  S7571C6 ::v4(){vfunc_called(this, "_ZN7S7571C62v4Ev");}
S7571C6 ::~S7571C6(){ note_dtor("S7571C6", this);} // tgen
S7571C6 ::S7571C6(){ note_ctor("S7571C6", this);} // tgen

static void Test_S7571C6()
{
  extern Class_Descriptor cd_S7571C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,62)];
    init_test(&cd_S7571C6, buf);
    S7571C6 *dp, &lv = *(dp=new (buf) S7571C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,244), "sizeof(S7571C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C6)");
    check_field_offset(lv, s7571c6f0, ABISELECT(8,4), "S7571C6.s7571c6f0");
    check_field_offset(lv, s7571c6f1, ABISELECT(16,12), "S7571C6.s7571c6f1");
    check_field_offset(lv, s7571c6f2, ABISELECT(32,24), "S7571C6.s7571c6f2");
    check_field_offset(lv, s7571c6f3, ABISELECT(40,28), "S7571C6.s7571c6f3");
    check_field_offset(lv, s7571c6f4, ABISELECT(48,32), "S7571C6.s7571c6f4");
    check_field_offset(lv, s7571c6f5, ABISELECT(192,156), "S7571C6.s7571c6f5");
    check_field_offset(lv, s7571c6f6, ABISELECT(208,164), "S7571C6.s7571c6f6");
    check_field_offset(lv, s7571c6f7, ABISELECT(272,228), "S7571C6.s7571c6f7");
    check_field_offset(lv, s7571c6f8, ABISELECT(280,232), "S7571C6.s7571c6f8");
    set_bf_and_test(lv, s7571c6f9, ABISELECT(288,236), 0, 64, 1, "S7571C6");
    set_bf_and_test(lv, s7571c6f9, ABISELECT(288,236), 0, 64, hide_sll(1LL<<63), "S7571C6");
    test_class_info(&lv, &cd_S7571C6);
    dp->~S7571C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C6(Test_S7571C6, "S7571C6", ABISELECT(304,244));

#else // __cplusplus

extern void _ZN7S7571C6C1Ev();
extern void _ZN7S7571C6D1Ev();
Name_Map name_map_S7571C6[] = {
  NSPAIR(_ZN7S7571C6C1Ev),
  NSPAIR(_ZN7S7571C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7571C6[];
extern void _ZN7S7571C62v4Ev();
static  VTBL_ENTRY vtc_S7571C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C6[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
};
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
Class_Descriptor cd_S7571C6 = {  "S7571C6", // class name
  0,0,//no base classes
  &(vtc_S7571C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,244), // object size
  NSPAIRA(_ZTI7S7571C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7571C6),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7571C5  : S7571C6 {
  ::S7571C2 s7571c5f0;
  int s7571c5f1;
  void *s7571c5f2;
  int s7571c5f3;
  virtual  ~S7571C5(); // _ZN7S7571C5D1Ev
  virtual void  v5(); // _ZN7S7571C52v5Ev
  S7571C5(); // tgen
};
//SIG(-1 S7571C5) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 Fi:3} Fi Fp Fi}


 S7571C5 ::~S7571C5(){ note_dtor("S7571C5", this);}
void  S7571C5 ::v5(){vfunc_called(this, "_ZN7S7571C52v5Ev");}
S7571C5 ::S7571C5(){ note_ctor("S7571C5", this);} // tgen

static void Test_S7571C5()
{
  extern Class_Descriptor cd_S7571C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,130)];
    init_test(&cd_S7571C5, buf);
    S7571C5 *dp, &lv = *(dp=new (buf) S7571C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,516), "sizeof(S7571C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C5)");
    check_base_class_offset(lv, (S7571C6*), 0, "S7571C5");
    check_field_offset(lv, s7571c5f0, ABISELECT(296,244), "S7571C5.s7571c5f0");
    check_field_offset(lv, s7571c5f1, ABISELECT(608,504), "S7571C5.s7571c5f1");
    check_field_offset(lv, s7571c5f2, ABISELECT(616,508), "S7571C5.s7571c5f2");
    check_field_offset(lv, s7571c5f3, ABISELECT(624,512), "S7571C5.s7571c5f3");
    test_class_info(&lv, &cd_S7571C5);
    dp->~S7571C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C5(Test_S7571C5, "S7571C5", ABISELECT(640,516));

#else // __cplusplus

extern void _ZN7S7571C5C1Ev();
extern void _ZN7S7571C5D1Ev();
Name_Map name_map_S7571C5[] = {
  NSPAIR(_ZN7S7571C5C1Ev),
  NSPAIR(_ZN7S7571C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
static Base_Class bases_S7571C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7571C5[];
extern void _ZN7S7571C62v4Ev();
extern void _ZN7S7571C5D1Ev();
extern void _ZN7S7571C5D0Ev();
extern void _ZN7S7571C52v5Ev();
static  VTBL_ENTRY vtc_S7571C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C5[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7571C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7571C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S7571C5[];
extern  VTBL_ENTRY _ZTV7S7571C5[];
Class_Descriptor cd_S7571C5 = {  "S7571C5", // class name
  bases_S7571C5, 1,
  &(vtc_S7571C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,516), // object size
  NSPAIRA(_ZTI7S7571C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7571C5),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  S7571C9  {
  int s7571c9f0[2];
  __tsi64 s7571c9f1[2];
  ::S7571C3 s7571c9f2[3];
  virtual void  v6(); // _ZN7S7571C92v6Ev
  virtual void  v7(); // _ZN7S7571C92v7Ev
  virtual void  v8(); // _ZN7S7571C92v8Ev
  ~S7571C9(); // tgen
  S7571C9(); // tgen
};
//SIG(-1 S7571C9) C1{ v1 v2 v3 Fi[2] FL[2] FC2{ v4 Fs:6 Fl Fs:4 FL[13] Fp}[3]}


void  S7571C9 ::v6(){vfunc_called(this, "_ZN7S7571C92v6Ev");}
void  S7571C9 ::v7(){vfunc_called(this, "_ZN7S7571C92v7Ev");}
void  S7571C9 ::v8(){vfunc_called(this, "_ZN7S7571C92v8Ev");}
S7571C9 ::~S7571C9(){ note_dtor("S7571C9", this);} // tgen
S7571C9 ::S7571C9(){ note_ctor("S7571C9", this);} // tgen

static void Test_S7571C9()
{
  extern Class_Descriptor cd_S7571C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,101)];
    init_test(&cd_S7571C9, buf);
    S7571C9 *dp, &lv = *(dp=new (buf) S7571C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,400), "sizeof(S7571C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7571C9)");
    check_field_offset(lv, s7571c9f0, ABISELECT(8,4), "S7571C9.s7571c9f0");
    check_field_offset(lv, s7571c9f1, ABISELECT(16,12), "S7571C9.s7571c9f1");
    check_field_offset(lv, s7571c9f2, ABISELECT(32,28), "S7571C9.s7571c9f2");
    test_class_info(&lv, &cd_S7571C9);
    dp->~S7571C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C9(Test_S7571C9, "S7571C9", ABISELECT(464,400));

#else // __cplusplus

extern void _ZN7S7571C9C1Ev();
extern void _ZN7S7571C9D1Ev();
Name_Map name_map_S7571C9[] = {
  NSPAIR(_ZN7S7571C9C1Ev),
  NSPAIR(_ZN7S7571C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7571C9[];
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
static  VTBL_ENTRY vtc_S7571C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C9[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
};
extern VTBL_ENTRY _ZTI7S7571C9[];
extern  VTBL_ENTRY _ZTV7S7571C9[];
Class_Descriptor cd_S7571C9 = {  "S7571C9", // class name
  0,0,//no base classes
  &(vtc_S7571C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,400), // object size
  NSPAIRA(_ZTI7S7571C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7571C9),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7571C8  : S7571C6 , S7571C9 , S7571C3 {
  __tsi64 s7571c8f0[2];
  void *s7571c8f1[8];
  ::S19762C7 s7571c8f2;
  void *s7571c8f3;
  int s7571c8f4;
  ::S19762C7 s7571c8f5;
  int s7571c8f6;
  virtual  ~S7571C8(); // _ZN7S7571C8D1Ev
  virtual void  v9(); // _ZN7S7571C82v9Ev
  S7571C8(); // tgen
};
//SIG(-1 S7571C8) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] FL[2] FC3[3]} BC3 vd v1 FL[2] Fp[8] FC5{ BC6{ v7 Fs:6 Fl Fs:4 FL[13] Fp} VBC7{ v8 v9 v10 Fi[2] FL[2] FC6[3]} VBC8{ VBC6 Fp FC6 Fi:3} VBC9{ v11 FL FD Fp Fc FC6 Fp[2] FL[8] Fs Fp FL:64} FC9 Fs Fi[2]} Fp Fi FC5 Fi}


 S7571C8 ::~S7571C8(){ note_dtor("S7571C8", this);}
void  S7571C8 ::v9(){vfunc_called(this, "_ZN7S7571C82v9Ev");}
S7571C8 ::S7571C8(){ note_ctor("S7571C8", this);} // tgen

static void Test_S7571C8()
{
  extern Class_Descriptor cd_S7571C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,850)];
    init_test(&cd_S7571C8, buf);
    S7571C8 *dp, &lv = *(dp=new (buf) S7571C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,3396), "sizeof(S7571C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C8)");
    check_base_class_offset(lv, (S7571C6*), 0, "S7571C8");
    check_base_class_offset(lv, (S7571C9*), ABISELECT(296,244), "S7571C8");
    check_base_class_offset(lv, (S7571C3*), ABISELECT(760,644), "S7571C8");
    check_field_offset(lv, s7571c8f0, ABISELECT(904,768), "S7571C8.s7571c8f0");
    check_field_offset(lv, s7571c8f1, ABISELECT(920,784), "S7571C8.s7571c8f1");
    check_field_offset(lv, s7571c8f2, ABISELECT(992,816), "S7571C8.s7571c8f2");
    check_field_offset(lv, s7571c8f3, ABISELECT(2544,2100), "S7571C8.s7571c8f3");
    check_field_offset(lv, s7571c8f4, ABISELECT(2552,2104), "S7571C8.s7571c8f4");
    check_field_offset(lv, s7571c8f5, ABISELECT(2560,2108), "S7571C8.s7571c8f5");
    check_field_offset(lv, s7571c8f6, ABISELECT(4112,3392), "S7571C8.s7571c8f6");
    test_class_info(&lv, &cd_S7571C8);
    dp->~S7571C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C8(Test_S7571C8, "S7571C8", ABISELECT(4128,3396));

#else // __cplusplus

extern void _ZN7S7571C8C1Ev();
extern void _ZN7S7571C8D1Ev();
Name_Map name_map_S7571C8[] = {
  NSPAIR(_ZN7S7571C8C1Ev),
  NSPAIR(_ZN7S7571C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C9;
extern VTBL_ENTRY _ZTI7S7571C9[];
extern  VTBL_ENTRY _ZTV7S7571C9[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
static Base_Class bases_S7571C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7571C9,    ABISELECT(296,244), //bcp->offset
    6, //bcp->virtual_function_table_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_S7571C3,    ABISELECT(760,644), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7571C8[];
extern void _ZN7S7571C62v4Ev();
extern void _ZN7S7571C8D1Ev();
extern void _ZN7S7571C8D0Ev();
extern void _ZN7S7571C82v9Ev();
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C8[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
  ABISELECT(-296,-244),
  (VTBL_ENTRY)&(_ZTI7S7571C8[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
  ABISELECT(-760,-644),
  (VTBL_ENTRY)&(_ZTI7S7571C8[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7571C8[];
extern  VTBL_ENTRY _ZTV7S7571C8[];
Class_Descriptor cd_S7571C8 = {  "S7571C8", // class name
  bases_S7571C8, 3,
  &(vtc_S7571C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,3396), // object size
  NSPAIRA(_ZTI7S7571C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7571C8),14, //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  S7571C7  : virtual S7571C6 , virtual S7571C8 , virtual S7571C3 , virtual S7571C2 {
  __tsi64 s7571c7f0:44;
  void *s7571c7f1;
  int s7571c7f2;
  ::S19762C7 s7571c7f3;
  __tsi64 s7571c7f4[2];
  int s7571c7f5[3];
  ::S7571C8 s7571c7f6;
  char s7571c7f7:7;
  ::S7571C5 s7571c7f8;
  ~S7571C7(); // tgen
  S7571C7(); // tgen
};
//SIG(-1 S7571C7) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} VBC4{ BC2 BC5{ v2 v3 v4 Fi[2] FL[2] FC3[3]} BC3 vd v6 FL[2] Fp[8] FC6{ BC7{ v7 Fs:6 Fl Fs:4 FL[13] Fp} VBC8{ v8 v9 v10 Fi[2] FL[2] FC7[3]} VBC9{ VBC7 Fp FC7 Fi:3} VBC10{ v11 FL FD Fp Fc FC7 Fp[2] FL[8] Fs Fp FL:64} FC10 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC11{ VBC3 Fp FC3 Fi:3} FL:44 Fp Fi FC6 FL[2] Fi[3] FC4 Fc:7 FC12{ BC2 vd v12 FC11 Fi Fp Fi}}


S7571C7 ::~S7571C7(){ note_dtor("S7571C7", this);} // tgen
S7571C7 ::S7571C7(){ note_ctor("S7571C7", this);} // tgen

static void Test_S7571C7()
{
  extern Class_Descriptor cd_S7571C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,2288)];
    init_test(&cd_S7571C7, buf);
    S7571C7 *dp, &lv = *(dp=new (buf) S7571C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,9148), "sizeof(S7571C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C7)");
    /*is_ambiguous_... S7571C7::S7571C6 */ AMB_check_base_class_offset(lv, (S7571C6*), ABISELECT(6400,5248), "S7571C7");
    check_base_class_offset(lv, (S7571C6*)(S7571C8*), ABISELECT(6704,5492), "S7571C7");
    check_base_class_offset(lv, (S7571C9*)(S7571C8*), ABISELECT(7000,5736), "S7571C7");
    check_base_class_offset(lv, (S7571C3*)(S7571C8*), ABISELECT(7464,6136), "S7571C7");
    check_base_class_offset(lv, (S7571C8*), ABISELECT(6704,5492), "S7571C7");
    /*is_ambiguous_... S7571C7::S7571C3 */ AMB_check_base_class_offset(lv, (S7571C3*), ABISELECT(10824,8888), "S7571C7");
    check_base_class_offset(lv, (S7571C3*)(S7571C2*), ABISELECT(10824,8888), "S7571C7");
    check_base_class_offset(lv, (S7571C2*), ABISELECT(10968,9012), "S7571C7");
    set_bf_and_test(lv, s7571c7f0, ABISELECT(8,4), 0, 44, 1, "S7571C7");
    set_bf_and_test(lv, s7571c7f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S7571C7");
    check_field_offset(lv, s7571c7f1, ABISELECT(16,12), "S7571C7.s7571c7f1");
    check_field_offset(lv, s7571c7f2, ABISELECT(24,16), "S7571C7.s7571c7f2");
    check_field_offset(lv, s7571c7f3, ABISELECT(32,20), "S7571C7.s7571c7f3");
    check_field_offset(lv, s7571c7f4, ABISELECT(1584,1304), "S7571C7.s7571c7f4");
    check_field_offset(lv, s7571c7f5, ABISELECT(1600,1320), "S7571C7.s7571c7f5");
    check_field_offset(lv, s7571c7f6, ABISELECT(1616,1332), "S7571C7.s7571c7f6");
    set_bf_and_test(lv, s7571c7f7, ABISELECT(5744,4728), 0, 7, 1, "S7571C7");
    set_bf_and_test(lv, s7571c7f7, ABISELECT(5744,4728), 0, 7, hide_sll(1LL<<6), "S7571C7");
    check_field_offset(lv, s7571c7f8, ABISELECT(5760,4732), "S7571C7.s7571c7f8");
    test_class_info(&lv, &cd_S7571C7);
    dp->~S7571C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C7(Test_S7571C7, "S7571C7", ABISELECT(11136,9148));

#else // __cplusplus

extern void _ZN7S7571C7C1Ev();
extern void _ZN7S7571C7D1Ev();
Name_Map name_map_S7571C7[] = {
  NSPAIR(_ZN7S7571C7C1Ev),
  NSPAIR(_ZN7S7571C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C9;
extern VTBL_ENTRY _ZTI7S7571C9[];
extern  VTBL_ENTRY _ZTV7S7571C9[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C8;
extern VTBL_ENTRY _ZTI7S7571C8[];
extern  VTBL_ENTRY _ZTV7S7571C8[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C2;
extern VTBL_ENTRY _ZTI7S7571C2[];
extern  VTBL_ENTRY _ZTV7S7571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C2[];
static Base_Class bases_S7571C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C6,    ABISELECT(6400,5248), //bcp->offset
    8, //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_S7571C6,    ABISELECT(6704,5492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7571C9,    ABISELECT(7000,5736), //bcp->offset
    25, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7571C3,    ABISELECT(7464,6136), //bcp->offset
    30, //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7571C8,    ABISELECT(6704,5492), //bcp->offset
    12, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7571C3,    ABISELECT(10824,8888), //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7571C2,    ABISELECT(10968,9012), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7571C7[];
extern void _ZN7S7571C7D1Ev();
extern void _ZN7S7571C7D0Ev();
extern void _ZN7S7571C62v4Ev();
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
extern void _ZN7S7571C32v3Ev();
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C7[] = {
  ABISELECT(10968,9012),
  ABISELECT(10824,8888),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C7D0Ev,
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  0,
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  ABISELECT(-144,-124),
  ABISELECT(-10968,-9012),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
};
extern VTBL_ENTRY _ZTV7S7571C7[];
static  VTBL_ENTRY _tg__ZTV7S7571C2__7S7571C7[] = {
  ABISELECT(-144,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__7S7571C2__7S7571C7[] = {
  0,
  ABISELECT(144,124),
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTT_ENTRY vtt_S7571C7[] = {
  {&(_ZTV7S7571C7[6]),  6,40},
  {&(_ZTV7S7571C7[11]),  11,40},
  {&(_ZTV7S7571C7[21]),  21,40},
  {&(_ZTV7S7571C7[27]),  27,40},
  {&(_ZTV7S7571C7[32]),  32,40},
  {&(_ZTV7S7571C7[36]),  36,40},
  {&(_ZTV7S7571C7[40]),  40,40},
  {&(_tg__ZTV7S7571C2__7S7571C7[3]),  3,3},
  {&(_tg__ZTV7S7571C3__7S7571C2__7S7571C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7571C7[];
extern  VTBL_ENTRY _ZTV7S7571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C7[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7571C7 = {  "S7571C7", // class name
  bases_S7571C7, 7,
  &(vtc_S7571C7[0]), // expected_vtbl_contents
  &(vtt_S7571C7[0]), // expected_vtt_contents
  ABISELECT(11136,9148), // object size
  NSPAIRA(_ZTI7S7571C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7571C7),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7571C7),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7571C4  : virtual S7571C5 , virtual S7571C3 , virtual S7571C7 {
  int s7571c4f0;
  long double s7571c4f1;
  int s7571c4f2;
  void *s7571c4f3;
  long s7571c4f4;
  ::S19762C23_nt s7571c4f5;
  int s7571c4f6;
  __tsi64 s7571c4f7;
  virtual  ~S7571C4(); // _ZN7S7571C4D2Ev
  S7571C4(); // tgen
};
//SIG(-1 S7571C4) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp[2] FL[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 Fi:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] FL[2] FC4[3]} BC4 vd v7 FL[2] Fp[8] FC9{ BC10{ v8 Fs:6 Fl Fs:4 FL[13] Fp} VBC11{ v9 v10 v11 Fi[2] FL[2] FC10[3]} VBC12{ VBC10 Fp FC10 Fi:3} VBC13{ v12 FL FD Fp Fc FC10 Fp[2] FL[8] Fs Fp FL:64} FC13 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 FL[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL}


 S7571C4 ::~S7571C4(){ note_dtor("S7571C4", this);}
S7571C4 ::S7571C4(){ note_ctor("S7571C4", this);} // tgen

static void Test_S7571C4()
{
  extern Class_Descriptor cd_S7571C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,2430)];
    init_test(&cd_S7571C4, buf);
    S7571C4 *dp, &lv = *(dp=new (buf) S7571C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,9716), "sizeof(S7571C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C4)");
    check_base_class_offset(lv, (S7571C6*)(S7571C5*), ABISELECT(80,52), "S7571C4");
    check_base_class_offset(lv, (S7571C5*), ABISELECT(80,52), "S7571C4");
    /*is_ambiguous_... S7571C4::S7571C3 */ AMB_check_base_class_offset(lv, (S7571C3*), ABISELECT(712,568), "S7571C4");
    /*is_ambiguous_... S7571C7::S7571C3 */ AMB_check_base_class_offset(lv, (S7571C3*)(S7571C7*), ABISELECT(712,568), "S7571C4");
    check_base_class_offset(lv, (S7571C3*)(S7571C2*), ABISELECT(712,568), "S7571C4");
    /*is_ambiguous_... S7571C7::S7571C6 */ AMB_check_base_class_offset(lv, (S7571C6*)(S7571C7*), ABISELECT(7264,5940), "S7571C4");
    check_base_class_offset(lv, (S7571C6*)(S7571C8*), ABISELECT(7568,6184), "S7571C4");
    check_base_class_offset(lv, (S7571C9*)(S7571C8*), ABISELECT(7864,6428), "S7571C4");
    check_base_class_offset(lv, (S7571C3*)(S7571C8*), ABISELECT(8328,6828), "S7571C4");
    check_base_class_offset(lv, (S7571C8*)(S7571C7*), ABISELECT(7568,6184), "S7571C4");
    check_base_class_offset(lv, (S7571C2*)(S7571C7*), ABISELECT(11688,9580), "S7571C4");
    check_base_class_offset(lv, (S7571C7*), ABISELECT(864,692), "S7571C4");
    check_field_offset(lv, s7571c4f0, ABISELECT(8,4), "S7571C4.s7571c4f0");
    check_field_offset(lv, s7571c4f1, ABISELECT(16,8), "S7571C4.s7571c4f1");
    check_field_offset(lv, s7571c4f2, ABISELECT(32,20), "S7571C4.s7571c4f2");
    check_field_offset(lv, s7571c4f3, ABISELECT(40,24), "S7571C4.s7571c4f3");
    check_field_offset(lv, s7571c4f4, ABISELECT(48,28), "S7571C4.s7571c4f4");
    check_field_offset(lv, s7571c4f5, ABISELECT(56,32), "S7571C4.s7571c4f5");
    check_field_offset(lv, s7571c4f6, ABISELECT(64,40), "S7571C4.s7571c4f6");
    check_field_offset(lv, s7571c4f7, ABISELECT(72,44), "S7571C4.s7571c4f7");
    test_class_info(&lv, &cd_S7571C4);
    dp->~S7571C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C4(Test_S7571C4, "S7571C4", ABISELECT(11856,9716));

#else // __cplusplus

extern void _ZN7S7571C4C1Ev();
extern void _ZN7S7571C4D2Ev();
Name_Map name_map_S7571C4[] = {
  NSPAIR(_ZN7S7571C4C1Ev),
  NSPAIR(_ZN7S7571C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C5;
extern VTBL_ENTRY _ZTI7S7571C5[];
extern  VTBL_ENTRY _ZTV7S7571C5[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C9;
extern VTBL_ENTRY _ZTI7S7571C9[];
extern  VTBL_ENTRY _ZTV7S7571C9[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C8;
extern VTBL_ENTRY _ZTI7S7571C8[];
extern  VTBL_ENTRY _ZTV7S7571C8[];
extern Class_Descriptor cd_S7571C2;
extern VTBL_ENTRY _ZTI7S7571C2[];
extern  VTBL_ENTRY _ZTV7S7571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C2[];
extern Class_Descriptor cd_S7571C7;
extern VTBL_ENTRY _ZTI7S7571C7[];
extern  VTBL_ENTRY _ZTV7S7571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C7[];
static Base_Class bases_S7571C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C6,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7571C5,    ABISELECT(80,52), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7571C3,    ABISELECT(712,568), //bcp->offset
    19, //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},
  {&cd_S7571C6,    ABISELECT(7264,5940), //bcp->offset
    32, //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
    9, //immediately_derived
  0, 1},
  {&cd_S7571C6,    ABISELECT(7568,6184), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7571C9,    ABISELECT(7864,6428), //bcp->offset
    49, //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7571C3,    ABISELECT(8328,6828), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7571C8,    ABISELECT(7568,6184), //bcp->offset
    36, //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
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7571C2,    ABISELECT(11688,9580), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7571C7,    ABISELECT(864,692), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7571C4[];
extern void _ZN7S7571C4D1Ev();
extern void _ZN7S7571C4D0Ev();
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7571C4D1Ev,_ZThn52_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7571C4D0Ev,_ZThn52_N7S7571C4D0Ev)() __attribute__((weak));
extern void _ZN7S7571C52v5Ev();
extern void _ZN7S7571C32v3Ev();
extern void ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn864_N7S7571C4D1Ev,_ZThn692_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn864_N7S7571C4D0Ev,_ZThn692_N7S7571C4D0Ev)() __attribute__((weak));
extern void _ZN7S7571C62v4Ev();
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn7568_N7S7571C4D1Ev,_ZThn6184_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn7568_N7S7571C4D0Ev,_ZThn6184_N7S7571C4D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C4[] = {
  ABISELECT(11688,9580),
  ABISELECT(7568,6184),
  ABISELECT(7264,5940),
  ABISELECT(864,692),
  ABISELECT(712,568),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C4D0Ev,
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C52v5Ev,
  0,
  ABISELECT(-712,-568),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  ABISELECT(-864,-692),
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-864,-692),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev),
  0,
  ABISELECT(-7264,-5940),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7568,-6184),
  0,
  ABISELECT(-7568,-6184),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
  ABISELECT(-7864,-6428),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
  ABISELECT(-8328,-6828),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  ABISELECT(-10976,-9012),
  ABISELECT(-11688,-9580),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
};
extern VTBL_ENTRY _ZTV7S7571C4[];
extern void _ZN7S7571C7D1Ev();
extern void _ZN7S7571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C7__7S7571C4[] = {
  ABISELECT(10824,8888),
  ABISELECT(-152,-124),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C7D0Ev,
};
extern void _ZN7S7571C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C6__7S7571C7__7S7571C4[] = {
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
};
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C8__7S7571C7__7S7571C4[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
};
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C97S7571C8__7S7571C7__7S7571C4[] = {
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C37S7571C8__7S7571C7__7S7571C4[] = {
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__A1__7S7571C7__7S7571C4[] = {
  0,
  ABISELECT(152,124),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7571C2__7S7571C7__7S7571C4[] = {
  ABISELECT(-10976,-9012),
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7571C2__7S7571C4[] = {
  ABISELECT(-10976,-9012),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__7S7571C2__7S7571C4[] = {
  0,
  ABISELECT(10976,9012),
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTT_ENTRY vtt_S7571C4[] = {
  {&(_ZTV7S7571C4[8]),  8,60},
  {&(_ZTV7S7571C4[15]),  15,60},
  {&(_ZTV7S7571C4[22]),  22,60},
  {&(_ZTV7S7571C4[30]),  30,60},
  {&(_ZTV7S7571C4[35]),  35,60},
  {&(_ZTV7S7571C4[45]),  45,60},
  {&(_ZTV7S7571C4[51]),  51,60},
  {&(_ZTV7S7571C4[56]),  56,60},
  {&(_ZTV7S7571C4[60]),  60,60},
  {&(_tg__ZTV7S7571C7__7S7571C4[6]),  6,8},
  {&(_tg__ZTV7S7571C6__7S7571C7__7S7571C4[3]),  3,4},
  {&(_tg__ZTV7S7571C8__7S7571C7__7S7571C4[9]),  9,13},
  {&(_tg__ZTV7S7571C97S7571C8__7S7571C7__7S7571C4[2]),  2,5},
  {&(_tg__ZTV7S7571C37S7571C8__7S7571C7__7S7571C4[2]),  2,3},
  {&(_tg__ZTV7S7571C3__A1__7S7571C7__7S7571C4[3]),  3,4},
  {&(_tg__ZTV7S7571C2__7S7571C7__7S7571C4[3]),  3,3},
  {&(_tg__ZTV7S7571C2__7S7571C4[3]),  3,3},
  {&(_tg__ZTV7S7571C3__7S7571C2__7S7571C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7571C4[];
extern  VTBL_ENTRY _ZTV7S7571C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C4[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7571C4D0Ev,_ZThn692_N7S7571C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7571C4D1Ev,_ZThn692_N7S7571C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7571C4D0Ev,_ZThn6184_N7S7571C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7571C4D0Ev,_ZThn52_N7S7571C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7571C4D1Ev,_ZThn6184_N7S7571C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7571C4D1Ev,_ZThn52_N7S7571C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7571C4 = {  "S7571C4", // class name
  bases_S7571C4, 10,
  &(vtc_S7571C4[0]), // expected_vtbl_contents
  &(vtt_S7571C4[0]), // expected_vtt_contents
  ABISELECT(11856,9716), // object size
  NSPAIRA(_ZTI7S7571C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7571C4),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7571C4),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7571C1  : S7571C2 , S7571C4 {
  int s7571c1f0[7];
  __tsi64 s7571c1f1;
  int s7571c1f2[9];
  int s7571c1f3;
  int s7571c1f4;
  __tsi64 s7571c1f5;
  int s7571c1f6;
  __tsi64 s7571c1f7[7];
  virtual void  v1(); // _ZN7S7571C12v1Ev
  virtual void  v2(); // _ZN7S7571C12v2Ev
  ~S7571C1(); // tgen
  S7571C1(); // tgen
};
//SIG(1 S7571C1) C1{ BC2{ VBC3{ v3 Fs:6 Fl Fs:4 FL[13] Fp} Fp FC3 Fi:3} BC4{ VBC5{ BC6{ v4 FL FD Fp Fc FC3 Fp[2] FL[8] Fs Fp FL:64} vd v5 FC2 Fi Fp Fi} VBC3 VBC7{ VBC6 VBC8{ BC6 BC9{ v6 v7 v8 Fi[2] FL[2] FC3[3]} BC3 vd v9 FL[2] Fp[8] FC10{ BC11{ v10 Fs:6 Fl Fs:4 FL[13] Fp} VBC12{ v11 v12 v13 Fi[2] FL[2] FC11[3]} VBC13{ VBC11 Fp FC11 Fi:3} VBC14{ v14 FL FD Fp Fc FC11 Fp[2] FL[8] Fs Fp FL:64} FC14 Fs Fi[2]} Fp Fi FC10 Fi} VBC3 VBC2 FL:44 Fp Fi FC10 FL[2] Fi[3] FC8 Fc:7 FC5} vd Fi FD Fi Fp Fl FU15{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi FL} v1 v2 Fi[7] FL Fi[9] Fi Fi FL Fi FL[7]}


void  S7571C1 ::v1(){vfunc_called(this, "_ZN7S7571C12v1Ev");}
void  S7571C1 ::v2(){vfunc_called(this, "_ZN7S7571C12v2Ev");}
S7571C1 ::~S7571C1(){ note_dtor("S7571C1", this);} // tgen
S7571C1 ::S7571C1(){ note_ctor("S7571C1", this);} // tgen

static void Test_S7571C1()
{
  extern Class_Descriptor cd_S7571C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(763,2501)];
    init_test(&cd_S7571C1, buf);
    S7571C1 *dp, &lv = *(dp=new (buf) S7571C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12192,10000), "sizeof(S7571C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7571C1)");
    /*is_ambiguous_... S7571C1::S7571C2 */ AMB_check_base_class_offset(lv, (S7571C3*)(S7571C2*), ABISELECT(416,336), "S7571C1");
    /*is_ambiguous_... S7571C4::S7571C3 */ AMB_check_base_class_offset(lv, (S7571C3*)(S7571C4*), ABISELECT(416,336), "S7571C1");
    /*is_ambiguous_... S7571C7::S7571C3 */ AMB_check_base_class_offset(lv, (S7571C3*)(S7571C7*), ABISELECT(416,336), "S7571C1");
    /*is_ambiguous_... S7571C1::S7571C2 */ AMB_check_base_class_offset(lv, (S7571C3*)(S7571C2*), ABISELECT(416,336), "S7571C1");
    /*is_ambiguous_... S7571C1::S7571C2 */ AMB_check_base_class_offset(lv, (S7571C2*), 0, "S7571C1");
    check_base_class_offset(lv, (S7571C6*)(S7571C5*), ABISELECT(560,460), "S7571C1");
    check_base_class_offset(lv, (S7571C5*)(S7571C4*), ABISELECT(560,460), "S7571C1");
    /*is_ambiguous_... S7571C7::S7571C6 */ AMB_check_base_class_offset(lv, (S7571C6*)(S7571C7*), ABISELECT(7600,6224), "S7571C1");
    check_base_class_offset(lv, (S7571C6*)(S7571C8*), ABISELECT(7904,6468), "S7571C1");
    check_base_class_offset(lv, (S7571C9*)(S7571C8*), ABISELECT(8200,6712), "S7571C1");
    check_base_class_offset(lv, (S7571C3*)(S7571C8*), ABISELECT(8664,7112), "S7571C1");
    check_base_class_offset(lv, (S7571C8*)(S7571C7*), ABISELECT(7904,6468), "S7571C1");
    check_base_class_offset(lv, (S7571C2*)(S7571C7*), ABISELECT(12024,9864), "S7571C1");
    check_base_class_offset(lv, (S7571C7*)(S7571C4*), ABISELECT(1200,976), "S7571C1");
    check_base_class_offset(lv, (S7571C4*), ABISELECT(176,136), "S7571C1");
    check_field_offset(lv, s7571c1f0, ABISELECT(256,188), "S7571C1.s7571c1f0");
    check_field_offset(lv, s7571c1f1, ABISELECT(288,216), "S7571C1.s7571c1f1");
    check_field_offset(lv, s7571c1f2, ABISELECT(296,224), "S7571C1.s7571c1f2");
    check_field_offset(lv, s7571c1f3, ABISELECT(332,260), "S7571C1.s7571c1f3");
    check_field_offset(lv, s7571c1f4, ABISELECT(336,264), "S7571C1.s7571c1f4");
    check_field_offset(lv, s7571c1f5, ABISELECT(344,268), "S7571C1.s7571c1f5");
    check_field_offset(lv, s7571c1f6, ABISELECT(352,276), "S7571C1.s7571c1f6");
    check_field_offset(lv, s7571c1f7, ABISELECT(360,280), "S7571C1.s7571c1f7");
    test_class_info(&lv, &cd_S7571C1);
    dp->~S7571C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7571C1(Test_S7571C1, "S7571C1", ABISELECT(12192,10000));

#else // __cplusplus

extern void _ZN7S7571C1C1Ev();
extern void _ZN7S7571C1D1Ev();
Name_Map name_map_S7571C1[] = {
  NSPAIR(_ZN7S7571C1C1Ev),
  NSPAIR(_ZN7S7571C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C2;
extern VTBL_ENTRY _ZTI7S7571C2[];
extern  VTBL_ENTRY _ZTV7S7571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C2[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C5;
extern VTBL_ENTRY _ZTI7S7571C5[];
extern  VTBL_ENTRY _ZTV7S7571C5[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C6;
extern VTBL_ENTRY _ZTI7S7571C6[];
extern  VTBL_ENTRY _ZTV7S7571C6[];
extern Class_Descriptor cd_S7571C9;
extern VTBL_ENTRY _ZTI7S7571C9[];
extern  VTBL_ENTRY _ZTV7S7571C9[];
extern Class_Descriptor cd_S7571C3;
extern VTBL_ENTRY _ZTI7S7571C3[];
extern  VTBL_ENTRY _ZTV7S7571C3[];
extern Class_Descriptor cd_S7571C8;
extern VTBL_ENTRY _ZTI7S7571C8[];
extern  VTBL_ENTRY _ZTV7S7571C8[];
extern Class_Descriptor cd_S7571C2;
extern VTBL_ENTRY _ZTI7S7571C2[];
extern  VTBL_ENTRY _ZTV7S7571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C2[];
extern Class_Descriptor cd_S7571C7;
extern VTBL_ENTRY _ZTI7S7571C7[];
extern  VTBL_ENTRY _ZTV7S7571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C7[];
extern Class_Descriptor cd_S7571C4;
extern VTBL_ENTRY _ZTI7S7571C4[];
extern  VTBL_ENTRY _ZTV7S7571C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C4[];
static Base_Class bases_S7571C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7571C3,    ABISELECT(416,336), //bcp->offset
    22, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7571C2,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7571C6,    ABISELECT(560,460), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7571C5,    ABISELECT(560,460), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //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
    11, //immediately_derived
  0, 1},
  {&cd_S7571C6,    ABISELECT(7600,6224), //bcp->offset
    44, //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
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7571C6,    ABISELECT(7904,6468), //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7571C9,    ABISELECT(8200,6712), //bcp->offset
    61, //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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7571C3,    ABISELECT(8664,7112), //bcp->offset
    66, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7571C8,    ABISELECT(7904,6468), //bcp->offset
    48, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7571C2,    ABISELECT(12024,9864), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7571C7,    ABISELECT(1200,976), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7571C4,    ABISELECT(176,136), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //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 _ZTI7S7571C1[];
extern void _ZN7S7571C12v1Ev();
extern void _ZN7S7571C12v2Ev();
extern void _ZN7S7571C1D1Ev();
extern void _ZN7S7571C1D0Ev();
extern void ABISELECT(_ZThn176_N7S7571C1D1Ev,_ZThn136_N7S7571C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7571C1D0Ev,_ZThn136_N7S7571C1D0Ev)();
extern void _ZN7S7571C32v3Ev();
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C1D1Ev,_ZTv0_n16_N7S7571C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S7571C1D1Ev,_ZThn460_N7S7571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C1D0Ev,_ZTv0_n16_N7S7571C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S7571C1D0Ev,_ZThn460_N7S7571C1D0Ev)() __attribute__((weak));
extern void _ZN7S7571C52v5Ev();
extern void ABISELECT(_ZTv0_n56_N7S7571C1D1Ev,_ZTv0_n28_N7S7571C1D1Ev)();
extern void ABISELECT(_ZThn1200_N7S7571C1D1Ev,_ZThn976_N7S7571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7571C1D0Ev,_ZTv0_n28_N7S7571C1D0Ev)();
extern void ABISELECT(_ZThn1200_N7S7571C1D0Ev,_ZThn976_N7S7571C1D0Ev)() __attribute__((weak));
extern void _ZN7S7571C62v4Ev();
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C1D1Ev,_ZTv0_n16_N7S7571C1D1Ev)();
extern void ABISELECT(_ZThn7904_N7S7571C1D1Ev,_ZThn6468_N7S7571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C1D0Ev,_ZTv0_n16_N7S7571C1D0Ev)();
extern void ABISELECT(_ZThn7904_N7S7571C1D0Ev,_ZThn6468_N7S7571C1D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY vtc_S7571C1[] = {
  ABISELECT(12024,9864),
  ABISELECT(7904,6468),
  ABISELECT(7600,6224),
  ABISELECT(1200,976),
  ABISELECT(560,460),
  ABISELECT(416,336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7571C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7571C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C1D0Ev,
  ABISELECT(11848,9728),
  ABISELECT(7728,6332),
  ABISELECT(7424,6088),
  ABISELECT(1024,840),
  ABISELECT(240,200),
  ABISELECT(384,324),
  ABISELECT(-176,-136),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7571C1D1Ev,_ZThn136_N7S7571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7571C1D0Ev,_ZThn136_N7S7571C1D0Ev),
  0,
  ABISELECT(-416,-336),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  0,
  ABISELECT(-560,-460),
  0,
  ABISELECT(-560,-460),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C1D1Ev,_ZTv0_n16_N7S7571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C1D0Ev,_ZTv0_n16_N7S7571C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C52v5Ev,
  ABISELECT(-1200,-976),
  ABISELECT(10824,8888),
  ABISELECT(-784,-640),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-1200,-976),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C1D1Ev,_ZTv0_n28_N7S7571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C1D0Ev,_ZTv0_n28_N7S7571C1D0Ev),
  0,
  ABISELECT(-7600,-6224),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7904,-6468),
  0,
  ABISELECT(-7904,-6468),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C1D1Ev,_ZTv0_n16_N7S7571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C1D0Ev,_ZTv0_n16_N7S7571C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
  ABISELECT(-8200,-6712),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
  ABISELECT(-8664,-7112),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
  ABISELECT(-11608,-9528),
  ABISELECT(-12024,-9864),
  (VTBL_ENTRY)&(_ZTI7S7571C1[0]),
};
extern VTBL_ENTRY _ZTV7S7571C1[];
static  VTBL_ENTRY _tg__ZTV7S7571C2__A__7S7571C1[] = {
  ABISELECT(416,336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__7S7571C2__A__7S7571C1[] = {
  0,
  ABISELECT(-416,-336),
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern void _ZN7S7571C4D1Ev();
extern void _ZN7S7571C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C4__7S7571C1[] = {
  ABISELECT(11848,9728),
  ABISELECT(7728,6332),
  ABISELECT(7424,6088),
  ABISELECT(1024,840),
  ABISELECT(240,200),
  ABISELECT(384,324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C4D0Ev,
};
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn384_N7S7571C4D1Ev,_ZThn324_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn384_N7S7571C4D0Ev,_ZThn324_N7S7571C4D0Ev)() __attribute__((weak));
extern void _ZN7S7571C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C5__7S7571C4__7S7571C1[] = {
  0,
  ABISELECT(-384,-324),
  0,
  ABISELECT(-384,-324),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C52v5Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__7S7571C4__7S7571C1[] = {
  0,
  ABISELECT(-240,-200),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn1024_N7S7571C4D1Ev,_ZThn840_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn1024_N7S7571C4D0Ev,_ZThn840_N7S7571C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7571C7__7S7571C4__7S7571C1[] = {
  ABISELECT(-1024,-840),
  ABISELECT(10824,8888),
  ABISELECT(-784,-640),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  ABISELECT(-1024,-840),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev),
};
extern void _ZN7S7571C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C6__A1__7S7571C4__7S7571C1[] = {
  0,
  ABISELECT(-7424,-6088),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
};
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev)();
extern void ABISELECT(_ZThn7728_N7S7571C4D1Ev,_ZThn6332_N7S7571C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev)();
extern void ABISELECT(_ZThn7728_N7S7571C4D0Ev,_ZThn6332_N7S7571C4D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C8__7S7571C4__7S7571C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-7728,-6332),
  0,
  ABISELECT(-7728,-6332),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
};
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C97S7571C8__7S7571C4__7S7571C1[] = {
  ABISELECT(-8024,-6576),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C37S7571C8__A1__7S7571C4__7S7571C1[] = {
  ABISELECT(-8488,-6976),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7571C2__7S7571C4__7S7571C1[] = {
  ABISELECT(-11608,-9528),
  ABISELECT(-11848,-9728),
  (VTBL_ENTRY)&(_ZTI7S7571C4[0]),
};
extern void _ZN7S7571C7D1Ev();
extern void _ZN7S7571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C7__7S7571C1[] = {
  ABISELECT(10824,8888),
  ABISELECT(-784,-640),
  ABISELECT(6704,5492),
  ABISELECT(6400,5248),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7571C7D0Ev,
};
extern void _ZN7S7571C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C6__7S7571C7__7S7571C1[] = {
  0,
  ABISELECT(-6400,-5248),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
};
extern void _ZN7S7571C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev)() __attribute__((weak));
extern void _ZN7S7571C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C8__7S7571C7__7S7571C1[] = {
  ABISELECT(760,644),
  ABISELECT(296,244),
  ABISELECT(296,244),
  ABISELECT(296,244),
  0,
  ABISELECT(-6704,-5492),
  0,
  ABISELECT(-6704,-5492),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7571C82v9Ev,
};
extern void _ZN7S7571C92v6Ev();
extern void _ZN7S7571C92v7Ev();
extern void _ZN7S7571C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C97S7571C8__7S7571C7__7S7571C1[] = {
  ABISELECT(-7000,-5736),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7571C92v8Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C37S7571C8__7S7571C7__7S7571C1[] = {
  ABISELECT(-7464,-6136),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__A1__7S7571C7__7S7571C1[] = {
  0,
  ABISELECT(784,640),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7571C2__7S7571C7__7S7571C1[] = {
  ABISELECT(-11608,-9528),
  ABISELECT(-10824,-8888),
  (VTBL_ENTRY)&(_ZTI7S7571C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7571C2__A1__7S7571C1[] = {
  ABISELECT(-11608,-9528),
  0,
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
};
extern void _ZN7S7571C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7571C3__7S7571C2__A1__7S7571C1[] = {
  0,
  ABISELECT(11608,9528),
  (VTBL_ENTRY)&(_ZTI7S7571C2[0]),
  (VTBL_ENTRY)&_ZN7S7571C32v3Ev,
};
static  VTT_ENTRY vtt_S7571C1[] = {
  {&(_ZTV7S7571C1[8]),  8,72},
  {&(_tg__ZTV7S7571C2__A__7S7571C1[3]),  3,3},
  {&(_tg__ZTV7S7571C3__7S7571C2__A__7S7571C1[3]),  3,4},
  {&(_tg__ZTV7S7571C4__7S7571C1[8]),  8,10},
  {&(_tg__ZTV7S7571C5__7S7571C4__7S7571C1[5]),  5,9},
  {&(_tg__ZTV7S7571C3__7S7571C4__7S7571C1[3]),  3,4},
  {&(_tg__ZTV7S7571C7__7S7571C4__7S7571C1[7]),  7,9},
  {&(_tg__ZTV7S7571C6__A1__7S7571C4__7S7571C1[3]),  3,4},
  {&(_tg__ZTV7S7571C8__7S7571C4__7S7571C1[9]),  9,13},
  {&(_tg__ZTV7S7571C97S7571C8__7S7571C4__7S7571C1[2]),  2,5},
  {&(_tg__ZTV7S7571C37S7571C8__A1__7S7571C4__7S7571C1[2]),  2,3},
  {&(_tg__ZTV7S7571C2__7S7571C4__7S7571C1[3]),  3,3},
  {&(_ZTV7S7571C1[25]),  25,72},
  {&(_ZTV7S7571C1[20]),  20,72},
  {&(_ZTV7S7571C1[31]),  31,72},
  {&(_ZTV7S7571C1[42]),  42,72},
  {&(_ZTV7S7571C1[47]),  47,72},
  {&(_ZTV7S7571C1[57]),  57,72},
  {&(_ZTV7S7571C1[63]),  63,72},
  {&(_ZTV7S7571C1[68]),  68,72},
  {&(_ZTV7S7571C1[72]),  72,72},
  {&(_tg__ZTV7S7571C7__7S7571C1[6]),  6,8},
  {&(_tg__ZTV7S7571C6__7S7571C7__7S7571C1[3]),  3,4},
  {&(_tg__ZTV7S7571C8__7S7571C7__7S7571C1[9]),  9,13},
  {&(_tg__ZTV7S7571C97S7571C8__7S7571C7__7S7571C1[2]),  2,5},
  {&(_tg__ZTV7S7571C37S7571C8__7S7571C7__7S7571C1[2]),  2,3},
  {&(_tg__ZTV7S7571C3__A1__7S7571C7__7S7571C1[3]),  3,4},
  {&(_tg__ZTV7S7571C2__7S7571C7__7S7571C1[3]),  3,3},
  {&(_tg__ZTV7S7571C2__A1__7S7571C1[3]),  3,3},
  {&(_tg__ZTV7S7571C3__7S7571C2__A1__7S7571C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7571C1[];
extern  VTBL_ENTRY _ZTV7S7571C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7571C1[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D0Ev,_ZTv0_n16_N7S7571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D0Ev,_ZThn5492_N7S7571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C7D1Ev,_ZTv0_n16_N7S7571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7571C7D1Ev,_ZThn5492_N7S7571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C4D0Ev,_ZTv0_n28_N7S7571C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7571C4D0Ev,_ZThn840_N7S7571C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C4D1Ev,_ZTv0_n28_N7S7571C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7571C4D1Ev,_ZThn840_N7S7571C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C4D0Ev,_ZTv0_n16_N7S7571C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7571C4D0Ev,_ZThn6332_N7S7571C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7571C4D0Ev,_ZThn324_N7S7571C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C4D1Ev,_ZTv0_n16_N7S7571C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7571C4D1Ev,_ZThn6332_N7S7571C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7571C4D1Ev,_ZThn324_N7S7571C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C1D0Ev,_ZTv0_n28_N7S7571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7571C1D0Ev,_ZThn976_N7S7571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7571C1D1Ev,_ZTv0_n28_N7S7571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7571C1D1Ev,_ZThn976_N7S7571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C1D0Ev,_ZTv0_n16_N7S7571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7571C1D0Ev,_ZThn6468_N7S7571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7571C1D0Ev,_ZThn460_N7S7571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7571C1D1Ev,_ZTv0_n16_N7S7571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7571C1D1Ev,_ZThn6468_N7S7571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7571C1D1Ev,_ZThn460_N7S7571C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7571C1 = {  "S7571C1", // class name
  bases_S7571C1, 12,
  &(vtc_S7571C1[0]), // expected_vtbl_contents
  &(vtt_S7571C1[0]), // expected_vtt_contents
  ABISELECT(12192,10000), // object size
  NSPAIRA(_ZTI7S7571C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7571C1),72, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7571C1),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C5  : S2014C28 {
  ::S2014C28 s19017c5f0;
  virtual  ~S19017C5(); // _ZN8S19017C5D1Ev
  S19017C5(); // tgen
};
//SIG(-1 S19017C5) C1{ BC2{ m} vd FC2}


 S19017C5 ::~S19017C5(){ note_dtor("S19017C5", this);}
S19017C5 ::S19017C5(){ note_ctor("S19017C5", this);} // tgen

static void Test_S19017C5()
{
  extern Class_Descriptor cd_S19017C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19017C5, buf);
    S19017C5 *dp, &lv = *(dp=new (buf) S19017C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19017C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C5)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19017C5");
    check_field_offset(lv, s19017c5f0, ABISELECT(8,4), "S19017C5.s19017c5f0");
    test_class_info(&lv, &cd_S19017C5);
    dp->~S19017C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C5(Test_S19017C5, "S19017C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19017C5C1Ev();
extern void _ZN8S19017C5D1Ev();
Name_Map name_map_S19017C5[] = {
  NSPAIR(_ZN8S19017C5C1Ev),
  NSPAIR(_ZN8S19017C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19017C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19017C5[];
extern void _ZN8S19017C5D1Ev();
extern void _ZN8S19017C5D0Ev();
static  VTBL_ENTRY vtc_S19017C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C5[0]),
  (VTBL_ENTRY)&_ZN8S19017C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
Class_Descriptor cd_S19017C5 = {  "S19017C5", // class name
  bases_S19017C5, 1,
  &(vtc_S19017C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19017C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19017C5),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  S19017C3  : S2014C38 , S19017C5 , S2014C28 , S3222C8_nt {
  short s19017c3f0:16;
  __tsi64 s19017c3f1;
  ~S19017C3(); // tgen
  S19017C3(); // tgen
};
//SIG(-1 S19017C3) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 FL}


S19017C3 ::~S19017C3(){ note_dtor("S19017C3", this);} // tgen
S19017C3 ::S19017C3(){ note_ctor("S19017C3", this);} // tgen

static void Test_S19017C3()
{
  extern Class_Descriptor cd_S19017C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19017C3, buf);
    S19017C3 *dp, &lv = *(dp=new (buf) S19017C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19017C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C3)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19017C3");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*), 0, "S19017C3");
    check_base_class_offset(lv, (S19017C5*), 0, "S19017C3");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(9,5), "S19017C3");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19017C3");
    set_bf_and_test(lv, s19017c3f0, ABISELECT(16,12), 0, 16, 1, "S19017C3");
    set_bf_and_test(lv, s19017c3f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19017C3");
    check_field_offset(lv, s19017c3f1, ABISELECT(24,16), "S19017C3.s19017c3f1");
    test_class_info(&lv, &cd_S19017C3);
    dp->~S19017C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C3(Test_S19017C3, "S19017C3", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S19017C3C1Ev();
extern void _ZN8S19017C3D1Ev();
Name_Map name_map_S19017C3[] = {
  NSPAIR(_ZN8S19017C3C1Ev),
  NSPAIR(_ZN8S19017C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19017C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S19017C3[];
extern void _ZN8S19017C3D1Ev();
extern void _ZN8S19017C3D0Ev();
static  VTBL_ENTRY vtc_S19017C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C3[0]),
  (VTBL_ENTRY)&_ZN8S19017C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
Class_Descriptor cd_S19017C3 = {  "S19017C3", // class name
  bases_S19017C3, 5,
  &(vtc_S19017C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S19017C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19017C3),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  S19017C2  : S19017C3 , S19017C5 {
  int s19017c2f0;
  ~S19017C2(); // tgen
  S19017C2(); // tgen
};
//SIG(-1 S19017C2) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 FL} BC4 Fi}


S19017C2 ::~S19017C2(){ note_dtor("S19017C2", this);} // tgen
S19017C2 ::S19017C2(){ note_ctor("S19017C2", this);} // tgen

static void Test_S19017C2()
{
  extern Class_Descriptor cd_S19017C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S19017C2, buf);
    S19017C2 *dp, &lv = *(dp=new (buf) S19017C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S19017C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C2)");
    check_base_class_offset(lv, (S2014C38*)(S19017C3*), 0, "S19017C2");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C3*), 0, "S19017C2");
    check_base_class_offset(lv, (S19017C5*)(S19017C3*), 0, "S19017C2");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C3*), ABISELECT(9,5), "S19017C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C3*), ABISELECT(12,8), "S19017C2");
    check_base_class_offset(lv, (S19017C3*), 0, "S19017C2");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(32,24), "S19017C2");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*), ABISELECT(32,24), "S19017C2");
    check_field_offset(lv, s19017c2f0, ABISELECT(44,32), "S19017C2.s19017c2f0");
    test_class_info(&lv, &cd_S19017C2);
    dp->~S19017C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C2(Test_S19017C2, "S19017C2", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S19017C2C1Ev();
extern void _ZN8S19017C2D1Ev();
Name_Map name_map_S19017C2[] = {
  NSPAIR(_ZN8S19017C2C1Ev),
  NSPAIR(_ZN8S19017C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C3;
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
static Base_Class bases_S19017C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19017C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(32,24), //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 _ZTI8S19017C2[];
extern void _ZN8S19017C2D1Ev();
extern void _ZN8S19017C2D0Ev();
extern void ABISELECT(_ZThn32_N8S19017C2D1Ev,_ZThn24_N8S19017C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19017C2D0Ev,_ZThn24_N8S19017C2D0Ev)();
static  VTBL_ENTRY vtc_S19017C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C2[0]),
  (VTBL_ENTRY)&_ZN8S19017C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C2D0Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19017C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19017C2D1Ev,_ZThn24_N8S19017C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19017C2D0Ev,_ZThn24_N8S19017C2D0Ev),
};
extern VTBL_ENTRY _ZTI8S19017C2[];
extern  VTBL_ENTRY _ZTV8S19017C2[];
Class_Descriptor cd_S19017C2 = {  "S19017C2", // class name
  bases_S19017C2, 8,
  &(vtc_S19017C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S19017C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19017C2),8, //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  S19017C9  : virtual S2014C38 , virtual S19017C5 , virtual S3222C8_nt {
  void *s19017c9f0;
  ::S19762C18_nt s19017c9f1;
  virtual  ~S19017C9(); // _ZN8S19017C9D2Ev
  S19017C9(); // tgen
};
//SIG(-1 S19017C9) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19017C9 ::~S19017C9(){ note_dtor("S19017C9", this);}
S19017C9 ::S19017C9(){ note_ctor("S19017C9", this);} // tgen

static void Test_S19017C9()
{
  extern Class_Descriptor cd_S19017C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19017C9, buf);
    S19017C9 *dp, &lv = *(dp=new (buf) S19017C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19017C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C9)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19017C9");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(24,12), "S19017C9");
    check_base_class_offset(lv, (S19017C5*), ABISELECT(24,12), "S19017C9");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19017C9");
    check_field_offset(lv, s19017c9f0, ABISELECT(8,4), "S19017C9.s19017c9f0");
    check_field_offset(lv, s19017c9f1, ABISELECT(16,8), "S19017C9.s19017c9f1");
    test_class_info(&lv, &cd_S19017C9);
    dp->~S19017C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C9(Test_S19017C9, "S19017C9", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19017C9C1Ev();
extern void _ZN8S19017C9D2Ev();
Name_Map name_map_S19017C9[] = {
  NSPAIR(_ZN8S19017C9C1Ev),
  NSPAIR(_ZN8S19017C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19017C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19017C9[];
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C9[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19017C9[];
static  VTT_ENTRY vtt_S19017C9[] = {
  {&(_ZTV8S19017C9[5]),  5,12},
  {&(_ZTV8S19017C9[10]),  10,12},
};
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C9 = {  "S19017C9", // class name
  bases_S19017C9, 4,
  &(vtc_S19017C9[0]), // expected_vtbl_contents
  &(vtt_S19017C9[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19017C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19017C9),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19017C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C13  : virtual S19017C5 {
  __tsi64 s19017c13f0;
  ~S19017C13(); // tgen
  S19017C13(); // tgen
};
//SIG(-1 S19017C13) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19017C13 ::~S19017C13(){ note_dtor("S19017C13", this);} // tgen
S19017C13 ::S19017C13(){ note_ctor("S19017C13", this);} // tgen

static void Test_S19017C13()
{
  extern Class_Descriptor cd_S19017C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19017C13, buf);
    S19017C13 *dp, &lv = *(dp=new (buf) S19017C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19017C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C13)");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(16,12), "S19017C13");
    check_base_class_offset(lv, (S19017C5*), ABISELECT(16,12), "S19017C13");
    check_field_offset(lv, s19017c13f0, ABISELECT(8,4), "S19017C13.s19017c13f0");
    test_class_info(&lv, &cd_S19017C13);
    dp->~S19017C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C13(Test_S19017C13, "S19017C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19017C13C1Ev();
extern void _ZN9S19017C13D1Ev();
Name_Map name_map_S19017C13[] = {
  NSPAIR(_ZN9S19017C13C1Ev),
  NSPAIR(_ZN9S19017C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
static Base_Class bases_S19017C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
  0, 0},
  {&cd_S19017C5,    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 _ZTI9S19017C13[];
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19017C13D1Ev,_ZThn12_N9S19017C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19017C13D0Ev,_ZThn12_N9S19017C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C13[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C13[];
static  VTT_ENTRY vtt_S19017C13[] = {
  {&(_ZTV9S19017C13[3]),  3,10},
  {&(_ZTV9S19017C13[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C13D0Ev,_ZThn12_N9S19017C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C13D1Ev,_ZThn12_N9S19017C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C13 = {  "S19017C13", // class name
  bases_S19017C13, 2,
  &(vtc_S19017C13[0]), // expected_vtbl_contents
  &(vtt_S19017C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19017C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19017C13),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C12  : S19017C13 , virtual S2014C38 , virtual S3222C8_nt , virtual S19017C9 , virtual S19017C2 {
  long s19017c12f0;
  ::S19017C13 s19017c12f1;
  virtual  ~S19017C12(); // _ZN9S19017C12D2Ev
  S19017C12(); // tgen
};
//SIG(-1 S19017C12) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 FL} BC3 Fi} vd Fl FC2}


 S19017C12 ::~S19017C12(){ note_dtor("S19017C12", this);}
S19017C12 ::S19017C12(){ note_ctor("S19017C12", this);} // tgen

static void Test_S19017C12()
{
  extern Class_Descriptor cd_S19017C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19017C12, buf);
    S19017C12 *dp, &lv = *(dp=new (buf) S19017C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19017C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C12)");
    /*is_ambiguous_... S19017C12::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(56,36), "S19017C12");
    check_base_class_offset(lv, (S19017C5*)(S19017C13*), ABISELECT(56,36), "S19017C12");
    check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(56,36), "S19017C12");
    check_base_class_offset(lv, (S19017C13*), 0, "S19017C12");
    /*is_ambiguous_... S19017C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), 0, "S19017C12");
    check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C12");
    /*is_ambiguous_... S19017C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19017C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(68,44), "S19017C12");
    check_base_class_offset(lv, (S19017C9*), ABISELECT(72,48), "S19017C12");
    check_base_class_offset(lv, (S2014C38*)(S19017C3*)(S19017C2*), ABISELECT(96,60), "S19017C12");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(96,60), "S19017C12");
    check_base_class_offset(lv, (S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(96,60), "S19017C12");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C3*)(S19017C2*), ABISELECT(105,65), "S19017C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C3*)(S19017C2*), ABISELECT(108,68), "S19017C12");
    check_base_class_offset(lv, (S19017C3*)(S19017C2*), ABISELECT(96,60), "S19017C12");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C2*), ABISELECT(128,84), "S19017C12");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C2*), ABISELECT(128,84), "S19017C12");
    check_base_class_offset(lv, (S19017C2*), ABISELECT(96,60), "S19017C12");
    check_field_offset(lv, s19017c12f0, ABISELECT(16,12), "S19017C12.s19017c12f0");
    check_field_offset(lv, s19017c12f1, ABISELECT(24,16), "S19017C12.s19017c12f1");
    test_class_info(&lv, &cd_S19017C12);
    dp->~S19017C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C12(Test_S19017C12, "S19017C12", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN9S19017C12C1Ev();
extern void _ZN9S19017C12D2Ev();
Name_Map name_map_S19017C12[] = {
  NSPAIR(_ZN9S19017C12C1Ev),
  NSPAIR(_ZN9S19017C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C3;
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C2;
extern VTBL_ENTRY _ZTI8S19017C2[];
extern  VTBL_ENTRY _ZTV8S19017C2[];
static Base_Class bases_S19017C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S19017C13,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19017C9,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19017C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19017C3,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(128,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_S19017C5,    ABISELECT(128,84), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19017C2,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19017C12[];
extern void _ZN9S19017C12D1Ev();
extern void _ZN9S19017C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19017C12D1Ev,_ZThn60_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19017C12D0Ev,_ZThn60_N9S19017C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY vtc_S19017C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&_ZN9S19017C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C12D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C12[];
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C13__9S19017C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C13D1Ev,_ZThn36_N9S19017C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C13D0Ev,_ZThn36_N9S19017C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C13__9S19017C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__9S19017C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
static  VTT_ENTRY vtt_S19017C12[] = {
  {&(_ZTV9S19017C12[7]),  7,31},
  {&(_tg__ZTV9S19017C13__9S19017C12[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C13__9S19017C12[3]),  3,5},
  {&(_ZTV9S19017C12[12]),  12,31},
  {&(_ZTV9S19017C12[20]),  20,31},
  {&(_ZTV9S19017C12[25]),  25,31},
  {&(_ZTV9S19017C12[29]),  29,31},
  {&(_tg__ZTV8S19017C9__9S19017C12[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__9S19017C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C12[];
extern  VTBL_ENTRY _ZTV9S19017C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C12[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C13D0Ev,_ZThn36_N9S19017C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C13D1Ev,_ZThn36_N9S19017C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C12D0Ev,_ZThn60_N9S19017C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C12D1Ev,_ZThn60_N9S19017C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C12 = {  "S19017C12", // class name
  bases_S19017C12, 15,
  &(vtc_S19017C12[0]), // expected_vtbl_contents
  &(vtt_S19017C12[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI9S19017C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19017C12),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C15  : S2014C28 , S19017C5 , virtual S2014C38 , virtual S19017C9 {
  virtual  ~S19017C15(); // _ZN9S19017C15D2Ev
  S19017C15(); // tgen
};
//SIG(-1 S19017C15) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19017C15 ::~S19017C15(){ note_dtor("S19017C15", this);}
S19017C15 ::S19017C15(){ note_ctor("S19017C15", this);} // tgen

static void Test_S19017C15()
{
  extern Class_Descriptor cd_S19017C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19017C15, buf);
    S19017C15 *dp, &lv = *(dp=new (buf) S19017C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19017C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C15)");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(9,5), "S19017C15");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), 0, "S19017C15");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*), 0, "S19017C15");
    check_base_class_offset(lv, (S2014C38*), 0, "S19017C15");
    check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C15");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(40,20), "S19017C15");
    check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(40,20), "S19017C15");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(52,28), "S19017C15");
    check_base_class_offset(lv, (S19017C9*), ABISELECT(16,8), "S19017C15");
    test_class_info(&lv, &cd_S19017C15);
    dp->~S19017C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C15(Test_S19017C15, "S19017C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19017C15C1Ev();
extern void _ZN9S19017C15D2Ev();
Name_Map name_map_S19017C15[] = {
  NSPAIR(_ZN9S19017C15C1Ev),
  NSPAIR(_ZN9S19017C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
static Base_Class bases_S19017C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19017C9,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19017C15[];
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S19017C15D1Ev,_ZThn8_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S19017C15D0Ev,_ZThn8_N9S19017C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C15D1Ev,_ZThn20_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19017C15D0Ev,_ZThn20_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C15[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C15[];
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C15[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__9S19017C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
static  VTT_ENTRY vtt_S19017C15[] = {
  {&(_ZTV9S19017C15[6]),  6,21},
  {&(_ZTV9S19017C15[14]),  14,21},
  {&(_ZTV9S19017C15[19]),  19,21},
  {&(_tg__ZTV8S19017C9__9S19017C15[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__9S19017C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C15D0Ev,_ZThn20_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C15D1Ev,_ZThn20_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C15D0Ev,_ZThn8_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C15D1Ev,_ZThn8_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C15 = {  "S19017C15", // class name
  bases_S19017C15, 8,
  &(vtc_S19017C15[0]), // expected_vtbl_contents
  &(vtt_S19017C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19017C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19017C15),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C14  : virtual S19017C9 , S19017C15 , virtual S2014C28 {
  ::S3222C8_nt s19017c14f0[6];
  virtual  ~S19017C14(); // _ZN9S19017C14D2Ev
  S19017C14(); // tgen
};
//SIG(-1 S19017C14) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19017C14 ::~S19017C14(){ note_dtor("S19017C14", this);}
S19017C14 ::S19017C14(){ note_ctor("S19017C14", this);} // tgen

static void Test_S19017C14()
{
  extern Class_Descriptor cd_S19017C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19017C14, buf);
    S19017C14 *dp, &lv = *(dp=new (buf) S19017C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19017C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C14)");
    check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C14");
    check_base_class_offset(lv, (S2014C38*)(S19017C15*), 0, "S19017C14");
    /*is_ambiguous_... S19017C14::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(64,44), "S19017C14");
    check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(64,44), "S19017C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(76,52), "S19017C14");
    check_base_class_offset(lv, (S19017C9*), ABISELECT(40,32), "S19017C14");
    check_base_class_offset(lv, (S19017C9*)(S19017C15*), ABISELECT(40,32), "S19017C14");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*), ABISELECT(9,5), "S19017C14");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*), 0, "S19017C14");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*), 0, "S19017C14");
    check_base_class_offset(lv, (S19017C15*), 0, "S19017C14");
    /*is_ambiguous_... S19017C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(80,56), "S19017C14");
    check_field_offset(lv, s19017c14f0, ABISELECT(12,8), "S19017C14.s19017c14f0");
    test_class_info(&lv, &cd_S19017C14);
    dp->~S19017C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C14(Test_S19017C14, "S19017C14", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19017C14C1Ev();
extern void _ZN9S19017C14D2Ev();
Name_Map name_map_S19017C14[] = {
  NSPAIR(_ZN9S19017C14C1Ev),
  NSPAIR(_ZN9S19017C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19017C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19017C9,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C28,    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, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19017C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19017C14[];
extern void _ZN9S19017C14D1Ev();
extern void _ZN9S19017C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C14D1Ev,_ZThn32_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn40_N9S19017C14D0Ev,_ZThn32_N9S19017C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19017C14D1Ev,_ZThn44_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19017C14D0Ev,_ZThn44_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C14[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&_ZN9S19017C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C14D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C14[];
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C15__9S19017C14[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C15D1Ev,_ZThn32_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19017C15D0Ev,_ZThn32_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C15__9S19017C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S19017C15D1Ev,_ZThn44_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S19017C15D0Ev,_ZThn44_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C15__9S19017C14[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__9S19017C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
static  VTT_ENTRY vtt_S19017C14[] = {
  {&(_ZTV9S19017C14[7]),  7,22},
  {&(_tg__ZTV9S19017C15__9S19017C14[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C15__9S19017C14[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C15__9S19017C14[3]),  3,5},
  {&(_ZTV9S19017C14[15]),  15,22},
  {&(_ZTV9S19017C14[20]),  20,22},
  {&(_tg__ZTV8S19017C9__9S19017C14[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__9S19017C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C14[];
extern  VTBL_ENTRY _ZTV9S19017C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C14[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C15D0Ev,_ZThn44_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C15D1Ev,_ZThn44_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C15D0Ev,_ZThn32_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C15D1Ev,_ZThn32_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C14D0Ev,_ZThn44_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C14D1Ev,_ZThn44_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C14D0Ev,_ZThn32_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19017C14D1Ev,_ZThn32_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C14 = {  "S19017C14", // class name
  bases_S19017C14, 10,
  &(vtc_S19017C14[0]), // expected_vtbl_contents
  &(vtt_S19017C14[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19017C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19017C14),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C14),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C16  : virtual S19017C13 , virtual S3222C8_nt {
  unsigned char s19017c16f0:1;
  ~S19017C16(); // tgen
  S19017C16(); // tgen
};
//SIG(-1 S19017C16) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S19017C16 ::~S19017C16(){ note_dtor("S19017C16", this);} // tgen
S19017C16 ::S19017C16(){ note_ctor("S19017C16", this);} // tgen

static void Test_S19017C16()
{
  extern Class_Descriptor cd_S19017C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19017C16, buf);
    S19017C16 *dp, &lv = *(dp=new (buf) S19017C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19017C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C16)");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(32,20), "S19017C16");
    check_base_class_offset(lv, (S19017C5*)(S19017C13*), ABISELECT(32,20), "S19017C16");
    check_base_class_offset(lv, (S19017C13*), ABISELECT(16,8), "S19017C16");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S19017C16");
    set_bf_and_test(lv, s19017c16f0, ABISELECT(8,4), 0, 1, 1, "S19017C16");
    test_class_info(&lv, &cd_S19017C16);
    dp->~S19017C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C16(Test_S19017C16, "S19017C16", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19017C16C1Ev();
extern void _ZN9S19017C16D1Ev();
Name_Map name_map_S19017C16[] = {
  NSPAIR(_ZN9S19017C16C1Ev),
  NSPAIR(_ZN9S19017C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19017C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(32,20), //bcp->offset
    13, //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_S19017C13,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19017C16[];
extern void _ZN9S19017C16D1Ev();
extern void _ZN9S19017C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19017C16D1Ev,_ZThn8_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S19017C16D0Ev,_ZThn8_N9S19017C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19017C16D1Ev,_ZThn20_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19017C16D0Ev,_ZThn20_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C16[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&_ZN9S19017C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C16[];
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C13__9S19017C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19017C13D1Ev,_ZThn12_N9S19017C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19017C13D0Ev,_ZThn12_N9S19017C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C13__9S19017C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
static  VTT_ENTRY vtt_S19017C16[] = {
  {&(_ZTV9S19017C16[5]),  5,18},
  {&(_ZTV9S19017C16[11]),  11,18},
  {&(_ZTV9S19017C16[16]),  16,18},
  {&(_tg__ZTV9S19017C13__9S19017C16[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C13__9S19017C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C16[];
extern  VTBL_ENTRY _ZTV9S19017C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C16[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C13D0Ev,_ZThn12_N9S19017C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C13D1Ev,_ZThn12_N9S19017C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19017C16D0Ev,_ZThn20_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19017C16D1Ev,_ZThn20_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C16D0Ev,_ZThn8_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19017C16D1Ev,_ZThn8_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C16 = {  "S19017C16", // class name
  bases_S19017C16, 4,
  &(vtc_S19017C16[0]), // expected_vtbl_contents
  &(vtt_S19017C16[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19017C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19017C16),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C16),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C11  : virtual S19017C12 , S19017C14 , S19017C16 , S19017C9 {
  ~S19017C11(); // tgen
  S19017C11(); // tgen
};
//SIG(-1 S19017C11) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 FL} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S19017C11 ::~S19017C11(){ note_dtor("S19017C11", this);} // tgen
S19017C11 ::S19017C11(){ note_ctor("S19017C11", this);} // tgen

static void Test_S19017C11()
{
  extern Class_Descriptor cd_S19017C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S19017C11, buf);
    S19017C11 *dp, &lv = *(dp=new (buf) S19017C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S19017C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C11)");
    /*is_ambiguous_... S19017C11::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(136,88), "S19017C11");
    check_base_class_offset(lv, (S19017C5*)(S19017C13*)(S19017C12*), ABISELECT(136,88), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(136,88), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C13 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C13*), ABISELECT(136,88), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(136,88), "S19017C11");
    check_base_class_offset(lv, (S19017C13*)(S19017C12*), ABISELECT(80,52), "S19017C11");
    /*is_ambiguous_... S19017C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C12*), 0, "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C11");
    check_base_class_offset(lv, (S2014C38*)(S19017C15*)(S19017C14*), 0, "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C11");
    /*is_ambiguous_... S19017C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C12*), ABISELECT(148,96), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(148,96), "S19017C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C16*), ABISELECT(148,96), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(148,96), "S19017C11");
    check_base_class_offset(lv, (S19017C9*)(S19017C12*), ABISELECT(152,100), "S19017C11");
    check_base_class_offset(lv, (S19017C9*)(S19017C14*), ABISELECT(152,100), "S19017C11");
    check_base_class_offset(lv, (S19017C9*)(S19017C15*)(S19017C14*), ABISELECT(152,100), "S19017C11");
    check_base_class_offset(lv, (S2014C38*)(S19017C3*)(S19017C2*), ABISELECT(176,112), "S19017C11");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(176,112), "S19017C11");
    check_base_class_offset(lv, (S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(176,112), "S19017C11");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C3*)(S19017C2*), ABISELECT(185,117), "S19017C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C3*)(S19017C2*), ABISELECT(188,120), "S19017C11");
    check_base_class_offset(lv, (S19017C3*)(S19017C2*), ABISELECT(176,112), "S19017C11");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C2*), ABISELECT(208,136), "S19017C11");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C2*), ABISELECT(208,136), "S19017C11");
    check_base_class_offset(lv, (S19017C2*)(S19017C12*), ABISELECT(176,112), "S19017C11");
    check_base_class_offset(lv, (S19017C12*), ABISELECT(80,52), "S19017C11");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*)(S19017C14*), ABISELECT(9,5), "S19017C11");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*)(S19017C14*), 0, "S19017C11");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*)(S19017C14*), 0, "S19017C11");
    check_base_class_offset(lv, (S19017C15*)(S19017C14*), 0, "S19017C11");
    /*is_ambiguous_... S19017C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C14*), ABISELECT(224,148), "S19017C11");
    check_base_class_offset(lv, (S19017C14*), 0, "S19017C11");
    check_base_class_offset(lv, (S19017C13*)(S19017C16*), ABISELECT(224,148), "S19017C11");
    check_base_class_offset(lv, (S19017C16*), ABISELECT(40,32), "S19017C11");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C9*), ABISELECT(56,40), "S19017C11");
    test_class_info(&lv, &cd_S19017C11);
    dp->~S19017C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C11(Test_S19017C11, "S19017C11", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN9S19017C11C1Ev();
extern void _ZN9S19017C11D1Ev();
Name_Map name_map_S19017C11[] = {
  NSPAIR(_ZN9S19017C11C1Ev),
  NSPAIR(_ZN9S19017C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C3;
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C2;
extern VTBL_ENTRY _ZTI8S19017C2[];
extern  VTBL_ENTRY _ZTV8S19017C2[];
extern Class_Descriptor cd_S19017C12;
extern VTBL_ENTRY _ZTI9S19017C12[];
extern  VTBL_ENTRY _ZTV9S19017C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C14;
extern VTBL_ENTRY _ZTI9S19017C14[];
extern  VTBL_ENTRY _ZTV9S19017C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C14[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S19017C16;
extern VTBL_ENTRY _ZTI9S19017C16[];
extern  VTBL_ENTRY _ZTV9S19017C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C16[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
static Base_Class bases_S19017C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19017C13,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S19017C9,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S19017C3,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    ABISELECT(208,136), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19017C2,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19017C12,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C28,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19017C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S19017C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19017C13,    ABISELECT(224,148), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19017C16,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19017C9,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19017C11[];
extern void _ZN9S19017C11D1Ev();
extern void _ZN9S19017C11D0Ev();
extern void ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19017C11D1Ev,_ZThn52_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19017C11D0Ev,_ZThn52_N9S19017C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19017C11D1Ev,_ZThn88_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19017C11D0Ev,_ZThn88_N9S19017C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19017C11D1Ev,_ZThn100_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19017C11D0Ev,_ZThn100_N9S19017C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S19017C11D1Ev,_ZThn112_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S19017C11D0Ev,_ZThn112_N9S19017C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S19017C11D1Ev,_ZThn148_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S19017C11D0Ev,_ZThn148_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C11[] = {
  ABISELECT(224,148),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&_ZN9S19017C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C11D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-88,-60),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C11[];
extern void _ZN9S19017C14D1Ev();
extern void _ZN9S19017C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C14__9S19017C11[] = {
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&_ZN9S19017C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C14D0Ev,
};
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C159S19017C14__9S19017C11[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S19017C15D1Ev,_ZThn100_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S19017C15D0Ev,_ZThn100_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C159S19017C14__9S19017C11[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19017C15D1Ev,_ZThn88_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19017C15D0Ev,_ZThn88_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C159S19017C14__9S19017C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19017C14D1Ev,_ZThn100_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19017C14D0Ev,_ZThn100_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C14__9S19017C11[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19017C14D1Ev,_ZThn88_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19017C14D0Ev,_ZThn88_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C14__9S19017C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev),
};
extern void _ZN9S19017C16D1Ev();
extern void _ZN9S19017C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C16__9S19017C11[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&_ZN9S19017C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S19017C16D1Ev,_ZThn116_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S19017C16D0Ev,_ZThn116_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__9S19017C16__9S19017C11[] = {
  ABISELECT(-184,-116),
  ABISELECT(-88,-60),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19017C16D1Ev,_ZThn56_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19017C16D0Ev,_ZThn56_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C16__9S19017C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A__9S19017C11[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19017C9D1Ev,_ZThn48_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19017C9D0Ev,_ZThn48_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__A__9S19017C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C12D1Ev();
extern void _ZN9S19017C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C12__9S19017C11[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&_ZN9S19017C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C12D0Ev,
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C139S19017C12__9S19017C11[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C13D1Ev,_ZThn36_N9S19017C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C13D0Ev,_ZThn36_N9S19017C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C139S19017C12__9S19017C11[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C12__9S19017C11[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C12__9S19017C11[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19017C12D1Ev,_ZThn60_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19017C12D0Ev,_ZThn60_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C2__9S19017C12__9S19017C11[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__9S19017C12__9S19017C11[] = {
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C11[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__9S19017C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__9S19017C11[] = {
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C13__A1__9S19017C11[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
static  VTT_ENTRY vtt_S19017C11[] = {
  {&(_ZTV9S19017C11[10]),  10,64},
  {&(_tg__ZTV9S19017C14__9S19017C11[7]),  7,9},
  {&(_tg__ZTV9S19017C159S19017C14__9S19017C11[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C159S19017C14__9S19017C11[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C159S19017C14__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C14__9S19017C11[6]),  6,8},
  {&(_tg__ZTV8S19017C5__9S19017C14__9S19017C11[3]),  3,5},
  {&(_tg__ZTV9S19017C16__9S19017C11[5]),  5,7},
  {&(_tg__ZTV9S19017C13__9S19017C16__9S19017C11[4]),  4,6},
  {&(_tg__ZTV8S19017C5__9S19017C16__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C9__A__9S19017C11[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__A__9S19017C11[3]),  3,5},
  {&(_ZTV9S19017C11[34]),  34,64},
  {&(_ZTV9S19017C11[39]),  39,64},
  {&(_ZTV9S19017C11[47]),  47,64},
  {&(_ZTV9S19017C11[52]),  52,64},
  {&(_ZTV9S19017C11[56]),  56,64},
  {&(_ZTV9S19017C11[17]),  17,64},
  {&(_ZTV9S19017C11[62]),  62,64},
  {&(_ZTV9S19017C11[24]),  24,64},
  {&(_tg__ZTV9S19017C12__9S19017C11[7]),  7,9},
  {&(_tg__ZTV9S19017C139S19017C12__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C139S19017C12__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C12__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C12__9S19017C11[6]),  6,8},
  {&(_tg__ZTV8S19017C2__9S19017C12__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__9S19017C12__9S19017C11[2]),  2,4},
  {&(_tg__ZTV8S19017C9__9S19017C11[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__9S19017C11[3]),  3,5},
  {&(_tg__ZTV9S19017C13__A1__9S19017C11[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C13__A1__9S19017C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C11[];
extern  VTBL_ENTRY _ZTV9S19017C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C11[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C12D0Ev,_ZThn60_N9S19017C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C12D1Ev,_ZThn60_N9S19017C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C13D0Ev,_ZThn36_N9S19017C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C13D1Ev,_ZThn36_N9S19017C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19017C9D0Ev,_ZThn48_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19017C9D1Ev,_ZThn48_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C16D0Ev,_ZThn56_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19017C16D1Ev,_ZThn56_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C16D0Ev,_ZThn116_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C16D1Ev,_ZThn116_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C14D0Ev,_ZThn88_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C14D1Ev,_ZThn88_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C14D0Ev,_ZThn100_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C14D1Ev,_ZThn100_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C15D0Ev,_ZThn88_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C15D1Ev,_ZThn88_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C15D0Ev,_ZThn100_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C15D1Ev,_ZThn100_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19017C11D0Ev,_ZThn148_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19017C11D1Ev,_ZThn148_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C11D0Ev,_ZThn100_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19017C11D1Ev,_ZThn100_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19017C11D0Ev,_ZThn112_N9S19017C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C11D0Ev,_ZThn88_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19017C11D1Ev,_ZThn112_N9S19017C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19017C11D1Ev,_ZThn88_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19017C11D0Ev,_ZThn52_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19017C11D1Ev,_ZThn52_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C11 = {  "S19017C11", // class name
  bases_S19017C11, 25,
  &(vtc_S19017C11[0]), // expected_vtbl_contents
  &(vtt_S19017C11[0]), // expected_vtt_contents
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI9S19017C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19017C11),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C11),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C8  : S19017C9 , S19017C11 {
  __tsi64 s19017c8f0;
  ~S19017C8(); // tgen
  S19017C8(); // tgen
};
//SIG(-1 S19017C8) C1{ BC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ VBC9{ BC10{ VBC4 FL} VBC3 VBC6 VBC2 VBC11{ BC12{ BC3 BC4 BC5 BC6 Fs:16 FL} BC4 Fi} vd Fl FC10} BC13{ VBC2 BC14{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]} BC15{ VBC10 VBC6 Fc:1} BC2} FL}


S19017C8 ::~S19017C8(){ note_dtor("S19017C8", this);} // tgen
S19017C8 ::S19017C8(){ note_ctor("S19017C8", this);} // tgen

static void Test_S19017C8()
{
  extern Class_Descriptor cd_S19017C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,46)];
    init_test(&cd_S19017C8, buf);
    S19017C8 *dp, &lv = *(dp=new (buf) S19017C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,180), "sizeof(S19017C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C8)");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C8");
    /*is_ambiguous_... S19017C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C12*), 0, "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C8");
    check_base_class_offset(lv, (S2014C38*)(S19017C15*)(S19017C14*)(S19017C11*), 0, "S19017C8");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*)(S19017C11*), 0, "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(112,72), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(112,72), "S19017C8");
    check_base_class_offset(lv, (S19017C5*)(S19017C13*)(S19017C12*), ABISELECT(112,72), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(112,72), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C13 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C13*), ABISELECT(112,72), "S19017C8");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*)(S19017C11*), ABISELECT(112,72), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(124,80), "S19017C8");
    /*is_ambiguous_... S19017C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C12*), ABISELECT(124,80), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(124,80), "S19017C8");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C16*)(S19017C11*), ABISELECT(124,80), "S19017C8");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*)(S19017C11*), ABISELECT(124,80), "S19017C8");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C9*), 0, "S19017C8");
    check_base_class_offset(lv, (S19017C13*)(S19017C12*), ABISELECT(128,84), "S19017C8");
    check_base_class_offset(lv, (S19017C9*)(S19017C12*), ABISELECT(184,120), "S19017C8");
    check_base_class_offset(lv, (S19017C9*)(S19017C14*)(S19017C11*), ABISELECT(184,120), "S19017C8");
    check_base_class_offset(lv, (S19017C9*)(S19017C15*)(S19017C14*)(S19017C11*), ABISELECT(184,120), "S19017C8");
    check_base_class_offset(lv, (S2014C38*)(S19017C3*)(S19017C2*), ABISELECT(208,132), "S19017C8");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(208,132), "S19017C8");
    check_base_class_offset(lv, (S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(208,132), "S19017C8");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C3*)(S19017C2*), ABISELECT(217,137), "S19017C8");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C3*)(S19017C2*), ABISELECT(220,140), "S19017C8");
    check_base_class_offset(lv, (S19017C3*)(S19017C2*), ABISELECT(208,132), "S19017C8");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C2*), ABISELECT(240,156), "S19017C8");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C2*), ABISELECT(240,156), "S19017C8");
    check_base_class_offset(lv, (S19017C2*)(S19017C12*), ABISELECT(208,132), "S19017C8");
    check_base_class_offset(lv, (S19017C12*)(S19017C11*), ABISELECT(128,84), "S19017C8");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*)(S19017C14*)(S19017C11*), ABISELECT(33,17), "S19017C8");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*)(S19017C14*)(S19017C11*), ABISELECT(24,12), "S19017C8");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*)(S19017C14*)(S19017C11*), ABISELECT(24,12), "S19017C8");
    check_base_class_offset(lv, (S19017C15*)(S19017C14*)(S19017C11*), ABISELECT(24,12), "S19017C8");
    /*is_ambiguous_... S19017C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C14*)(S19017C11*), 0, "S19017C8");
    check_base_class_offset(lv, (S19017C14*)(S19017C11*), ABISELECT(24,12), "S19017C8");
    check_base_class_offset(lv, (S19017C13*)(S19017C16*)(S19017C11*), ABISELECT(256,168), "S19017C8");
    check_base_class_offset(lv, (S19017C16*)(S19017C11*), ABISELECT(64,44), "S19017C8");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C9*)(S19017C11*), ABISELECT(80,52), "S19017C8");
    check_base_class_offset(lv, (S19017C11*), ABISELECT(24,12), "S19017C8");
    check_field_offset(lv, s19017c8f0, ABISELECT(104,64), "S19017C8.s19017c8f0");
    test_class_info(&lv, &cd_S19017C8);
    dp->~S19017C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C8(Test_S19017C8, "S19017C8", ABISELECT(272,180));

#else // __cplusplus

extern void _ZN8S19017C8C1Ev();
extern void _ZN8S19017C8D1Ev();
Name_Map name_map_S19017C8[] = {
  NSPAIR(_ZN8S19017C8C1Ev),
  NSPAIR(_ZN8S19017C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C3;
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C2;
extern VTBL_ENTRY _ZTI8S19017C2[];
extern  VTBL_ENTRY _ZTV8S19017C2[];
extern Class_Descriptor cd_S19017C12;
extern VTBL_ENTRY _ZTI9S19017C12[];
extern  VTBL_ENTRY _ZTV9S19017C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C14;
extern VTBL_ENTRY _ZTI9S19017C14[];
extern  VTBL_ENTRY _ZTV9S19017C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C14[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S19017C16;
extern VTBL_ENTRY _ZTI9S19017C16[];
extern  VTBL_ENTRY _ZTV9S19017C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C16[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S19017C11;
extern VTBL_ENTRY _ZTI9S19017C11[];
extern  VTBL_ENTRY _ZTV9S19017C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C11[];
static Base_Class bases_S19017C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(112,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
    2, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(112,72), //bcp->offset
    38, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(124,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
    4, //immediately_derived
  0, 1},
  {&cd_S19017C9,    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_S19017C13,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19017C9,    ABISELECT(184,120), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C5,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(217,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(220,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
    12, //immediately_derived
  0, 0},
  {&cd_S19017C3,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(240,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
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(240,156), //bcp->offset
    66, //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19017C2,    ABISELECT(208,132), //bcp->offset
    61, //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
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19017C12,    ABISELECT(128,84), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(33,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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19017C5,    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
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19017C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C14,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C13,    ABISELECT(256,168), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19017C16,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C9,    ABISELECT(80,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C11,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19017C8[];
extern void _ZN8S19017C8D1Ev();
extern void _ZN8S19017C8D0Ev();
extern void ABISELECT(_ZThn24_N8S19017C8D1Ev,_ZThn12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C8D0Ev,_ZThn12_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19017C8D1Ev,_ZThn44_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19017C8D0Ev,_ZThn44_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19017C8D1Ev,_ZThn52_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19017C8D0Ev,_ZThn52_N8S19017C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19017C8D1Ev,_ZThn72_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19017C8D0Ev,_ZThn72_N8S19017C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19017C8D1Ev,_ZThn84_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19017C8D0Ev,_ZThn84_N8S19017C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S19017C8D1Ev,_ZThn120_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S19017C8D0Ev,_ZThn120_N8S19017C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn208_N8S19017C8D1Ev,_ZThn132_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn208_N8S19017C8D0Ev,_ZThn132_N8S19017C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19017C8D1Ev,_ZTvn24_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19017C8D0Ev,_ZTvn24_n12_N8S19017C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19017C8D1Ev,_ZThn168_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19017C8D0Ev,_ZThn168_N8S19017C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C8[] = {
  ABISELECT(256,168),
  0,
  ABISELECT(208,132),
  ABISELECT(184,120),
  ABISELECT(128,84),
  ABISELECT(124,80),
  ABISELECT(112,72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&_ZN8S19017C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C8D0Ev,
  ABISELECT(232,156),
  ABISELECT(184,120),
  ABISELECT(104,72),
  ABISELECT(-24,-12),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19017C8D1Ev,_ZThn12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19017C8D0Ev,_ZThn12_N8S19017C8D0Ev),
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(192,124),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19017C8D1Ev,_ZThn44_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19017C8D0Ev,_ZThn44_N8S19017C8D0Ev),
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19017C8D1Ev,_ZThn52_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19017C8D0Ev,_ZThn52_N8S19017C8D0Ev),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(80,48),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-128,-84),
  ABISELECT(-16,-12),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev),
  ABISELECT(-184,-120),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev),
  ABISELECT(-208,-132),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C8D1Ev,_ZTvn24_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C8D0Ev,_ZTvn24_n12_N8S19017C8D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-144,-96),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19017C8[];
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A__8S19017C8[] = {
  ABISELECT(124,80),
  ABISELECT(112,72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19017C9D1Ev,_ZThn72_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S19017C9D0Ev,_ZThn72_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__A__8S19017C8[] = {
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C11D1Ev();
extern void _ZN9S19017C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C11__8S19017C8[] = {
  ABISELECT(232,156),
  ABISELECT(184,120),
  ABISELECT(104,72),
  ABISELECT(-24,-12),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&_ZN9S19017C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C11D0Ev,
};
extern void _ZN9S19017C14D1Ev();
extern void _ZN9S19017C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(-24,-12),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&_ZN9S19017C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C14D0Ev,
};
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C159S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C15D1Ev,_ZThn108_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C15D0Ev,_ZThn108_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C159S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C15D1Ev,_ZThn60_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C15D0Ev,_ZThn60_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C159S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C14D1Ev,_ZThn108_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C14D0Ev,_ZThn108_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C14D1Ev,_ZThn60_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C14D0Ev,_ZThn60_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C149S19017C11__8S19017C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev),
};
extern void _ZN9S19017C16D1Ev();
extern void _ZN9S19017C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C169S19017C11__8S19017C8[] = {
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&_ZN9S19017C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S19017C16D1Ev,_ZThn124_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S19017C16D0Ev,_ZThn124_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__9S19017C169S19017C11__8S19017C8[] = {
  ABISELECT(-192,-124),
  ABISELECT(-144,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19017C16D1Ev,_ZThn28_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19017C16D0Ev,_ZThn28_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C169S19017C11__8S19017C8[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C99S19017C11__A2__8S19017C8[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19017C9D1Ev,_ZThn20_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19017C9D0Ev,_ZThn20_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C99S19017C11__A2__8S19017C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19017C11D1Ev,_ZThn72_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19017C11D0Ev,_ZThn72_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C12__9S19017C11__8S19017C8[] = {
  ABISELECT(-104,-72),
  ABISELECT(80,48),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-128,-84),
  ABISELECT(-16,-12),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C11D1Ev,_ZThn60_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C11D0Ev,_ZThn60_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C11__8S19017C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C11D1Ev,_ZThn108_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C11D0Ev,_ZThn108_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C11__8S19017C8[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S19017C11D1Ev,_ZThn120_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S19017C11D0Ev,_ZThn120_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C2__9S19017C11__8S19017C8[] = {
  ABISELECT(-184,-120),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__9S19017C11__8S19017C8[] = {
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19017C16__9S19017C11__8S19017C8[] = {
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(192,124),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn232_N9S19017C11D1Ev,_ZThn156_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn232_N9S19017C11D0Ev,_ZThn156_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__9S19017C11__8S19017C8[] = {
  ABISELECT(-232,-156),
  ABISELECT(-144,-96),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A__9S19017C11__8S19017C8[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-80,-52),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev),
};
extern void _ZN9S19017C12D1Ev();
extern void _ZN9S19017C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C12__8S19017C8[] = {
  ABISELECT(80,48),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-128,-84),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&_ZN9S19017C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C12D0Ev,
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C139S19017C12__8S19017C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C139S19017C12__8S19017C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C12__8S19017C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C12__8S19017C8[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C2__9S19017C12__8S19017C8[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__9S19017C12__8S19017C8[] = {
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A1__8S19017C8[] = {
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__A1__8S19017C8[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__8S19017C8[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C13__A1__8S19017C8[] = {
  ABISELECT(144,96),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
static  VTT_ENTRY vtt_S19017C8[] = {
  {&(_ZTV8S19017C8[10]),  10,76},
  {&(_tg__ZTV8S19017C9__A__8S19017C8[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__A__8S19017C8[3]),  3,5},
  {&(_tg__ZTV9S19017C11__8S19017C8[10]),  10,12},
  {&(_tg__ZTV9S19017C149S19017C11__8S19017C8[7]),  7,9},
  {&(_tg__ZTV9S19017C159S19017C149S19017C11__8S19017C8[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C159S19017C149S19017C11__8S19017C8[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C159S19017C149S19017C11__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C149S19017C11__8S19017C8[6]),  6,8},
  {&(_tg__ZTV8S19017C5__9S19017C149S19017C11__8S19017C8[3]),  3,5},
  {&(_tg__ZTV9S19017C169S19017C11__8S19017C8[5]),  5,7},
  {&(_tg__ZTV9S19017C13__9S19017C169S19017C11__8S19017C8[4]),  4,6},
  {&(_tg__ZTV8S19017C5__9S19017C169S19017C11__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C99S19017C11__A2__8S19017C8[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C99S19017C11__A2__8S19017C8[3]),  3,5},
  {&(_tg__ZTV9S19017C12__9S19017C11__8S19017C8[8]),  8,10},
  {&(_tg__ZTV8S19017C5__9S19017C11__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C11__8S19017C8[6]),  6,8},
  {&(_tg__ZTV8S19017C2__9S19017C11__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__9S19017C11__8S19017C8[2]),  2,4},
  {&(_tg__ZTV9S19017C16__9S19017C11__8S19017C8[5]),  5,7},
  {&(_tg__ZTV9S19017C13__A1__9S19017C11__8S19017C8[4]),  4,6},
  {&(_tg__ZTV8S19017C9__A__9S19017C11__8S19017C8[5]),  5,7},
  {&(_ZTV8S19017C8[41]),  41,76},
  {&(_ZTV8S19017C8[22]),  22,76},
  {&(_ZTV8S19017C8[51]),  51,76},
  {&(_ZTV8S19017C8[59]),  59,76},
  {&(_ZTV8S19017C8[64]),  64,76},
  {&(_ZTV8S19017C8[68]),  68,76},
  {&(_ZTV8S19017C8[29]),  29,76},
  {&(_ZTV8S19017C8[74]),  74,76},
  {&(_ZTV8S19017C8[36]),  36,76},
  {&(_tg__ZTV9S19017C12__8S19017C8[7]),  7,9},
  {&(_tg__ZTV9S19017C139S19017C12__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C139S19017C12__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C12__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C12__8S19017C8[6]),  6,8},
  {&(_tg__ZTV8S19017C2__9S19017C12__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__9S19017C12__8S19017C8[2]),  2,4},
  {&(_tg__ZTV8S19017C9__A1__8S19017C8[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__A1__8S19017C8[3]),  3,5},
  {&(_tg__ZTV9S19017C13__A1__8S19017C8[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C13__A1__8S19017C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19017C8[];
extern  VTBL_ENTRY _ZTV8S19017C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C8[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19017C12D0Ev,_ZThn48_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19017C12D1Ev,_ZThn48_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19017C11D0Ev,_ZThn156_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19017C11D1Ev,_ZThn156_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C11D0Ev,_ZThn108_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C11D1Ev,_ZThn108_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C11D0Ev,_ZThn120_N9S19017C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C11D0Ev,_ZThn60_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C11D1Ev,_ZThn120_N9S19017C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C11D1Ev,_ZThn60_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19017C11D0Ev,_ZThn72_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19017C11D1Ev,_ZThn72_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C16D0Ev,_ZThn28_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C16D1Ev,_ZThn28_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19017C16D0Ev,_ZThn124_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19017C16D1Ev,_ZThn124_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C14D0Ev,_ZThn60_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C14D1Ev,_ZThn60_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C14D0Ev,_ZThn108_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C14D1Ev,_ZThn108_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C15D0Ev,_ZThn60_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C15D1Ev,_ZThn60_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C15D0Ev,_ZThn108_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C15D1Ev,_ZThn108_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19017C9D0Ev,_ZThn20_N8S19017C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C9D0Ev,_ZThn72_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19017C9D1Ev,_ZThn20_N8S19017C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C9D1Ev,_ZThn72_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19017C8D0Ev,_ZThn168_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19017C8D1Ev,_ZThn168_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C8D0Ev,_ZThn120_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C8D1Ev,_ZThn120_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19017C8D0Ev,_ZThn84_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19017C8D1Ev,_ZThn84_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19017C8D0Ev,_ZThn132_N8S19017C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C8D0Ev,_ZThn72_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19017C8D1Ev,_ZThn132_N8S19017C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C8D1Ev,_ZThn72_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C8 = {  "S19017C8", // class name
  bases_S19017C8, 27,
  &(vtc_S19017C8[0]), // expected_vtbl_contents
  &(vtt_S19017C8[0]), // expected_vtt_contents
  ABISELECT(272,180), // object size
  NSPAIRA(_ZTI8S19017C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19017C8),76, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19017C8),43, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19017C20_nt  {
  void  mf19017c20(); // _ZN12S19017C20_nt10mf19017c20Ev
};
//SIG(1 S19017C20_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19017C17  : virtual S2014C24 , virtual S19017C9 , S2014C21 , virtual S19017C15 , S3222C8_nt {
  ::S19017C20_nt s19017c17f0[6];
  short s19017c17f1;
  virtual  ~S19017C17(); // _ZN9S19017C17D2Ev
  S19017C17(); // tgen
};
//SIG(-1 S19017C17) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ BC6{ m} vd FC6} VBC7{ m Fi} vd Fp FC8{}} BC9{ m} VBC10{ BC6 BC5 VBC4 VBC3 vd} BC7 vd FU11{ m}[6] Fs}


 S19017C17 ::~S19017C17(){ note_dtor("S19017C17", this);}
S19017C17 ::S19017C17(){ note_ctor("S19017C17", this);} // tgen

static void Test_S19017C17()
{
  extern Class_Descriptor cd_S19017C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19017C17, buf);
    S19017C17 *dp, &lv = *(dp=new (buf) S19017C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19017C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C17)");
    check_base_class_offset(lv, (S2014C24*), 0, "S19017C17");
    check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C17");
    check_base_class_offset(lv, (S2014C38*)(S19017C15*), 0, "S19017C17");
    /*is_ambiguous_... S19017C17::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(48,28), "S19017C17");
    check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(48,28), "S19017C17");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(60,36), "S19017C17");
    check_base_class_offset(lv, (S19017C9*), ABISELECT(24,16), "S19017C17");
    check_base_class_offset(lv, (S19017C9*)(S19017C15*), ABISELECT(24,16), "S19017C17");
    check_base_class_offset(lv, (S2014C21*), 0, "S19017C17");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*), ABISELECT(73,45), "S19017C17");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*), ABISELECT(64,40), "S19017C17");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*), ABISELECT(64,40), "S19017C17");
    check_base_class_offset(lv, (S19017C15*), ABISELECT(64,40), "S19017C17");
    /*is_ambiguous_... S19017C17::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(8,4), "S19017C17");
    check_field_offset(lv, s19017c17f0, ABISELECT(12,8), "S19017C17.s19017c17f0");
    check_field_offset(lv, s19017c17f1, ABISELECT(18,14), "S19017C17.s19017c17f1");
    test_class_info(&lv, &cd_S19017C17);
    dp->~S19017C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C17(Test_S19017C17, "S19017C17", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S19017C17C1Ev();
extern void _ZN9S19017C17D2Ev();
Name_Map name_map_S19017C17[] = {
  NSPAIR(_ZN9S19017C17C1Ev),
  NSPAIR(_ZN9S19017C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19017C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(48,28), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    5, //immediately_derived
  0, 1},
  {&cd_S19017C9,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19017C5,    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
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19017C15,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3222C8_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 _ZTI9S19017C17[];
extern void _ZN9S19017C17D1Ev();
extern void _ZN9S19017C17D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19017C17D1Ev,_ZTv0_n24_N9S19017C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19017C17D1Ev,_ZThn16_N9S19017C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C17D0Ev,_ZTv0_n24_N9S19017C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19017C17D0Ev,_ZThn16_N9S19017C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C17D1Ev,_ZTv0_n12_N9S19017C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19017C17D1Ev,_ZThn28_N9S19017C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C17D0Ev,_ZTv0_n12_N9S19017C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19017C17D0Ev,_ZThn28_N9S19017C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19017C17D1Ev,_ZThn40_N9S19017C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19017C17D0Ev,_ZThn40_N9S19017C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C17[] = {
  ABISELECT(64,40),
  ABISELECT(60,36),
  ABISELECT(48,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&_ZN9S19017C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C17D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C17D1Ev,_ZTv0_n24_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C17D0Ev,_ZTv0_n24_N9S19017C17D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C17D1Ev,_ZTv0_n12_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C17D0Ev,_ZTv0_n12_N9S19017C17D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19017C17[];
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C17[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__9S19017C17[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C15__9S19017C17[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C15__9S19017C17[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C15__9S19017C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
static  VTT_ENTRY vtt_S19017C17[] = {
  {&(_ZTV9S19017C17[8]),  8,32},
  {&(_ZTV9S19017C17[16]),  16,32},
  {&(_ZTV9S19017C17[21]),  21,32},
  {&(_ZTV9S19017C17[30]),  30,32},
  {&(_tg__ZTV8S19017C9__9S19017C17[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__9S19017C17[3]),  3,5},
  {&(_tg__ZTV9S19017C15__9S19017C17[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C15__9S19017C17[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C15__9S19017C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19017C17[];
extern  VTBL_ENTRY _ZTV9S19017C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C17[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D0Ev,_ZThn12_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19017C9D1Ev,_ZThn12_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C17D0Ev,_ZThn40_N9S19017C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19017C17D1Ev,_ZThn40_N9S19017C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C17D0Ev,_ZTv0_n12_N9S19017C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C17D0Ev,_ZThn28_N9S19017C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C17D1Ev,_ZTv0_n12_N9S19017C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C17D1Ev,_ZThn28_N9S19017C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C17D0Ev,_ZTv0_n24_N9S19017C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19017C17D0Ev,_ZThn16_N9S19017C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C17D1Ev,_ZTv0_n24_N9S19017C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19017C17D1Ev,_ZThn16_N9S19017C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C17 = {  "S19017C17", // class name
  bases_S19017C17, 12,
  &(vtc_S19017C17[0]), // expected_vtbl_contents
  &(vtt_S19017C17[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S19017C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19017C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19017C17),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19017C1  : virtual S19017C2 , virtual S19017C8 , virtual S19017C17 {
  virtual  ~S19017C1(); // _ZN8S19017C1D2Ev
  virtual void  v1(); // _ZN8S19017C12v1Ev
  S19017C1(); // tgen
};
//SIG(1 S19017C1) C1{ VBC2{ BC3{ BC4{ m} BC5{ BC6{ m} vd FC6} BC6 BC7{ m Fi} Fs:16 FL} BC5 Fi} VBC8{ BC9{ VBC4 VBC5 VBC7 vd Fp FC10{}} BC11{ VBC12{ BC13{ VBC5 FL} VBC4 VBC7 VBC9 VBC2 vd Fl FC13} BC14{ VBC9 BC15{ BC6 BC5 VBC4 VBC9 vd} VBC6 vd FC7[6]} BC16{ VBC13 VBC7 Fc:1} BC9} FL} VBC17{ VBC18{ m} VBC9 BC19{ m} VBC15 BC7 vd FU20{ m}[6] Fs} vd v1}


 S19017C1 ::~S19017C1(){ note_dtor("S19017C1", this);}
void  S19017C1 ::v1(){vfunc_called(this, "_ZN8S19017C12v1Ev");}
S19017C1 ::S19017C1(){ note_ctor("S19017C1", this);} // tgen

static void Test_S19017C1()
{
  extern Class_Descriptor cd_S19017C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,53)];
    init_test(&cd_S19017C1, buf);
    S19017C1 *dp, &lv = *(dp=new (buf) S19017C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,208), "sizeof(S19017C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19017C1)");
    check_base_class_offset(lv, (S2014C38*)(S19017C3*)(S19017C2*), ABISELECT(8,4), "S19017C1");
    check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(8,4), "S19017C1");
    check_base_class_offset(lv, (S19017C5*)(S19017C3*)(S19017C2*), ABISELECT(8,4), "S19017C1");
    /*is_ambiguous_... S19017C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C3*)(S19017C2*), ABISELECT(17,9), "S19017C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C3*)(S19017C2*), ABISELECT(20,12), "S19017C1");
    check_base_class_offset(lv, (S19017C3*)(S19017C2*), ABISELECT(8,4), "S19017C1");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C2*), ABISELECT(40,28), "S19017C1");
    /*is_ambiguous_... S19017C2::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C2*), ABISELECT(40,28), "S19017C1");
    check_base_class_offset(lv, (S19017C2*), ABISELECT(8,4), "S19017C1");
    check_base_class_offset(lv, (S19017C2*)(S19017C12*), ABISELECT(8,4), "S19017C1");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*)(S19017C8*), 0, "S19017C1");
    /*is_ambiguous_... S19017C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C12*), 0, "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*), 0, "S19017C1");
    check_base_class_offset(lv, (S2014C38*)(S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), 0, "S19017C1");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C9*)(S19017C11*)(S19017C8*), 0, "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19017C15*), 0, "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*), ABISELECT(168,112), "S19017C1");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*)(S19017C8*), ABISELECT(168,112), "S19017C1");
    check_base_class_offset(lv, (S19017C5*)(S19017C13*)(S19017C12*), ABISELECT(168,112), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*), ABISELECT(168,112), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C13 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C13*), ABISELECT(168,112), "S19017C1");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C9*)(S19017C11*)(S19017C8*), ABISELECT(168,112), "S19017C1");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*)(S19017C8*), ABISELECT(180,120), "S19017C1");
    /*is_ambiguous_... S19017C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C12*), ABISELECT(180,120), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*), ABISELECT(180,120), "S19017C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19017C16*)(S19017C11*)(S19017C8*), ABISELECT(180,120), "S19017C1");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C9*)(S19017C11*)(S19017C8*), ABISELECT(180,120), "S19017C1");
    /*is_ambiguous_... S19017C8::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C9*)(S19017C8*), ABISELECT(56,40), "S19017C1");
    check_base_class_offset(lv, (S19017C13*)(S19017C12*), ABISELECT(184,124), "S19017C1");
    check_base_class_offset(lv, (S19017C9*)(S19017C12*), ABISELECT(240,160), "S19017C1");
    check_base_class_offset(lv, (S19017C9*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(240,160), "S19017C1");
    check_base_class_offset(lv, (S19017C9*)(S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(240,160), "S19017C1");
    check_base_class_offset(lv, (S19017C9*)(S19017C17*), ABISELECT(240,160), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C15 */ AMB_check_base_class_offset(lv, (S19017C9*)(S19017C15*), ABISELECT(240,160), "S19017C1");
    check_base_class_offset(lv, (S19017C12*)(S19017C11*)(S19017C8*), ABISELECT(184,124), "S19017C1");
    /*is_ambiguous_... S19017C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(89,57), "S19017C1");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(80,52), "S19017C1");
    /*is_ambiguous_... S19017C15::S19017C5 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(80,52), "S19017C1");
    check_base_class_offset(lv, (S19017C15*)(S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(80,52), "S19017C1");
    /*is_ambiguous_... S19017C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C14*)(S19017C11*)(S19017C8*), 0, "S19017C1");
    check_base_class_offset(lv, (S19017C14*)(S19017C11*)(S19017C8*), ABISELECT(80,52), "S19017C1");
    check_base_class_offset(lv, (S19017C13*)(S19017C16*)(S19017C11*)(S19017C8*), ABISELECT(264,172), "S19017C1");
    check_base_class_offset(lv, (S19017C16*)(S19017C11*)(S19017C8*), ABISELECT(120,84), "S19017C1");
    /*is_ambiguous_... S19017C11::S19017C9 */ AMB_check_base_class_offset(lv, (S19017C9*)(S19017C11*)(S19017C8*), ABISELECT(136,92), "S19017C1");
    check_base_class_offset(lv, (S19017C11*)(S19017C8*), ABISELECT(80,52), "S19017C1");
    check_base_class_offset(lv, (S19017C8*), ABISELECT(56,40), "S19017C1");
    check_base_class_offset(lv, (S2014C24*)(S19017C17*), 0, "S19017C1");
    check_base_class_offset(lv, (S2014C21*)(S19017C17*), ABISELECT(280,184), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C15*), ABISELECT(313,205), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19017C5*)(S19017C15*), ABISELECT(304,200), "S19017C1");
    /*is_ambiguous_... S19017C1::S19017C15 */ AMB_check_base_class_offset(lv, (S19017C5*)(S19017C15*), ABISELECT(304,200), "S19017C1");
    check_base_class_offset(lv, (S19017C15*)(S19017C17*), ABISELECT(304,200), "S19017C1");
    /*is_ambiguous_... S19017C17::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19017C17*), ABISELECT(288,188), "S19017C1");
    check_base_class_offset(lv, (S19017C17*), ABISELECT(280,184), "S19017C1");
    test_class_info(&lv, &cd_S19017C1);
    dp->~S19017C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19017C1(Test_S19017C1, "S19017C1", ABISELECT(320,208));

#else // __cplusplus

extern void _ZN8S19017C1C1Ev();
extern void _ZN8S19017C1D2Ev();
Name_Map name_map_S19017C1[] = {
  NSPAIR(_ZN8S19017C1C1Ev),
  NSPAIR(_ZN8S19017C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C3;
extern VTBL_ENTRY _ZTI8S19017C3[];
extern  VTBL_ENTRY _ZTV8S19017C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C2;
extern VTBL_ENTRY _ZTI8S19017C2[];
extern  VTBL_ENTRY _ZTV8S19017C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S19017C12;
extern VTBL_ENTRY _ZTI9S19017C12[];
extern  VTBL_ENTRY _ZTV9S19017C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C14;
extern VTBL_ENTRY _ZTI9S19017C14[];
extern  VTBL_ENTRY _ZTV9S19017C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C14[];
extern Class_Descriptor cd_S19017C13;
extern VTBL_ENTRY _ZTI9S19017C13[];
extern  VTBL_ENTRY _ZTV9S19017C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C13[];
extern Class_Descriptor cd_S19017C16;
extern VTBL_ENTRY _ZTI9S19017C16[];
extern  VTBL_ENTRY _ZTV9S19017C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C16[];
extern Class_Descriptor cd_S19017C9;
extern VTBL_ENTRY _ZTI8S19017C9[];
extern  VTBL_ENTRY _ZTV8S19017C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C9[];
extern Class_Descriptor cd_S19017C11;
extern VTBL_ENTRY _ZTI9S19017C11[];
extern  VTBL_ENTRY _ZTV9S19017C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C11[];
extern Class_Descriptor cd_S19017C8;
extern VTBL_ENTRY _ZTI8S19017C8[];
extern  VTBL_ENTRY _ZTV8S19017C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C8[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19017C5;
extern VTBL_ENTRY _ZTI8S19017C5[];
extern  VTBL_ENTRY _ZTV8S19017C5[];
extern Class_Descriptor cd_S19017C15;
extern VTBL_ENTRY _ZTI9S19017C15[];
extern  VTBL_ENTRY _ZTV9S19017C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C15[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19017C17;
extern VTBL_ENTRY _ZTI9S19017C17[];
extern  VTBL_ENTRY _ZTV9S19017C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19017C17[];
static Base_Class bases_S19017C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C28,    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_S19017C5,    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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(20,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
    5, //immediately_derived
  0, 0},
  {&cd_S19017C3,    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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(40,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //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
    8, //immediately_derived
  0, 0},
  {&cd_S19017C2,    ABISELECT(8,4), //bcp->offset
    17, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(168,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
    11, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(168,112), //bcp->offset
    65, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(180,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, 1},
  {&cd_S19017C9,    ABISELECT(56,40), //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
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19017C13,    ABISELECT(184,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19017C9,    ABISELECT(240,160), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19017C12,    ABISELECT(184,124), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S2014C28,    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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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_S19017C5,    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
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19017C15,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19017C14,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C13,    ABISELECT(264,172), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19017C16,    ABISELECT(120,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C9,    ABISELECT(136,92), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19017C11,    ABISELECT(80,52), //bcp->offset
    39, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19017C8,    ABISELECT(56,40), //bcp->offset
    26, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S2014C21,    ABISELECT(280,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
    35, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(313,205), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(304,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
    32, //immediately_derived
  0, 0},
  {&cd_S19017C5,    ABISELECT(304,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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19017C15,    ABISELECT(304,200), //bcp->offset
    105, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(288,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
    35, //immediately_derived
  0, 0},
  {&cd_S19017C17,    ABISELECT(280,184), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19017C1[];
extern void _ZN8S19017C1D1Ev();
extern void _ZN8S19017C1D0Ev();
extern void _ZN8S19017C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19017C1D1Ev,_ZTv0_n12_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19017C1D1Ev,_ZThn4_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C1D0Ev,_ZTv0_n12_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19017C1D0Ev,_ZThn4_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19017C1D1Ev,_ZTvn24_n12_N8S19017C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19017C1D0Ev,_ZTvn24_n12_N8S19017C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19017C1D1Ev,_ZTv0_n44_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19017C1D1Ev,_ZThn40_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19017C1D0Ev,_ZTv0_n44_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19017C1D0Ev,_ZThn40_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n88_N8S19017C1D1Ev,_ZTvn12_n44_N8S19017C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19017C1D0Ev,_ZTvn12_n44_N8S19017C1D0Ev)();
extern void ABISELECT(_ZTvn64_n88_N8S19017C1D1Ev,_ZTvn44_n44_N8S19017C1D1Ev)();
extern void ABISELECT(_ZTvn64_n88_N8S19017C1D0Ev,_ZTvn44_n44_N8S19017C1D0Ev)();
extern void ABISELECT(_ZTvn80_n88_N8S19017C1D1Ev,_ZTvn52_n44_N8S19017C1D1Ev)();
extern void ABISELECT(_ZTvn80_n88_N8S19017C1D0Ev,_ZTvn52_n44_N8S19017C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C1D1Ev,_ZTv0_n12_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19017C1D1Ev,_ZThn112_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C1D0Ev,_ZTv0_n12_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19017C1D0Ev,_ZThn112_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19017C1D1Ev,_ZTv0_n32_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19017C1D1Ev,_ZThn124_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19017C1D0Ev,_ZTv0_n32_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S19017C1D0Ev,_ZThn124_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19017C1D1Ev,_ZTv0_n24_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19017C1D1Ev,_ZThn160_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19017C1D0Ev,_ZTv0_n24_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19017C1D0Ev,_ZThn160_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19017C1D1Ev,_ZTv0_n16_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S19017C1D1Ev,_ZThn172_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19017C1D0Ev,_ZTv0_n16_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S19017C1D0Ev,_ZThn172_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19017C1D1Ev,_ZTv0_n36_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S19017C1D1Ev,_ZThn184_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19017C1D0Ev,_ZTv0_n36_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S19017C1D0Ev,_ZThn184_N8S19017C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19017C1D1Ev,_ZTv0_n28_N8S19017C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19017C1D1Ev,_ZThn200_N8S19017C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19017C1D0Ev,_ZTv0_n28_N8S19017C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19017C1D0Ev,_ZThn200_N8S19017C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19017C1[] = {
  ABISELECT(304,200),
  0,
  ABISELECT(280,184),
  ABISELECT(264,172),
  0,
  ABISELECT(240,160),
  ABISELECT(184,124),
  ABISELECT(180,120),
  ABISELECT(168,112),
  0,
  ABISELECT(56,40),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&_ZN8S19017C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19017C12v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C1D1Ev,_ZTv0_n12_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C1D0Ev,_ZTv0_n12_N8S19017C1D0Ev),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C1D1Ev,_ZTvn24_n12_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C1D0Ev,_ZTvn24_n12_N8S19017C1D0Ev),
  ABISELECT(-56,-40),
  ABISELECT(208,132),
  ABISELECT(-56,-40),
  ABISELECT(-48,-36),
  ABISELECT(184,120),
  ABISELECT(128,84),
  ABISELECT(124,80),
  ABISELECT(112,72),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19017C1D1Ev,_ZTv0_n44_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19017C1D0Ev,_ZTv0_n44_N8S19017C1D0Ev),
  ABISELECT(184,120),
  ABISELECT(-72,-48),
  ABISELECT(104,72),
  ABISELECT(-80,-52),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19017C1D1Ev,_ZTvn12_n44_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19017C1D0Ev,_ZTvn12_n44_N8S19017C1D0Ev),
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N8S19017C1D1Ev,_ZTvn44_n44_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N8S19017C1D0Ev,_ZTvn44_n44_N8S19017C1D0Ev),
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n88_N8S19017C1D1Ev,_ZTvn52_n44_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n88_N8S19017C1D0Ev,_ZTvn52_n44_N8S19017C1D0Ev),
  ABISELECT(-168,-112),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C1D1Ev,_ZTv0_n12_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C1D0Ev,_ZTv0_n12_N8S19017C1D0Ev),
  ABISELECT(-184,-124),
  ABISELECT(-176,-120),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-124),
  ABISELECT(-16,-12),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C1D1Ev,_ZTv0_n32_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C1D0Ev,_ZTv0_n32_N8S19017C1D0Ev),
  ABISELECT(-240,-160),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-240,-160),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C1D1Ev,_ZTv0_n24_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C1D0Ev,_ZTv0_n24_N8S19017C1D0Ev),
  ABISELECT(-264,-172),
  ABISELECT(-96,-60),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C1D1Ev,_ZTv0_n16_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C1D0Ev,_ZTv0_n16_N8S19017C1D0Ev),
  ABISELECT(-280,-184),
  ABISELECT(24,16),
  ABISELECT(-100,-64),
  ABISELECT(-112,-72),
  ABISELECT(-280,-184),
  ABISELECT(-40,-24),
  ABISELECT(-280,-184),
  ABISELECT(-280,-184),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19017C1D1Ev,_ZTv0_n36_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19017C1D0Ev,_ZTv0_n36_N8S19017C1D0Ev),
  ABISELECT(-304,-200),
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-200),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI8S19017C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19017C1D1Ev,_ZTv0_n28_N8S19017C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19017C1D0Ev,_ZTv0_n28_N8S19017C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19017C1[];
extern void _ZN8S19017C8D1Ev();
extern void _ZN8S19017C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C8__8S19017C1[] = {
  ABISELECT(208,132),
  ABISELECT(-56,-40),
  ABISELECT(-48,-36),
  ABISELECT(184,120),
  ABISELECT(128,84),
  ABISELECT(124,80),
  ABISELECT(112,72),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&_ZN8S19017C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C8D0Ev,
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C98S19017C8__8S19017C1[] = {
  ABISELECT(124,80),
  ABISELECT(112,72),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19017C9D1Ev,_ZThn72_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S19017C9D0Ev,_ZThn72_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C98S19017C8__8S19017C1[] = {
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C11D1Ev();
extern void _ZN9S19017C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(184,120),
  ABISELECT(-72,-48),
  ABISELECT(104,72),
  ABISELECT(-80,-52),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&_ZN9S19017C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C11D0Ev,
};
extern void _ZN9S19017C14D1Ev();
extern void _ZN9S19017C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&_ZN9S19017C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C14D0Ev,
};
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C159S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C15D1Ev,_ZThn108_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C15D0Ev,_ZThn108_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C159S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C15D1Ev,_ZThn60_N9S19017C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C15D0Ev,_ZThn60_N9S19017C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C159S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C14D1Ev,_ZThn108_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C14D0Ev,_ZThn108_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C14D1Ev,_ZThn60_N9S19017C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C14D0Ev,_ZThn60_N9S19017C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C149S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev),
};
extern void _ZN9S19017C16D1Ev();
extern void _ZN9S19017C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C169S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(144,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&_ZN9S19017C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn144_N9S19017C16D1Ev,_ZThn88_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn144_N9S19017C16D0Ev,_ZThn88_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__9S19017C169S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-144,-88),
  ABISELECT(-96,-60),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19017C16D1Ev,_ZThn28_N9S19017C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19017C16D0Ev,_ZThn28_N9S19017C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C169S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19017C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C99S19017C118S19017C8__A2__8S19017C1[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-136,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19017C9D1Ev,_ZThn20_N8S19017C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19017C9D0Ev,_ZThn20_N8S19017C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C99S19017C118S19017C8__A2__8S19017C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19017C11D1Ev,_ZThn72_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19017C11D0Ev,_ZThn72_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C12__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-176,-120),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-124),
  ABISELECT(-16,-12),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19017C11D1Ev,_ZThn60_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19017C11D0Ev,_ZThn60_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S19017C11D1Ev,_ZThn108_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S19017C11D0Ev,_ZThn108_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C2__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D1Ev,_ZTvn24_n12_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C11D0Ev,_ZTvn24_n12_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19017C16__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D1Ev,_ZThn32_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19017C11D0Ev,_ZThn32_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S19017C11D1Ev,_ZThn120_N9S19017C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S19017C11D0Ev,_ZThn120_N9S19017C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(-184,-120),
  ABISELECT(-96,-60),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A__9S19017C118S19017C8__8S19017C1[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-136,-92),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19017C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D1Ev,_ZThn40_N9S19017C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19017C11D0Ev,_ZThn40_N9S19017C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19017C8D1Ev,_ZThn72_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19017C8D0Ev,_ZThn72_N8S19017C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C8__8S19017C1[] = {
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZThn24_N8S19017C8D1Ev,_ZThn12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19017C8D0Ev,_ZThn12_N8S19017C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19017C11__8S19017C8__8S19017C1[] = {
  ABISELECT(184,120),
  ABISELECT(-72,-48),
  ABISELECT(104,72),
  ABISELECT(-80,-52),
  ABISELECT(100,68),
  ABISELECT(88,60),
  ABISELECT(160,108),
  ABISELECT(-80,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19017C8D1Ev,_ZThn12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19017C8D0Ev,_ZThn12_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19017C8D1Ev,_ZThn84_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19017C8D0Ev,_ZThn84_N8S19017C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C12__8S19017C8__8S19017C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-176,-120),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-124),
  ABISELECT(-16,-12),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S19017C8D1Ev,_ZThn120_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S19017C8D0Ev,_ZThn120_N8S19017C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__A1__8S19017C8__8S19017C1[] = {
  ABISELECT(-184,-120),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C2__8S19017C8__8S19017C1[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19017C8D1Ev,_ZTvn24_n12_N8S19017C8D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19017C8D0Ev,_ZTvn24_n12_N8S19017C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__8S19017C8__8S19017C1[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C8D1Ev,_ZTvn24_n12_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19017C8D0Ev,_ZTvn24_n12_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19017C8D1Ev,_ZThn44_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19017C8D0Ev,_ZThn44_N8S19017C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19017C169S19017C11__8S19017C8__8S19017C1[] = {
  ABISELECT(60,36),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19017C8D1Ev,_ZThn44_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19017C8D0Ev,_ZThn44_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn208_N8S19017C8D1Ev,_ZThn132_N8S19017C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev)();
extern void ABISELECT(_ZThn208_N8S19017C8D0Ev,_ZThn132_N8S19017C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__8S19017C8__8S19017C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-96,-60),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev),
};
extern void ABISELECT(_ZThn80_N8S19017C8D1Ev,_ZThn52_N8S19017C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19017C8D0Ev,_ZThn52_N8S19017C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C99S19017C11__A2__8S19017C8__8S19017C1[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(-136,-92),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19017C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19017C8D1Ev,_ZThn52_N8S19017C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19017C8D0Ev,_ZThn52_N8S19017C8D0Ev),
};
extern void _ZN9S19017C12D1Ev();
extern void _ZN9S19017C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C12__8S19017C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-124),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&_ZN9S19017C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C12D0Ev,
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C139S19017C12__8S19017C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C139S19017C12__8S19017C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C12__8S19017C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C12__8S19017C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C2__9S19017C12__8S19017C1[] = {
  ABISELECT(176,120),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D1Ev,_ZTv0_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C12D0Ev,_ZTv0_n12_N9S19017C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C58S19017C2__A2__9S19017C12__8S19017C1[] = {
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI9S19017C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D1Ev,_ZTvn24_n12_N9S19017C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19017C12D0Ev,_ZTvn24_n12_N9S19017C12D0Ev),
};
extern void _ZN8S19017C9D1Ev();
extern void _ZN8S19017C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19017C9__A1__8S19017C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&_ZN8S19017C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19017C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__8S19017C9__A1__8S19017C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19017C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev),
};
extern void _ZN9S19017C13D1Ev();
extern void _ZN9S19017C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C13__A1__8S19017C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&_ZN9S19017C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C13__A1__8S19017C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S19017C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D1Ev,_ZTv0_n12_N9S19017C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C13D0Ev,_ZTv0_n12_N9S19017C13D0Ev),
};
extern void _ZN9S19017C17D1Ev();
extern void _ZN9S19017C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C17__8S19017C1[] = {
  ABISELECT(24,16),
  ABISELECT(-100,-64),
  ABISELECT(-112,-72),
  ABISELECT(-280,-184),
  ABISELECT(-40,-24),
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&_ZN9S19017C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C17D1Ev,_ZTv0_n24_N9S19017C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19017C17D0Ev,_ZTv0_n24_N9S19017C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C17__8S19017C1[] = {
  ABISELECT(40,24),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C17D1Ev,_ZTv0_n24_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C17D0Ev,_ZTv0_n24_N9S19017C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C17D1Ev,_ZTv0_n12_N9S19017C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C17D0Ev,_ZTv0_n12_N9S19017C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__9S19017C17__8S19017C1[] = {
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C17D1Ev,_ZTv0_n12_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C17D0Ev,_ZTv0_n12_N9S19017C17D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19017C17D1Ev,_ZThn16_N9S19017C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19017C17D0Ev,_ZThn16_N9S19017C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19017C15__9S19017C17__8S19017C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-200),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19017C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev),
};
extern void _ZN9S19017C15D1Ev();
extern void _ZN9S19017C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19017C15__A1__8S19017C1[] = {
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&_ZN9S19017C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19017C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C9__9S19017C15__A1__8S19017C1[] = {
  ABISELECT(64,40),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-160),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19017C5__A1__9S19017C15__A1__8S19017C1[] = {
  ABISELECT(136,88),
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S19017C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev),
};
static  VTT_ENTRY vtt_S19017C1[] = {
  {&(_ZTV8S19017C1[14]),  14,114},
  {&(_ZTV8S19017C1[20]),  20,114},
  {&(_ZTV8S19017C1[24]),  24,114},
  {&(_ZTV8S19017C1[37]),  37,114},
  {&(_ZTV8S19017C1[68]),  68,114},
  {&(_ZTV8S19017C1[49]),  49,114},
  {&(_ZTV8S19017C1[78]),  78,114},
  {&(_ZTV8S19017C1[86]),  86,114},
  {&(_ZTV8S19017C1[56]),  56,114},
  {&(_ZTV8S19017C1[92]),  92,114},
  {&(_ZTV8S19017C1[63]),  63,114},
  {&(_ZTV8S19017C1[103]),  103,114},
  {&(_ZTV8S19017C1[112]),  112,114},
  {&(_tg__ZTV8S19017C8__8S19017C1[10]),  10,12},
  {&(_tg__ZTV8S19017C98S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C98S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C118S19017C8__8S19017C1[10]),  10,12},
  {&(_tg__ZTV9S19017C149S19017C118S19017C8__8S19017C1[7]),  7,9},
  {&(_tg__ZTV9S19017C159S19017C149S19017C118S19017C8__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C159S19017C149S19017C118S19017C8__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C159S19017C149S19017C118S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C149S19017C118S19017C8__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C5__9S19017C149S19017C118S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C169S19017C118S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV9S19017C13__9S19017C169S19017C118S19017C8__8S19017C1[4]),  4,6},
  {&(_tg__ZTV8S19017C5__9S19017C169S19017C118S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C99S19017C118S19017C8__A2__8S19017C1[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C99S19017C118S19017C8__A2__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C12__9S19017C118S19017C8__8S19017C1[8]),  8,10},
  {&(_tg__ZTV8S19017C5__9S19017C118S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C118S19017C8__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C2__9S19017C118S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__9S19017C118S19017C8__8S19017C1[2]),  2,4},
  {&(_tg__ZTV9S19017C16__9S19017C118S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV9S19017C13__A1__9S19017C118S19017C8__8S19017C1[4]),  4,6},
  {&(_tg__ZTV8S19017C9__A__9S19017C118S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C11__8S19017C8__8S19017C1[10]),  10,12},
  {&(_tg__ZTV9S19017C12__8S19017C8__8S19017C1[8]),  8,10},
  {&(_tg__ZTV8S19017C9__A1__8S19017C8__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C2__8S19017C8__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__8S19017C8__8S19017C1[2]),  2,4},
  {&(_tg__ZTV9S19017C169S19017C11__8S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV9S19017C13__A1__8S19017C8__8S19017C1[4]),  4,6},
  {&(_tg__ZTV8S19017C99S19017C11__A2__8S19017C8__8S19017C1[5]),  5,7},
  {&(_tg__ZTV9S19017C12__8S19017C1[7]),  7,9},
  {&(_tg__ZTV9S19017C139S19017C12__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C139S19017C12__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C12__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C9__9S19017C12__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C2__9S19017C12__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C58S19017C2__A2__9S19017C12__8S19017C1[2]),  2,4},
  {&(_tg__ZTV8S19017C9__A1__8S19017C1[5]),  5,7},
  {&(_tg__ZTV8S19017C5__8S19017C9__A1__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C13__A1__8S19017C1[3]),  3,5},
  {&(_tg__ZTV8S19017C5__9S19017C13__A1__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C17__8S19017C1[8]),  8,10},
  {&(_tg__ZTV8S19017C9__9S19017C17__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C5__9S19017C17__8S19017C1[3]),  3,5},
  {&(_tg__ZTV9S19017C15__9S19017C17__8S19017C1[7]),  7,9},
  {&(_tg__ZTV9S19017C15__A1__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C9__9S19017C15__A1__8S19017C1[6]),  6,8},
  {&(_tg__ZTV8S19017C5__A1__9S19017C15__A1__8S19017C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19017C1[];
extern  VTBL_ENTRY _ZTV8S19017C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19017C1[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19017C17D0Ev,_ZTv0_n28_N9S19017C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19017C17D0Ev,_ZThn16_N9S19017C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19017C17D1Ev,_ZTv0_n28_N9S19017C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19017C17D1Ev,_ZThn16_N9S19017C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D0Ev,_ZTv0_n24_N9S19017C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D0Ev,_ZThn36_N9S19017C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C12D1Ev,_ZTv0_n24_N9S19017C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19017C12D1Ev,_ZThn36_N9S19017C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C8D0Ev,_ZTv0_n16_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19017C8D0Ev,_ZThn132_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C8D1Ev,_ZTv0_n16_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19017C8D1Ev,_ZThn132_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C8D0Ev,_ZTv0_n24_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C8D0Ev,_ZThn120_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C8D1Ev,_ZTv0_n24_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C8D1Ev,_ZThn120_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C8D0Ev,_ZTv0_n32_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19017C8D0Ev,_ZThn84_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C8D1Ev,_ZTv0_n32_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19017C8D1Ev,_ZThn84_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C8D0Ev,_ZTv0_n12_N8S19017C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C8D0Ev,_ZThn72_N8S19017C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C8D1Ev,_ZTv0_n12_N8S19017C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C8D1Ev,_ZThn72_N8S19017C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D0Ev,_ZTv0_n16_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C11D0Ev,_ZThn120_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C11D1Ev,_ZTv0_n16_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19017C11D1Ev,_ZThn120_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D0Ev,_ZTv0_n24_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C11D0Ev,_ZThn108_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C11D1Ev,_ZTv0_n24_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C11D1Ev,_ZThn108_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D0Ev,_ZTv0_n12_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C11D0Ev,_ZThn60_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C11D1Ev,_ZTv0_n12_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C11D1Ev,_ZThn60_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D0Ev,_ZTv0_n32_N9S19017C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19017C11D0Ev,_ZThn72_N9S19017C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19017C11D1Ev,_ZTv0_n32_N9S19017C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19017C11D1Ev,_ZThn72_N9S19017C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D0Ev,_ZTv0_n12_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C16D0Ev,_ZThn28_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C16D1Ev,_ZTv0_n12_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19017C16D1Ev,_ZThn28_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D0Ev,_ZTv0_n16_N9S19017C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19017C16D0Ev,_ZThn88_N9S19017C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19017C16D1Ev,_ZTv0_n16_N9S19017C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19017C16D1Ev,_ZThn88_N9S19017C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D0Ev,_ZTv0_n12_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C14D0Ev,_ZThn60_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C14D1Ev,_ZTv0_n12_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C14D1Ev,_ZThn60_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D0Ev,_ZTv0_n24_N9S19017C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C14D0Ev,_ZThn108_N9S19017C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C14D1Ev,_ZTv0_n24_N9S19017C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C14D1Ev,_ZThn108_N9S19017C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D0Ev,_ZTv0_n12_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C15D0Ev,_ZThn60_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19017C15D1Ev,_ZTv0_n12_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19017C15D1Ev,_ZThn60_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D0Ev,_ZTv0_n24_N9S19017C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C15D0Ev,_ZThn108_N9S19017C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19017C15D1Ev,_ZTv0_n24_N9S19017C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19017C15D1Ev,_ZThn108_N9S19017C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D0Ev,_ZTv0_n12_N8S19017C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19017C9D0Ev,_ZThn20_N8S19017C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C9D0Ev,_ZThn72_N8S19017C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C9D1Ev,_ZTv0_n12_N8S19017C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19017C9D1Ev,_ZThn20_N8S19017C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19017C9D1Ev,_ZThn72_N8S19017C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19017C1D0Ev,_ZTv0_n28_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19017C1D0Ev,_ZThn200_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19017C1D1Ev,_ZTv0_n28_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19017C1D1Ev,_ZThn200_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19017C1D0Ev,_ZTv0_n36_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19017C1D0Ev,_ZThn184_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19017C1D1Ev,_ZTv0_n36_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19017C1D1Ev,_ZThn184_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C1D0Ev,_ZTv0_n16_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19017C1D0Ev,_ZThn172_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19017C1D1Ev,_ZTv0_n16_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19017C1D1Ev,_ZThn172_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C1D0Ev,_ZTv0_n24_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19017C1D0Ev,_ZThn160_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19017C1D1Ev,_ZTv0_n24_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19017C1D1Ev,_ZThn160_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C1D0Ev,_ZTv0_n32_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C1D0Ev,_ZThn124_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19017C1D1Ev,_ZTv0_n32_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19017C1D1Ev,_ZThn124_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19017C1D0Ev,_ZTv0_n44_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19017C1D0Ev,_ZThn40_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19017C1D1Ev,_ZTv0_n44_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19017C1D1Ev,_ZThn40_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C1D0Ev,_ZTv0_n12_N8S19017C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19017C1D0Ev,_ZThn112_N8S19017C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19017C1D0Ev,_ZThn4_N8S19017C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19017C1D1Ev,_ZTv0_n12_N8S19017C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19017C1D1Ev,_ZThn112_N8S19017C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19017C1D1Ev,_ZThn4_N8S19017C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19017C1 = {  "S19017C1", // class name
  bases_S19017C1, 36,
  &(vtc_S19017C1[0]), // expected_vtbl_contents
  &(vtt_S19017C1[0]), // expected_vtt_contents
  ABISELECT(320,208), // object size
  NSPAIRA(_ZTI8S19017C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19017C1),114, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19017C1),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C5  : S2014C28 {
  ::S2014C28 s19016c5f0;
  virtual  ~S19016C5(); // _ZN8S19016C5D1Ev
  S19016C5(); // tgen
};
//SIG(-1 S19016C5) C1{ BC2{ m} vd FC2}


 S19016C5 ::~S19016C5(){ note_dtor("S19016C5", this);}
S19016C5 ::S19016C5(){ note_ctor("S19016C5", this);} // tgen

static void Test_S19016C5()
{
  extern Class_Descriptor cd_S19016C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19016C5, buf);
    S19016C5 *dp, &lv = *(dp=new (buf) S19016C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19016C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C5)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19016C5");
    check_field_offset(lv, s19016c5f0, ABISELECT(8,4), "S19016C5.s19016c5f0");
    test_class_info(&lv, &cd_S19016C5);
    dp->~S19016C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C5(Test_S19016C5, "S19016C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19016C5C1Ev();
extern void _ZN8S19016C5D1Ev();
Name_Map name_map_S19016C5[] = {
  NSPAIR(_ZN8S19016C5C1Ev),
  NSPAIR(_ZN8S19016C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19016C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19016C5[];
extern void _ZN8S19016C5D1Ev();
extern void _ZN8S19016C5D0Ev();
static  VTBL_ENTRY vtc_S19016C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C5[0]),
  (VTBL_ENTRY)&_ZN8S19016C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
Class_Descriptor cd_S19016C5 = {  "S19016C5", // class name
  bases_S19016C5, 1,
  &(vtc_S19016C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19016C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19016C5),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  S19016C3  : S2014C38 , S19016C5 , S2014C28 , S3222C8_nt {
  short s19016c3f0:16;
  long s19016c3f1;
  ~S19016C3(); // tgen
  S19016C3(); // tgen
};
//SIG(-1 S19016C3) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 Fl}


S19016C3 ::~S19016C3(){ note_dtor("S19016C3", this);} // tgen
S19016C3 ::S19016C3(){ note_ctor("S19016C3", this);} // tgen

static void Test_S19016C3()
{
  extern Class_Descriptor cd_S19016C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19016C3, buf);
    S19016C3 *dp, &lv = *(dp=new (buf) S19016C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19016C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C3)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19016C3");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*), 0, "S19016C3");
    check_base_class_offset(lv, (S19016C5*), 0, "S19016C3");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(9,5), "S19016C3");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19016C3");
    set_bf_and_test(lv, s19016c3f0, ABISELECT(16,12), 0, 16, 1, "S19016C3");
    set_bf_and_test(lv, s19016c3f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19016C3");
    check_field_offset(lv, s19016c3f1, ABISELECT(24,16), "S19016C3.s19016c3f1");
    test_class_info(&lv, &cd_S19016C3);
    dp->~S19016C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C3(Test_S19016C3, "S19016C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19016C3C1Ev();
extern void _ZN8S19016C3D1Ev();
Name_Map name_map_S19016C3[] = {
  NSPAIR(_ZN8S19016C3C1Ev),
  NSPAIR(_ZN8S19016C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19016C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S19016C3[];
extern void _ZN8S19016C3D1Ev();
extern void _ZN8S19016C3D0Ev();
static  VTBL_ENTRY vtc_S19016C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C3[0]),
  (VTBL_ENTRY)&_ZN8S19016C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
Class_Descriptor cd_S19016C3 = {  "S19016C3", // class name
  bases_S19016C3, 5,
  &(vtc_S19016C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19016C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19016C3),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  S19016C2  : S19016C3 , S19016C5 {
  int s19016c2f0;
  ~S19016C2(); // tgen
  S19016C2(); // tgen
};
//SIG(-1 S19016C2) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 Fl} BC4 Fi}


S19016C2 ::~S19016C2(){ note_dtor("S19016C2", this);} // tgen
S19016C2 ::S19016C2(){ note_ctor("S19016C2", this);} // tgen

static void Test_S19016C2()
{
  extern Class_Descriptor cd_S19016C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19016C2, buf);
    S19016C2 *dp, &lv = *(dp=new (buf) S19016C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19016C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C2)");
    check_base_class_offset(lv, (S2014C38*)(S19016C3*), 0, "S19016C2");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C3*), 0, "S19016C2");
    check_base_class_offset(lv, (S19016C5*)(S19016C3*), 0, "S19016C2");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C3*), ABISELECT(9,5), "S19016C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C3*), ABISELECT(12,8), "S19016C2");
    check_base_class_offset(lv, (S19016C3*), 0, "S19016C2");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(32,20), "S19016C2");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*), ABISELECT(32,20), "S19016C2");
    check_field_offset(lv, s19016c2f0, ABISELECT(44,28), "S19016C2.s19016c2f0");
    test_class_info(&lv, &cd_S19016C2);
    dp->~S19016C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C2(Test_S19016C2, "S19016C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19016C2C1Ev();
extern void _ZN8S19016C2D1Ev();
Name_Map name_map_S19016C2[] = {
  NSPAIR(_ZN8S19016C2C1Ev),
  NSPAIR(_ZN8S19016C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C3;
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
static Base_Class bases_S19016C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19016C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(32,20), //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 _ZTI8S19016C2[];
extern void _ZN8S19016C2D1Ev();
extern void _ZN8S19016C2D0Ev();
extern void ABISELECT(_ZThn32_N8S19016C2D1Ev,_ZThn20_N8S19016C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19016C2D0Ev,_ZThn20_N8S19016C2D0Ev)();
static  VTBL_ENTRY vtc_S19016C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C2[0]),
  (VTBL_ENTRY)&_ZN8S19016C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C2D0Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19016C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19016C2D1Ev,_ZThn20_N8S19016C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19016C2D0Ev,_ZThn20_N8S19016C2D0Ev),
};
extern VTBL_ENTRY _ZTI8S19016C2[];
extern  VTBL_ENTRY _ZTV8S19016C2[];
Class_Descriptor cd_S19016C2 = {  "S19016C2", // class name
  bases_S19016C2, 8,
  &(vtc_S19016C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19016C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19016C2),8, //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  S19016C9  : virtual S2014C38 , virtual S19016C5 , virtual S3222C8_nt {
  void *s19016c9f0;
  ::S19762C18_nt s19016c9f1;
  virtual  ~S19016C9(); // _ZN8S19016C9D2Ev
  S19016C9(); // tgen
};
//SIG(-1 S19016C9) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19016C9 ::~S19016C9(){ note_dtor("S19016C9", this);}
S19016C9 ::S19016C9(){ note_ctor("S19016C9", this);} // tgen

static void Test_S19016C9()
{
  extern Class_Descriptor cd_S19016C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19016C9, buf);
    S19016C9 *dp, &lv = *(dp=new (buf) S19016C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19016C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C9)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19016C9");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(24,12), "S19016C9");
    check_base_class_offset(lv, (S19016C5*), ABISELECT(24,12), "S19016C9");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19016C9");
    check_field_offset(lv, s19016c9f0, ABISELECT(8,4), "S19016C9.s19016c9f0");
    check_field_offset(lv, s19016c9f1, ABISELECT(16,8), "S19016C9.s19016c9f1");
    test_class_info(&lv, &cd_S19016C9);
    dp->~S19016C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C9(Test_S19016C9, "S19016C9", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19016C9C1Ev();
extern void _ZN8S19016C9D2Ev();
Name_Map name_map_S19016C9[] = {
  NSPAIR(_ZN8S19016C9C1Ev),
  NSPAIR(_ZN8S19016C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19016C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19016C9[];
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C9[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19016C9[];
static  VTT_ENTRY vtt_S19016C9[] = {
  {&(_ZTV8S19016C9[5]),  5,12},
  {&(_ZTV8S19016C9[10]),  10,12},
};
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C9 = {  "S19016C9", // class name
  bases_S19016C9, 4,
  &(vtc_S19016C9[0]), // expected_vtbl_contents
  &(vtt_S19016C9[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19016C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19016C9),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19016C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C13  : virtual S19016C5 {
  __tsi64 s19016c13f0;
  ~S19016C13(); // tgen
  S19016C13(); // tgen
};
//SIG(-1 S19016C13) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19016C13 ::~S19016C13(){ note_dtor("S19016C13", this);} // tgen
S19016C13 ::S19016C13(){ note_ctor("S19016C13", this);} // tgen

static void Test_S19016C13()
{
  extern Class_Descriptor cd_S19016C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19016C13, buf);
    S19016C13 *dp, &lv = *(dp=new (buf) S19016C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19016C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C13)");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(16,12), "S19016C13");
    check_base_class_offset(lv, (S19016C5*), ABISELECT(16,12), "S19016C13");
    check_field_offset(lv, s19016c13f0, ABISELECT(8,4), "S19016C13.s19016c13f0");
    test_class_info(&lv, &cd_S19016C13);
    dp->~S19016C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C13(Test_S19016C13, "S19016C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19016C13C1Ev();
extern void _ZN9S19016C13D1Ev();
Name_Map name_map_S19016C13[] = {
  NSPAIR(_ZN9S19016C13C1Ev),
  NSPAIR(_ZN9S19016C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
static Base_Class bases_S19016C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
  0, 0},
  {&cd_S19016C5,    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 _ZTI9S19016C13[];
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19016C13D1Ev,_ZThn12_N9S19016C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19016C13D0Ev,_ZThn12_N9S19016C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C13[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C13[];
static  VTT_ENTRY vtt_S19016C13[] = {
  {&(_ZTV9S19016C13[3]),  3,10},
  {&(_ZTV9S19016C13[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C13D0Ev,_ZThn12_N9S19016C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C13D1Ev,_ZThn12_N9S19016C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C13 = {  "S19016C13", // class name
  bases_S19016C13, 2,
  &(vtc_S19016C13[0]), // expected_vtbl_contents
  &(vtt_S19016C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19016C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19016C13),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C12  : S19016C13 , virtual S2014C38 , virtual S3222C8_nt , virtual S19016C9 , virtual S19016C2 {
  long s19016c12f0;
  ::S19016C13 s19016c12f1;
  virtual  ~S19016C12(); // _ZN9S19016C12D2Ev
  S19016C12(); // tgen
};
//SIG(-1 S19016C12) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 Fl} BC3 Fi} vd Fl FC2}


 S19016C12 ::~S19016C12(){ note_dtor("S19016C12", this);}
S19016C12 ::S19016C12(){ note_ctor("S19016C12", this);} // tgen

static void Test_S19016C12()
{
  extern Class_Descriptor cd_S19016C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S19016C12, buf);
    S19016C12 *dp, &lv = *(dp=new (buf) S19016C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S19016C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C12)");
    /*is_ambiguous_... S19016C12::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(56,36), "S19016C12");
    check_base_class_offset(lv, (S19016C5*)(S19016C13*), ABISELECT(56,36), "S19016C12");
    check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(56,36), "S19016C12");
    check_base_class_offset(lv, (S19016C13*), 0, "S19016C12");
    /*is_ambiguous_... S19016C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), 0, "S19016C12");
    check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C12");
    /*is_ambiguous_... S19016C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19016C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(68,44), "S19016C12");
    check_base_class_offset(lv, (S19016C9*), ABISELECT(72,48), "S19016C12");
    check_base_class_offset(lv, (S2014C38*)(S19016C3*)(S19016C2*), ABISELECT(96,60), "S19016C12");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(96,60), "S19016C12");
    check_base_class_offset(lv, (S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(96,60), "S19016C12");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C3*)(S19016C2*), ABISELECT(105,65), "S19016C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C3*)(S19016C2*), ABISELECT(108,68), "S19016C12");
    check_base_class_offset(lv, (S19016C3*)(S19016C2*), ABISELECT(96,60), "S19016C12");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C2*), ABISELECT(128,80), "S19016C12");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C2*), ABISELECT(128,80), "S19016C12");
    check_base_class_offset(lv, (S19016C2*), ABISELECT(96,60), "S19016C12");
    check_field_offset(lv, s19016c12f0, ABISELECT(16,12), "S19016C12.s19016c12f0");
    check_field_offset(lv, s19016c12f1, ABISELECT(24,16), "S19016C12.s19016c12f1");
    test_class_info(&lv, &cd_S19016C12);
    dp->~S19016C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C12(Test_S19016C12, "S19016C12", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN9S19016C12C1Ev();
extern void _ZN9S19016C12D2Ev();
Name_Map name_map_S19016C12[] = {
  NSPAIR(_ZN9S19016C12C1Ev),
  NSPAIR(_ZN9S19016C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C3;
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C2;
extern VTBL_ENTRY _ZTI8S19016C2[];
extern  VTBL_ENTRY _ZTV8S19016C2[];
static Base_Class bases_S19016C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S19016C13,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19016C9,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19016C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19016C3,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(128,80), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19016C2,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19016C12[];
extern void _ZN9S19016C12D1Ev();
extern void _ZN9S19016C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19016C12D1Ev,_ZThn60_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19016C12D0Ev,_ZThn60_N9S19016C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY vtc_S19016C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&_ZN9S19016C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C12D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C12[];
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C13__9S19016C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C13D1Ev,_ZThn36_N9S19016C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C13D0Ev,_ZThn36_N9S19016C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C13__9S19016C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__9S19016C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
static  VTT_ENTRY vtt_S19016C12[] = {
  {&(_ZTV9S19016C12[7]),  7,31},
  {&(_tg__ZTV9S19016C13__9S19016C12[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C13__9S19016C12[3]),  3,5},
  {&(_ZTV9S19016C12[12]),  12,31},
  {&(_ZTV9S19016C12[20]),  20,31},
  {&(_ZTV9S19016C12[25]),  25,31},
  {&(_ZTV9S19016C12[29]),  29,31},
  {&(_tg__ZTV8S19016C9__9S19016C12[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__9S19016C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C12[];
extern  VTBL_ENTRY _ZTV9S19016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C12[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C13D0Ev,_ZThn36_N9S19016C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C13D1Ev,_ZThn36_N9S19016C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C12D0Ev,_ZThn60_N9S19016C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C12D1Ev,_ZThn60_N9S19016C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C12 = {  "S19016C12", // class name
  bases_S19016C12, 15,
  &(vtc_S19016C12[0]), // expected_vtbl_contents
  &(vtt_S19016C12[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI9S19016C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19016C12),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C15  : S2014C28 , S19016C5 , virtual S2014C38 , virtual S19016C9 {
  virtual  ~S19016C15(); // _ZN9S19016C15D2Ev
  S19016C15(); // tgen
};
//SIG(-1 S19016C15) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19016C15 ::~S19016C15(){ note_dtor("S19016C15", this);}
S19016C15 ::S19016C15(){ note_ctor("S19016C15", this);} // tgen

static void Test_S19016C15()
{
  extern Class_Descriptor cd_S19016C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19016C15, buf);
    S19016C15 *dp, &lv = *(dp=new (buf) S19016C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19016C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C15)");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(9,5), "S19016C15");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), 0, "S19016C15");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*), 0, "S19016C15");
    check_base_class_offset(lv, (S2014C38*), 0, "S19016C15");
    check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C15");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(40,20), "S19016C15");
    check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(40,20), "S19016C15");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(52,28), "S19016C15");
    check_base_class_offset(lv, (S19016C9*), ABISELECT(16,8), "S19016C15");
    test_class_info(&lv, &cd_S19016C15);
    dp->~S19016C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C15(Test_S19016C15, "S19016C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19016C15C1Ev();
extern void _ZN9S19016C15D2Ev();
Name_Map name_map_S19016C15[] = {
  NSPAIR(_ZN9S19016C15C1Ev),
  NSPAIR(_ZN9S19016C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
static Base_Class bases_S19016C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19016C9,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19016C15[];
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S19016C15D1Ev,_ZThn8_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S19016C15D0Ev,_ZThn8_N9S19016C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C15D1Ev,_ZThn20_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19016C15D0Ev,_ZThn20_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C15[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C15[];
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C15[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__9S19016C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
static  VTT_ENTRY vtt_S19016C15[] = {
  {&(_ZTV9S19016C15[6]),  6,21},
  {&(_ZTV9S19016C15[14]),  14,21},
  {&(_ZTV9S19016C15[19]),  19,21},
  {&(_tg__ZTV8S19016C9__9S19016C15[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__9S19016C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C15D0Ev,_ZThn20_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C15D1Ev,_ZThn20_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C15D0Ev,_ZThn8_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C15D1Ev,_ZThn8_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C15 = {  "S19016C15", // class name
  bases_S19016C15, 8,
  &(vtc_S19016C15[0]), // expected_vtbl_contents
  &(vtt_S19016C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19016C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19016C15),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C14  : virtual S19016C9 , S19016C15 , virtual S2014C28 {
  ::S3222C8_nt s19016c14f0[6];
  virtual  ~S19016C14(); // _ZN9S19016C14D2Ev
  S19016C14(); // tgen
};
//SIG(-1 S19016C14) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19016C14 ::~S19016C14(){ note_dtor("S19016C14", this);}
S19016C14 ::S19016C14(){ note_ctor("S19016C14", this);} // tgen

static void Test_S19016C14()
{
  extern Class_Descriptor cd_S19016C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19016C14, buf);
    S19016C14 *dp, &lv = *(dp=new (buf) S19016C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19016C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C14)");
    check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C14");
    check_base_class_offset(lv, (S2014C38*)(S19016C15*), 0, "S19016C14");
    /*is_ambiguous_... S19016C14::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(64,44), "S19016C14");
    check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(64,44), "S19016C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(76,52), "S19016C14");
    check_base_class_offset(lv, (S19016C9*), ABISELECT(40,32), "S19016C14");
    check_base_class_offset(lv, (S19016C9*)(S19016C15*), ABISELECT(40,32), "S19016C14");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*), ABISELECT(9,5), "S19016C14");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*), 0, "S19016C14");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*), 0, "S19016C14");
    check_base_class_offset(lv, (S19016C15*), 0, "S19016C14");
    /*is_ambiguous_... S19016C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), ABISELECT(80,56), "S19016C14");
    check_field_offset(lv, s19016c14f0, ABISELECT(12,8), "S19016C14.s19016c14f0");
    test_class_info(&lv, &cd_S19016C14);
    dp->~S19016C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C14(Test_S19016C14, "S19016C14", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19016C14C1Ev();
extern void _ZN9S19016C14D2Ev();
Name_Map name_map_S19016C14[] = {
  NSPAIR(_ZN9S19016C14C1Ev),
  NSPAIR(_ZN9S19016C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19016C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19016C9,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C28,    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, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19016C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19016C14[];
extern void _ZN9S19016C14D1Ev();
extern void _ZN9S19016C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C14D1Ev,_ZThn32_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn40_N9S19016C14D0Ev,_ZThn32_N9S19016C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19016C14D1Ev,_ZThn44_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19016C14D0Ev,_ZThn44_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C14[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&_ZN9S19016C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C14D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C14[];
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C15__9S19016C14[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C15D1Ev,_ZThn32_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19016C15D0Ev,_ZThn32_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C15__9S19016C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S19016C15D1Ev,_ZThn44_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S19016C15D0Ev,_ZThn44_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C15__9S19016C14[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__9S19016C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
static  VTT_ENTRY vtt_S19016C14[] = {
  {&(_ZTV9S19016C14[7]),  7,22},
  {&(_tg__ZTV9S19016C15__9S19016C14[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C15__9S19016C14[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C15__9S19016C14[3]),  3,5},
  {&(_ZTV9S19016C14[15]),  15,22},
  {&(_ZTV9S19016C14[20]),  20,22},
  {&(_tg__ZTV8S19016C9__9S19016C14[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__9S19016C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C14[];
extern  VTBL_ENTRY _ZTV9S19016C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C14[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C15D0Ev,_ZThn44_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C15D1Ev,_ZThn44_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C15D0Ev,_ZThn32_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C15D1Ev,_ZThn32_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C14D0Ev,_ZThn44_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C14D1Ev,_ZThn44_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C14D0Ev,_ZThn32_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19016C14D1Ev,_ZThn32_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C14 = {  "S19016C14", // class name
  bases_S19016C14, 10,
  &(vtc_S19016C14[0]), // expected_vtbl_contents
  &(vtt_S19016C14[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19016C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19016C14),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C14),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C16  : virtual S19016C13 , virtual S3222C8_nt {
  unsigned char s19016c16f0:1;
  ~S19016C16(); // tgen
  S19016C16(); // tgen
};
//SIG(-1 S19016C16) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S19016C16 ::~S19016C16(){ note_dtor("S19016C16", this);} // tgen
S19016C16 ::S19016C16(){ note_ctor("S19016C16", this);} // tgen

static void Test_S19016C16()
{
  extern Class_Descriptor cd_S19016C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19016C16, buf);
    S19016C16 *dp, &lv = *(dp=new (buf) S19016C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19016C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C16)");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(32,20), "S19016C16");
    check_base_class_offset(lv, (S19016C5*)(S19016C13*), ABISELECT(32,20), "S19016C16");
    check_base_class_offset(lv, (S19016C13*), ABISELECT(16,8), "S19016C16");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S19016C16");
    set_bf_and_test(lv, s19016c16f0, ABISELECT(8,4), 0, 1, 1, "S19016C16");
    test_class_info(&lv, &cd_S19016C16);
    dp->~S19016C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C16(Test_S19016C16, "S19016C16", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19016C16C1Ev();
extern void _ZN9S19016C16D1Ev();
Name_Map name_map_S19016C16[] = {
  NSPAIR(_ZN9S19016C16C1Ev),
  NSPAIR(_ZN9S19016C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19016C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(32,20), //bcp->offset
    13, //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_S19016C13,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19016C16[];
extern void _ZN9S19016C16D1Ev();
extern void _ZN9S19016C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19016C16D1Ev,_ZThn8_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S19016C16D0Ev,_ZThn8_N9S19016C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19016C16D1Ev,_ZThn20_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19016C16D0Ev,_ZThn20_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C16[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&_ZN9S19016C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C16[];
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C13__9S19016C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19016C13D1Ev,_ZThn12_N9S19016C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19016C13D0Ev,_ZThn12_N9S19016C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C13__9S19016C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
static  VTT_ENTRY vtt_S19016C16[] = {
  {&(_ZTV9S19016C16[5]),  5,18},
  {&(_ZTV9S19016C16[11]),  11,18},
  {&(_ZTV9S19016C16[16]),  16,18},
  {&(_tg__ZTV9S19016C13__9S19016C16[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C13__9S19016C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C16[];
extern  VTBL_ENTRY _ZTV9S19016C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C16[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C13D0Ev,_ZThn12_N9S19016C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C13D1Ev,_ZThn12_N9S19016C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19016C16D0Ev,_ZThn20_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19016C16D1Ev,_ZThn20_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C16D0Ev,_ZThn8_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19016C16D1Ev,_ZThn8_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C16 = {  "S19016C16", // class name
  bases_S19016C16, 4,
  &(vtc_S19016C16[0]), // expected_vtbl_contents
  &(vtt_S19016C16[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19016C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19016C16),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C16),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C11  : virtual S19016C12 , S19016C14 , S19016C16 , S19016C9 {
  ~S19016C11(); // tgen
  S19016C11(); // tgen
};
//SIG(-1 S19016C11) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S19016C11 ::~S19016C11(){ note_dtor("S19016C11", this);} // tgen
S19016C11 ::S19016C11(){ note_ctor("S19016C11", this);} // tgen

static void Test_S19016C11()
{
  extern Class_Descriptor cd_S19016C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,40)];
    init_test(&cd_S19016C11, buf);
    S19016C11 *dp, &lv = *(dp=new (buf) S19016C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S19016C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C11)");
    /*is_ambiguous_... S19016C11::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(136,88), "S19016C11");
    check_base_class_offset(lv, (S19016C5*)(S19016C13*)(S19016C12*), ABISELECT(136,88), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(136,88), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C13 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C13*), ABISELECT(136,88), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(136,88), "S19016C11");
    check_base_class_offset(lv, (S19016C13*)(S19016C12*), ABISELECT(80,52), "S19016C11");
    /*is_ambiguous_... S19016C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C12*), 0, "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C11");
    check_base_class_offset(lv, (S2014C38*)(S19016C15*)(S19016C14*), 0, "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C11");
    /*is_ambiguous_... S19016C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C12*), ABISELECT(148,96), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(148,96), "S19016C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C16*), ABISELECT(148,96), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(148,96), "S19016C11");
    check_base_class_offset(lv, (S19016C9*)(S19016C12*), ABISELECT(152,100), "S19016C11");
    check_base_class_offset(lv, (S19016C9*)(S19016C14*), ABISELECT(152,100), "S19016C11");
    check_base_class_offset(lv, (S19016C9*)(S19016C15*)(S19016C14*), ABISELECT(152,100), "S19016C11");
    check_base_class_offset(lv, (S2014C38*)(S19016C3*)(S19016C2*), ABISELECT(176,112), "S19016C11");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(176,112), "S19016C11");
    check_base_class_offset(lv, (S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(176,112), "S19016C11");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C3*)(S19016C2*), ABISELECT(185,117), "S19016C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C3*)(S19016C2*), ABISELECT(188,120), "S19016C11");
    check_base_class_offset(lv, (S19016C3*)(S19016C2*), ABISELECT(176,112), "S19016C11");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C2*), ABISELECT(208,132), "S19016C11");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C2*), ABISELECT(208,132), "S19016C11");
    check_base_class_offset(lv, (S19016C2*)(S19016C12*), ABISELECT(176,112), "S19016C11");
    check_base_class_offset(lv, (S19016C12*), ABISELECT(80,52), "S19016C11");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*)(S19016C14*), ABISELECT(9,5), "S19016C11");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*)(S19016C14*), 0, "S19016C11");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*)(S19016C14*), 0, "S19016C11");
    check_base_class_offset(lv, (S19016C15*)(S19016C14*), 0, "S19016C11");
    /*is_ambiguous_... S19016C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C14*), ABISELECT(224,144), "S19016C11");
    check_base_class_offset(lv, (S19016C14*), 0, "S19016C11");
    check_base_class_offset(lv, (S19016C13*)(S19016C16*), ABISELECT(224,144), "S19016C11");
    check_base_class_offset(lv, (S19016C16*), ABISELECT(40,32), "S19016C11");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C9*), ABISELECT(56,40), "S19016C11");
    test_class_info(&lv, &cd_S19016C11);
    dp->~S19016C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C11(Test_S19016C11, "S19016C11", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN9S19016C11C1Ev();
extern void _ZN9S19016C11D1Ev();
Name_Map name_map_S19016C11[] = {
  NSPAIR(_ZN9S19016C11C1Ev),
  NSPAIR(_ZN9S19016C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C3;
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C2;
extern VTBL_ENTRY _ZTI8S19016C2[];
extern  VTBL_ENTRY _ZTV8S19016C2[];
extern Class_Descriptor cd_S19016C12;
extern VTBL_ENTRY _ZTI9S19016C12[];
extern  VTBL_ENTRY _ZTV9S19016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C14;
extern VTBL_ENTRY _ZTI9S19016C14[];
extern  VTBL_ENTRY _ZTV9S19016C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C14[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S19016C16;
extern VTBL_ENTRY _ZTI9S19016C16[];
extern  VTBL_ENTRY _ZTV9S19016C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C16[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
static Base_Class bases_S19016C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19016C13,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S19016C9,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S19016C3,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    ABISELECT(208,132), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19016C2,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19016C12,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C28,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19016C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S19016C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19016C13,    ABISELECT(224,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19016C16,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19016C9,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19016C11[];
extern void _ZN9S19016C11D1Ev();
extern void _ZN9S19016C11D0Ev();
extern void ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S19016C11D1Ev,_ZThn52_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S19016C11D0Ev,_ZThn52_N9S19016C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn136_N9S19016C11D1Ev,_ZThn88_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn136_N9S19016C11D0Ev,_ZThn88_N9S19016C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19016C11D1Ev,_ZThn100_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19016C11D0Ev,_ZThn100_N9S19016C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S19016C11D1Ev,_ZThn112_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S19016C11D0Ev,_ZThn112_N9S19016C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S19016C11D1Ev,_ZThn144_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S19016C11D0Ev,_ZThn144_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C11[] = {
  ABISELECT(224,144),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&_ZN9S19016C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C11D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-88,-56),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C11[];
extern void _ZN9S19016C14D1Ev();
extern void _ZN9S19016C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C14__9S19016C11[] = {
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&_ZN9S19016C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C14D0Ev,
};
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C159S19016C14__9S19016C11[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S19016C15D1Ev,_ZThn100_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S19016C15D0Ev,_ZThn100_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C159S19016C14__9S19016C11[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19016C15D1Ev,_ZThn88_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19016C15D0Ev,_ZThn88_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C159S19016C14__9S19016C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19016C14D1Ev,_ZThn100_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19016C14D0Ev,_ZThn100_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C14__9S19016C11[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19016C14D1Ev,_ZThn88_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19016C14D0Ev,_ZThn88_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C14__9S19016C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev),
};
extern void _ZN9S19016C16D1Ev();
extern void _ZN9S19016C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C16__9S19016C11[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&_ZN9S19016C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S19016C16D1Ev,_ZThn112_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S19016C16D0Ev,_ZThn112_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__9S19016C16__9S19016C11[] = {
  ABISELECT(-184,-112),
  ABISELECT(-88,-56),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19016C16D1Ev,_ZThn56_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19016C16D0Ev,_ZThn56_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C16__9S19016C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A__9S19016C11[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19016C9D1Ev,_ZThn48_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19016C9D0Ev,_ZThn48_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__A__9S19016C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C12D1Ev();
extern void _ZN9S19016C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C12__9S19016C11[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&_ZN9S19016C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C12D0Ev,
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C139S19016C12__9S19016C11[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C13D1Ev,_ZThn36_N9S19016C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C13D0Ev,_ZThn36_N9S19016C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C139S19016C12__9S19016C11[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C12__9S19016C11[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C12__9S19016C11[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19016C12D1Ev,_ZThn60_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19016C12D0Ev,_ZThn60_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C2__9S19016C12__9S19016C11[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__9S19016C12__9S19016C11[] = {
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C11[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__9S19016C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__9S19016C11[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C13__A1__9S19016C11[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
static  VTT_ENTRY vtt_S19016C11[] = {
  {&(_ZTV9S19016C11[10]),  10,64},
  {&(_tg__ZTV9S19016C14__9S19016C11[7]),  7,9},
  {&(_tg__ZTV9S19016C159S19016C14__9S19016C11[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C159S19016C14__9S19016C11[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C159S19016C14__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C14__9S19016C11[6]),  6,8},
  {&(_tg__ZTV8S19016C5__9S19016C14__9S19016C11[3]),  3,5},
  {&(_tg__ZTV9S19016C16__9S19016C11[5]),  5,7},
  {&(_tg__ZTV9S19016C13__9S19016C16__9S19016C11[4]),  4,6},
  {&(_tg__ZTV8S19016C5__9S19016C16__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C9__A__9S19016C11[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__A__9S19016C11[3]),  3,5},
  {&(_ZTV9S19016C11[34]),  34,64},
  {&(_ZTV9S19016C11[39]),  39,64},
  {&(_ZTV9S19016C11[47]),  47,64},
  {&(_ZTV9S19016C11[52]),  52,64},
  {&(_ZTV9S19016C11[56]),  56,64},
  {&(_ZTV9S19016C11[17]),  17,64},
  {&(_ZTV9S19016C11[62]),  62,64},
  {&(_ZTV9S19016C11[24]),  24,64},
  {&(_tg__ZTV9S19016C12__9S19016C11[7]),  7,9},
  {&(_tg__ZTV9S19016C139S19016C12__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C139S19016C12__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C12__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C12__9S19016C11[6]),  6,8},
  {&(_tg__ZTV8S19016C2__9S19016C12__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__9S19016C12__9S19016C11[2]),  2,4},
  {&(_tg__ZTV8S19016C9__9S19016C11[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__9S19016C11[3]),  3,5},
  {&(_tg__ZTV9S19016C13__A1__9S19016C11[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C13__A1__9S19016C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C11[];
extern  VTBL_ENTRY _ZTV9S19016C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C11[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C12D0Ev,_ZThn60_N9S19016C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C12D1Ev,_ZThn60_N9S19016C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C13D0Ev,_ZThn36_N9S19016C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C13D1Ev,_ZThn36_N9S19016C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19016C9D0Ev,_ZThn48_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19016C9D1Ev,_ZThn48_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C16D0Ev,_ZThn56_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19016C16D1Ev,_ZThn56_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C16D0Ev,_ZThn112_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C16D1Ev,_ZThn112_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C14D0Ev,_ZThn88_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C14D1Ev,_ZThn88_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C14D0Ev,_ZThn100_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C14D1Ev,_ZThn100_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C15D0Ev,_ZThn88_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C15D1Ev,_ZThn88_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C15D0Ev,_ZThn100_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C15D1Ev,_ZThn100_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19016C11D0Ev,_ZThn144_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19016C11D1Ev,_ZThn144_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C11D0Ev,_ZThn100_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19016C11D1Ev,_ZThn100_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19016C11D0Ev,_ZThn112_N9S19016C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C11D0Ev,_ZThn88_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19016C11D1Ev,_ZThn112_N9S19016C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19016C11D1Ev,_ZThn88_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19016C11D0Ev,_ZThn52_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19016C11D1Ev,_ZThn52_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C11 = {  "S19016C11", // class name
  bases_S19016C11, 25,
  &(vtc_S19016C11[0]), // expected_vtbl_contents
  &(vtt_S19016C11[0]), // expected_vtt_contents
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI9S19016C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19016C11),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C11),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C8  : S19016C9 , S19016C11 {
  long s19016c8f0;
  ~S19016C8(); // tgen
  S19016C8(); // tgen
};
//SIG(-1 S19016C8) C1{ BC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ VBC9{ BC10{ VBC4 FL} VBC3 VBC6 VBC2 VBC11{ BC12{ BC3 BC4 BC5 BC6 Fs:16 Fl} BC4 Fi} vd Fl FC10} BC13{ VBC2 BC14{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]} BC15{ VBC10 VBC6 Fc:1} BC2} Fl}


S19016C8 ::~S19016C8(){ note_dtor("S19016C8", this);} // tgen
S19016C8 ::S19016C8(){ note_ctor("S19016C8", this);} // tgen

static void Test_S19016C8()
{
  extern Class_Descriptor cd_S19016C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,44)];
    init_test(&cd_S19016C8, buf);
    S19016C8 *dp, &lv = *(dp=new (buf) S19016C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,172), "sizeof(S19016C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C8)");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C8");
    /*is_ambiguous_... S19016C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C12*), 0, "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C8");
    check_base_class_offset(lv, (S2014C38*)(S19016C15*)(S19016C14*)(S19016C11*), 0, "S19016C8");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*)(S19016C11*), 0, "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(112,68), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(112,68), "S19016C8");
    check_base_class_offset(lv, (S19016C5*)(S19016C13*)(S19016C12*), ABISELECT(112,68), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(112,68), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C13 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C13*), ABISELECT(112,68), "S19016C8");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*)(S19016C11*), ABISELECT(112,68), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(124,76), "S19016C8");
    /*is_ambiguous_... S19016C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C12*), ABISELECT(124,76), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(124,76), "S19016C8");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C16*)(S19016C11*), ABISELECT(124,76), "S19016C8");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*)(S19016C11*), ABISELECT(124,76), "S19016C8");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C9*), 0, "S19016C8");
    check_base_class_offset(lv, (S19016C13*)(S19016C12*), ABISELECT(128,80), "S19016C8");
    check_base_class_offset(lv, (S19016C9*)(S19016C12*), ABISELECT(184,116), "S19016C8");
    check_base_class_offset(lv, (S19016C9*)(S19016C14*)(S19016C11*), ABISELECT(184,116), "S19016C8");
    check_base_class_offset(lv, (S19016C9*)(S19016C15*)(S19016C14*)(S19016C11*), ABISELECT(184,116), "S19016C8");
    check_base_class_offset(lv, (S2014C38*)(S19016C3*)(S19016C2*), ABISELECT(208,128), "S19016C8");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(208,128), "S19016C8");
    check_base_class_offset(lv, (S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(208,128), "S19016C8");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C3*)(S19016C2*), ABISELECT(217,133), "S19016C8");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C3*)(S19016C2*), ABISELECT(220,136), "S19016C8");
    check_base_class_offset(lv, (S19016C3*)(S19016C2*), ABISELECT(208,128), "S19016C8");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C2*), ABISELECT(240,148), "S19016C8");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C2*), ABISELECT(240,148), "S19016C8");
    check_base_class_offset(lv, (S19016C2*)(S19016C12*), ABISELECT(208,128), "S19016C8");
    check_base_class_offset(lv, (S19016C12*)(S19016C11*), ABISELECT(128,80), "S19016C8");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*)(S19016C14*)(S19016C11*), ABISELECT(33,17), "S19016C8");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*)(S19016C14*)(S19016C11*), ABISELECT(24,12), "S19016C8");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*)(S19016C14*)(S19016C11*), ABISELECT(24,12), "S19016C8");
    check_base_class_offset(lv, (S19016C15*)(S19016C14*)(S19016C11*), ABISELECT(24,12), "S19016C8");
    /*is_ambiguous_... S19016C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C14*)(S19016C11*), 0, "S19016C8");
    check_base_class_offset(lv, (S19016C14*)(S19016C11*), ABISELECT(24,12), "S19016C8");
    check_base_class_offset(lv, (S19016C13*)(S19016C16*)(S19016C11*), ABISELECT(256,160), "S19016C8");
    check_base_class_offset(lv, (S19016C16*)(S19016C11*), ABISELECT(64,44), "S19016C8");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C9*)(S19016C11*), ABISELECT(80,52), "S19016C8");
    check_base_class_offset(lv, (S19016C11*), ABISELECT(24,12), "S19016C8");
    check_field_offset(lv, s19016c8f0, ABISELECT(104,64), "S19016C8.s19016c8f0");
    test_class_info(&lv, &cd_S19016C8);
    dp->~S19016C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C8(Test_S19016C8, "S19016C8", ABISELECT(272,172));

#else // __cplusplus

extern void _ZN8S19016C8C1Ev();
extern void _ZN8S19016C8D1Ev();
Name_Map name_map_S19016C8[] = {
  NSPAIR(_ZN8S19016C8C1Ev),
  NSPAIR(_ZN8S19016C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C3;
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C2;
extern VTBL_ENTRY _ZTI8S19016C2[];
extern  VTBL_ENTRY _ZTV8S19016C2[];
extern Class_Descriptor cd_S19016C12;
extern VTBL_ENTRY _ZTI9S19016C12[];
extern  VTBL_ENTRY _ZTV9S19016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C14;
extern VTBL_ENTRY _ZTI9S19016C14[];
extern  VTBL_ENTRY _ZTV9S19016C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C14[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S19016C16;
extern VTBL_ENTRY _ZTI9S19016C16[];
extern  VTBL_ENTRY _ZTV9S19016C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C16[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S19016C11;
extern VTBL_ENTRY _ZTI9S19016C11[];
extern  VTBL_ENTRY _ZTV9S19016C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C11[];
static Base_Class bases_S19016C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(112,68), //bcp->offset
    38, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(124,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, 1},
  {&cd_S19016C9,    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_S19016C13,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19016C9,    ABISELECT(184,116), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(208,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
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(208,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
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(208,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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(217,133), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(220,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C3,    ABISELECT(208,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
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(240,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
    14, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(240,148), //bcp->offset
    66, //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19016C2,    ABISELECT(208,128), //bcp->offset
    61, //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
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19016C12,    ABISELECT(128,80), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(33,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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19016C5,    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
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19016C15,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C14,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C13,    ABISELECT(256,160), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19016C16,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C9,    ABISELECT(80,52), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C11,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19016C8[];
extern void _ZN8S19016C8D1Ev();
extern void _ZN8S19016C8D0Ev();
extern void ABISELECT(_ZThn24_N8S19016C8D1Ev,_ZThn12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C8D0Ev,_ZThn12_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19016C8D1Ev,_ZThn44_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19016C8D0Ev,_ZThn44_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19016C8D1Ev,_ZThn52_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19016C8D0Ev,_ZThn52_N8S19016C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19016C8D1Ev,_ZThn68_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19016C8D0Ev,_ZThn68_N8S19016C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19016C8D1Ev,_ZThn80_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19016C8D0Ev,_ZThn80_N8S19016C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S19016C8D1Ev,_ZThn116_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S19016C8D0Ev,_ZThn116_N8S19016C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn208_N8S19016C8D1Ev,_ZThn128_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn208_N8S19016C8D0Ev,_ZThn128_N8S19016C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19016C8D1Ev,_ZTvn20_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19016C8D0Ev,_ZTvn20_n12_N8S19016C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S19016C8D1Ev,_ZThn160_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S19016C8D0Ev,_ZThn160_N8S19016C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C8[] = {
  ABISELECT(256,160),
  0,
  ABISELECT(208,128),
  ABISELECT(184,116),
  ABISELECT(128,80),
  ABISELECT(124,76),
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&_ZN8S19016C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C8D0Ev,
  ABISELECT(232,148),
  ABISELECT(184,116),
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19016C8D1Ev,_ZThn12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19016C8D0Ev,_ZThn12_N8S19016C8D0Ev),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(192,116),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19016C8D1Ev,_ZThn44_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19016C8D0Ev,_ZThn44_N8S19016C8D0Ev),
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19016C8D1Ev,_ZThn52_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19016C8D0Ev,_ZThn52_N8S19016C8D0Ev),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(80,48),
  ABISELECT(56,36),
  -4,
  ABISELECT(-128,-80),
  ABISELECT(-16,-12),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev),
  ABISELECT(-184,-116),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C8D1Ev,_ZTvn20_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C8D0Ev,_ZTvn20_n12_N8S19016C8D0Ev),
  ABISELECT(-256,-160),
  ABISELECT(-144,-92),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19016C8[];
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A__8S19016C8[] = {
  ABISELECT(124,76),
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19016C9D1Ev,_ZThn68_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S19016C9D0Ev,_ZThn68_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__A__8S19016C8[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C11D1Ev();
extern void _ZN9S19016C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C11__8S19016C8[] = {
  ABISELECT(232,148),
  ABISELECT(184,116),
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&_ZN9S19016C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C11D0Ev,
};
extern void _ZN9S19016C14D1Ev();
extern void _ZN9S19016C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(-24,-12),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&_ZN9S19016C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C14D0Ev,
};
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C159S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C15D1Ev,_ZThn104_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C15D0Ev,_ZThn104_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C159S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C15D1Ev,_ZThn56_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C15D0Ev,_ZThn56_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C159S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C14D1Ev,_ZThn104_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C14D0Ev,_ZThn104_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C14D1Ev,_ZThn56_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C14D0Ev,_ZThn56_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C149S19016C11__8S19016C8[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev),
};
extern void _ZN9S19016C16D1Ev();
extern void _ZN9S19016C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C169S19016C11__8S19016C8[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(192,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&_ZN9S19016C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S19016C16D1Ev,_ZThn116_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S19016C16D0Ev,_ZThn116_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__9S19016C169S19016C11__8S19016C8[] = {
  ABISELECT(-192,-116),
  ABISELECT(-144,-92),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19016C16D1Ev,_ZThn24_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19016C16D0Ev,_ZThn24_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C169S19016C11__8S19016C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C99S19016C11__A2__8S19016C8[] = {
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19016C9D1Ev,_ZThn16_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19016C9D0Ev,_ZThn16_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C99S19016C11__A2__8S19016C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19016C11D1Ev,_ZThn68_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19016C11D0Ev,_ZThn68_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C12__9S19016C11__8S19016C8[] = {
  ABISELECT(-104,-68),
  ABISELECT(80,48),
  ABISELECT(56,36),
  -4,
  ABISELECT(-128,-80),
  ABISELECT(-16,-12),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C11D1Ev,_ZThn56_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C11D0Ev,_ZThn56_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C11__8S19016C8[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C11D1Ev,_ZThn104_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C11D0Ev,_ZThn104_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C11__8S19016C8[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S19016C11D1Ev,_ZThn116_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S19016C11D0Ev,_ZThn116_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C2__9S19016C11__8S19016C8[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__9S19016C11__8S19016C8[] = {
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19016C16__9S19016C11__8S19016C8[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(192,116),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn232_N9S19016C11D1Ev,_ZThn148_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn232_N9S19016C11D0Ev,_ZThn148_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__9S19016C11__8S19016C8[] = {
  ABISELECT(-232,-148),
  ABISELECT(-144,-92),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A__9S19016C11__8S19016C8[] = {
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-80,-52),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev),
};
extern void _ZN9S19016C12D1Ev();
extern void _ZN9S19016C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C12__8S19016C8[] = {
  ABISELECT(80,48),
  ABISELECT(56,36),
  -4,
  ABISELECT(-128,-80),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&_ZN9S19016C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C12D0Ev,
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C139S19016C12__8S19016C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C139S19016C12__8S19016C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C12__8S19016C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C12__8S19016C8[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C2__9S19016C12__8S19016C8[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__9S19016C12__8S19016C8[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A1__8S19016C8[] = {
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-184,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__A1__8S19016C8[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__8S19016C8[] = {
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C13__A1__8S19016C8[] = {
  ABISELECT(144,92),
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
static  VTT_ENTRY vtt_S19016C8[] = {
  {&(_ZTV8S19016C8[10]),  10,76},
  {&(_tg__ZTV8S19016C9__A__8S19016C8[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__A__8S19016C8[3]),  3,5},
  {&(_tg__ZTV9S19016C11__8S19016C8[10]),  10,12},
  {&(_tg__ZTV9S19016C149S19016C11__8S19016C8[7]),  7,9},
  {&(_tg__ZTV9S19016C159S19016C149S19016C11__8S19016C8[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C159S19016C149S19016C11__8S19016C8[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C159S19016C149S19016C11__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C149S19016C11__8S19016C8[6]),  6,8},
  {&(_tg__ZTV8S19016C5__9S19016C149S19016C11__8S19016C8[3]),  3,5},
  {&(_tg__ZTV9S19016C169S19016C11__8S19016C8[5]),  5,7},
  {&(_tg__ZTV9S19016C13__9S19016C169S19016C11__8S19016C8[4]),  4,6},
  {&(_tg__ZTV8S19016C5__9S19016C169S19016C11__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C99S19016C11__A2__8S19016C8[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C99S19016C11__A2__8S19016C8[3]),  3,5},
  {&(_tg__ZTV9S19016C12__9S19016C11__8S19016C8[8]),  8,10},
  {&(_tg__ZTV8S19016C5__9S19016C11__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C11__8S19016C8[6]),  6,8},
  {&(_tg__ZTV8S19016C2__9S19016C11__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__9S19016C11__8S19016C8[2]),  2,4},
  {&(_tg__ZTV9S19016C16__9S19016C11__8S19016C8[5]),  5,7},
  {&(_tg__ZTV9S19016C13__A1__9S19016C11__8S19016C8[4]),  4,6},
  {&(_tg__ZTV8S19016C9__A__9S19016C11__8S19016C8[5]),  5,7},
  {&(_ZTV8S19016C8[41]),  41,76},
  {&(_ZTV8S19016C8[22]),  22,76},
  {&(_ZTV8S19016C8[51]),  51,76},
  {&(_ZTV8S19016C8[59]),  59,76},
  {&(_ZTV8S19016C8[64]),  64,76},
  {&(_ZTV8S19016C8[68]),  68,76},
  {&(_ZTV8S19016C8[29]),  29,76},
  {&(_ZTV8S19016C8[74]),  74,76},
  {&(_ZTV8S19016C8[36]),  36,76},
  {&(_tg__ZTV9S19016C12__8S19016C8[7]),  7,9},
  {&(_tg__ZTV9S19016C139S19016C12__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C139S19016C12__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C12__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C12__8S19016C8[6]),  6,8},
  {&(_tg__ZTV8S19016C2__9S19016C12__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__9S19016C12__8S19016C8[2]),  2,4},
  {&(_tg__ZTV8S19016C9__A1__8S19016C8[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__A1__8S19016C8[3]),  3,5},
  {&(_tg__ZTV9S19016C13__A1__8S19016C8[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C13__A1__8S19016C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19016C8[];
extern  VTBL_ENTRY _ZTV8S19016C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C8[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19016C12D0Ev,_ZThn48_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19016C12D1Ev,_ZThn48_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19016C11D0Ev,_ZThn148_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19016C11D1Ev,_ZThn148_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C11D0Ev,_ZThn104_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C11D1Ev,_ZThn104_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C11D0Ev,_ZThn116_N9S19016C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C11D0Ev,_ZThn56_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C11D1Ev,_ZThn116_N9S19016C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C11D1Ev,_ZThn56_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19016C11D0Ev,_ZThn68_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19016C11D1Ev,_ZThn68_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C16D0Ev,_ZThn24_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C16D1Ev,_ZThn24_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19016C16D0Ev,_ZThn116_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19016C16D1Ev,_ZThn116_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C14D0Ev,_ZThn56_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C14D1Ev,_ZThn56_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C14D0Ev,_ZThn104_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C14D1Ev,_ZThn104_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C15D0Ev,_ZThn56_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C15D1Ev,_ZThn56_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C15D0Ev,_ZThn104_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C15D1Ev,_ZThn104_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19016C9D0Ev,_ZThn16_N8S19016C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C9D0Ev,_ZThn68_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19016C9D1Ev,_ZThn16_N8S19016C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C9D1Ev,_ZThn68_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19016C8D0Ev,_ZThn160_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19016C8D1Ev,_ZThn160_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C8D0Ev,_ZThn116_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C8D1Ev,_ZThn116_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19016C8D0Ev,_ZThn80_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19016C8D1Ev,_ZThn80_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19016C8D0Ev,_ZThn128_N8S19016C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C8D0Ev,_ZThn68_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19016C8D1Ev,_ZThn128_N8S19016C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C8D1Ev,_ZThn68_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C8 = {  "S19016C8", // class name
  bases_S19016C8, 27,
  &(vtc_S19016C8[0]), // expected_vtbl_contents
  &(vtt_S19016C8[0]), // expected_vtt_contents
  ABISELECT(272,172), // object size
  NSPAIRA(_ZTI8S19016C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19016C8),76, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19016C8),43, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C17  : virtual S2014C24 , virtual S19016C9 , S2014C21 , virtual S19016C15 , S3222C8_nt {
  ::S19017C20_nt s19016c17f0[6];
  short s19016c17f1;
  virtual  ~S19016C17(); // _ZN9S19016C17D2Ev
  S19016C17(); // tgen
};
//SIG(-1 S19016C17) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ BC6{ m} vd FC6} VBC7{ m Fi} vd Fp FC8{}} BC9{ m} VBC10{ BC6 BC5 VBC4 VBC3 vd} BC7 vd FU11{ m}[6] Fs}


 S19016C17 ::~S19016C17(){ note_dtor("S19016C17", this);}
S19016C17 ::S19016C17(){ note_ctor("S19016C17", this);} // tgen

static void Test_S19016C17()
{
  extern Class_Descriptor cd_S19016C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19016C17, buf);
    S19016C17 *dp, &lv = *(dp=new (buf) S19016C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19016C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C17)");
    check_base_class_offset(lv, (S2014C24*), 0, "S19016C17");
    check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C17");
    check_base_class_offset(lv, (S2014C38*)(S19016C15*), 0, "S19016C17");
    /*is_ambiguous_... S19016C17::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(48,28), "S19016C17");
    check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(48,28), "S19016C17");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(60,36), "S19016C17");
    check_base_class_offset(lv, (S19016C9*), ABISELECT(24,16), "S19016C17");
    check_base_class_offset(lv, (S19016C9*)(S19016C15*), ABISELECT(24,16), "S19016C17");
    check_base_class_offset(lv, (S2014C21*), 0, "S19016C17");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*), ABISELECT(73,45), "S19016C17");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*), ABISELECT(64,40), "S19016C17");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*), ABISELECT(64,40), "S19016C17");
    check_base_class_offset(lv, (S19016C15*), ABISELECT(64,40), "S19016C17");
    /*is_ambiguous_... S19016C17::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(8,4), "S19016C17");
    check_field_offset(lv, s19016c17f0, ABISELECT(12,8), "S19016C17.s19016c17f0");
    check_field_offset(lv, s19016c17f1, ABISELECT(18,14), "S19016C17.s19016c17f1");
    test_class_info(&lv, &cd_S19016C17);
    dp->~S19016C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C17(Test_S19016C17, "S19016C17", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S19016C17C1Ev();
extern void _ZN9S19016C17D2Ev();
Name_Map name_map_S19016C17[] = {
  NSPAIR(_ZN9S19016C17C1Ev),
  NSPAIR(_ZN9S19016C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19016C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(48,28), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    5, //immediately_derived
  0, 1},
  {&cd_S19016C9,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19016C5,    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
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19016C15,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3222C8_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 _ZTI9S19016C17[];
extern void _ZN9S19016C17D1Ev();
extern void _ZN9S19016C17D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19016C17D1Ev,_ZTv0_n24_N9S19016C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19016C17D1Ev,_ZThn16_N9S19016C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C17D0Ev,_ZTv0_n24_N9S19016C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19016C17D0Ev,_ZThn16_N9S19016C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C17D1Ev,_ZTv0_n12_N9S19016C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S19016C17D1Ev,_ZThn28_N9S19016C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C17D0Ev,_ZTv0_n12_N9S19016C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S19016C17D0Ev,_ZThn28_N9S19016C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19016C17D1Ev,_ZThn40_N9S19016C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19016C17D0Ev,_ZThn40_N9S19016C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C17[] = {
  ABISELECT(64,40),
  ABISELECT(60,36),
  ABISELECT(48,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&_ZN9S19016C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C17D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C17D1Ev,_ZTv0_n24_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C17D0Ev,_ZTv0_n24_N9S19016C17D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C17D1Ev,_ZTv0_n12_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C17D0Ev,_ZTv0_n12_N9S19016C17D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19016C17[];
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C17[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__9S19016C17[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C15__9S19016C17[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C15__9S19016C17[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C15__9S19016C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
static  VTT_ENTRY vtt_S19016C17[] = {
  {&(_ZTV9S19016C17[8]),  8,32},
  {&(_ZTV9S19016C17[16]),  16,32},
  {&(_ZTV9S19016C17[21]),  21,32},
  {&(_ZTV9S19016C17[30]),  30,32},
  {&(_tg__ZTV8S19016C9__9S19016C17[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__9S19016C17[3]),  3,5},
  {&(_tg__ZTV9S19016C15__9S19016C17[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C15__9S19016C17[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C15__9S19016C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19016C17[];
extern  VTBL_ENTRY _ZTV9S19016C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C17[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D0Ev,_ZThn12_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19016C9D1Ev,_ZThn12_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C17D0Ev,_ZThn40_N9S19016C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19016C17D1Ev,_ZThn40_N9S19016C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C17D0Ev,_ZTv0_n12_N9S19016C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C17D0Ev,_ZThn28_N9S19016C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C17D1Ev,_ZTv0_n12_N9S19016C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C17D1Ev,_ZThn28_N9S19016C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C17D0Ev,_ZTv0_n24_N9S19016C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19016C17D0Ev,_ZThn16_N9S19016C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C17D1Ev,_ZTv0_n24_N9S19016C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19016C17D1Ev,_ZThn16_N9S19016C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C17 = {  "S19016C17", // class name
  bases_S19016C17, 12,
  &(vtc_S19016C17[0]), // expected_vtbl_contents
  &(vtt_S19016C17[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S19016C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19016C17),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19016C17),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19016C1  : virtual S19016C2 , virtual S19016C8 , virtual S19016C17 {
  virtual  ~S19016C1(); // _ZN8S19016C1D2Ev
  virtual void  v1(); // _ZN8S19016C12v1Ev
  S19016C1(); // tgen
};
//SIG(1 S19016C1) C1{ VBC2{ BC3{ BC4{ m} BC5{ BC6{ m} vd FC6} BC6 BC7{ m Fi} Fs:16 Fl} BC5 Fi} VBC8{ BC9{ VBC4 VBC5 VBC7 vd Fp FC10{}} BC11{ VBC12{ BC13{ VBC5 FL} VBC4 VBC7 VBC9 VBC2 vd Fl FC13} BC14{ VBC9 BC15{ BC6 BC5 VBC4 VBC9 vd} VBC6 vd FC7[6]} BC16{ VBC13 VBC7 Fc:1} BC9} Fl} VBC17{ VBC18{ m} VBC9 BC19{ m} VBC15 BC7 vd FU20{ m}[6] Fs} vd v1}


 S19016C1 ::~S19016C1(){ note_dtor("S19016C1", this);}
void  S19016C1 ::v1(){vfunc_called(this, "_ZN8S19016C12v1Ev");}
S19016C1 ::S19016C1(){ note_ctor("S19016C1", this);} // tgen

static void Test_S19016C1()
{
  extern Class_Descriptor cd_S19016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,51)];
    init_test(&cd_S19016C1, buf);
    S19016C1 *dp, &lv = *(dp=new (buf) S19016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,200), "sizeof(S19016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19016C1)");
    check_base_class_offset(lv, (S2014C38*)(S19016C3*)(S19016C2*), ABISELECT(8,4), "S19016C1");
    check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(8,4), "S19016C1");
    check_base_class_offset(lv, (S19016C5*)(S19016C3*)(S19016C2*), ABISELECT(8,4), "S19016C1");
    /*is_ambiguous_... S19016C3::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C3*)(S19016C2*), ABISELECT(17,9), "S19016C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C3*)(S19016C2*), ABISELECT(20,12), "S19016C1");
    check_base_class_offset(lv, (S19016C3*)(S19016C2*), ABISELECT(8,4), "S19016C1");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C2*), ABISELECT(40,24), "S19016C1");
    /*is_ambiguous_... S19016C2::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C2*), ABISELECT(40,24), "S19016C1");
    check_base_class_offset(lv, (S19016C2*), ABISELECT(8,4), "S19016C1");
    check_base_class_offset(lv, (S19016C2*)(S19016C12*), ABISELECT(8,4), "S19016C1");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*)(S19016C8*), 0, "S19016C1");
    /*is_ambiguous_... S19016C12::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C12*), 0, "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*), 0, "S19016C1");
    check_base_class_offset(lv, (S2014C38*)(S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), 0, "S19016C1");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C9*)(S19016C11*)(S19016C8*), 0, "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19016C15*), 0, "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*), ABISELECT(168,104), "S19016C1");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*)(S19016C8*), ABISELECT(168,104), "S19016C1");
    check_base_class_offset(lv, (S19016C5*)(S19016C13*)(S19016C12*), ABISELECT(168,104), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*), ABISELECT(168,104), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C13 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C13*), ABISELECT(168,104), "S19016C1");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C9*)(S19016C11*)(S19016C8*), ABISELECT(168,104), "S19016C1");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*)(S19016C8*), ABISELECT(180,112), "S19016C1");
    /*is_ambiguous_... S19016C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C12*), ABISELECT(180,112), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*), ABISELECT(180,112), "S19016C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19016C16*)(S19016C11*)(S19016C8*), ABISELECT(180,112), "S19016C1");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C9*)(S19016C11*)(S19016C8*), ABISELECT(180,112), "S19016C1");
    /*is_ambiguous_... S19016C8::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C9*)(S19016C8*), ABISELECT(56,36), "S19016C1");
    check_base_class_offset(lv, (S19016C13*)(S19016C12*), ABISELECT(184,116), "S19016C1");
    check_base_class_offset(lv, (S19016C9*)(S19016C12*), ABISELECT(240,152), "S19016C1");
    check_base_class_offset(lv, (S19016C9*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(240,152), "S19016C1");
    check_base_class_offset(lv, (S19016C9*)(S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(240,152), "S19016C1");
    check_base_class_offset(lv, (S19016C9*)(S19016C17*), ABISELECT(240,152), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C15 */ AMB_check_base_class_offset(lv, (S19016C9*)(S19016C15*), ABISELECT(240,152), "S19016C1");
    check_base_class_offset(lv, (S19016C12*)(S19016C11*)(S19016C8*), ABISELECT(184,116), "S19016C1");
    /*is_ambiguous_... S19016C15::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(89,53), "S19016C1");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(80,48), "S19016C1");
    /*is_ambiguous_... S19016C15::S19016C5 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(80,48), "S19016C1");
    check_base_class_offset(lv, (S19016C15*)(S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(80,48), "S19016C1");
    /*is_ambiguous_... S19016C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C14*)(S19016C11*)(S19016C8*), 0, "S19016C1");
    check_base_class_offset(lv, (S19016C14*)(S19016C11*)(S19016C8*), ABISELECT(80,48), "S19016C1");
    check_base_class_offset(lv, (S19016C13*)(S19016C16*)(S19016C11*)(S19016C8*), ABISELECT(264,164), "S19016C1");
    check_base_class_offset(lv, (S19016C16*)(S19016C11*)(S19016C8*), ABISELECT(120,80), "S19016C1");
    /*is_ambiguous_... S19016C11::S19016C9 */ AMB_check_base_class_offset(lv, (S19016C9*)(S19016C11*)(S19016C8*), ABISELECT(136,88), "S19016C1");
    check_base_class_offset(lv, (S19016C11*)(S19016C8*), ABISELECT(80,48), "S19016C1");
    check_base_class_offset(lv, (S19016C8*), ABISELECT(56,36), "S19016C1");
    check_base_class_offset(lv, (S2014C24*)(S19016C17*), 0, "S19016C1");
    check_base_class_offset(lv, (S2014C21*)(S19016C17*), ABISELECT(280,176), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C15*), ABISELECT(313,197), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19016C5*)(S19016C15*), ABISELECT(304,192), "S19016C1");
    /*is_ambiguous_... S19016C1::S19016C15 */ AMB_check_base_class_offset(lv, (S19016C5*)(S19016C15*), ABISELECT(304,192), "S19016C1");
    check_base_class_offset(lv, (S19016C15*)(S19016C17*), ABISELECT(304,192), "S19016C1");
    /*is_ambiguous_... S19016C17::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19016C17*), ABISELECT(288,180), "S19016C1");
    check_base_class_offset(lv, (S19016C17*), ABISELECT(280,176), "S19016C1");
    test_class_info(&lv, &cd_S19016C1);
    dp->~S19016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19016C1(Test_S19016C1, "S19016C1", ABISELECT(320,200));

#else // __cplusplus

extern void _ZN8S19016C1C1Ev();
extern void _ZN8S19016C1D2Ev();
Name_Map name_map_S19016C1[] = {
  NSPAIR(_ZN8S19016C1C1Ev),
  NSPAIR(_ZN8S19016C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C3;
extern VTBL_ENTRY _ZTI8S19016C3[];
extern  VTBL_ENTRY _ZTV8S19016C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C2;
extern VTBL_ENTRY _ZTI8S19016C2[];
extern  VTBL_ENTRY _ZTV8S19016C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S19016C12;
extern VTBL_ENTRY _ZTI9S19016C12[];
extern  VTBL_ENTRY _ZTV9S19016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C14;
extern VTBL_ENTRY _ZTI9S19016C14[];
extern  VTBL_ENTRY _ZTV9S19016C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C14[];
extern Class_Descriptor cd_S19016C13;
extern VTBL_ENTRY _ZTI9S19016C13[];
extern  VTBL_ENTRY _ZTV9S19016C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C13[];
extern Class_Descriptor cd_S19016C16;
extern VTBL_ENTRY _ZTI9S19016C16[];
extern  VTBL_ENTRY _ZTV9S19016C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C16[];
extern Class_Descriptor cd_S19016C9;
extern VTBL_ENTRY _ZTI8S19016C9[];
extern  VTBL_ENTRY _ZTV8S19016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C9[];
extern Class_Descriptor cd_S19016C11;
extern VTBL_ENTRY _ZTI9S19016C11[];
extern  VTBL_ENTRY _ZTV9S19016C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C11[];
extern Class_Descriptor cd_S19016C8;
extern VTBL_ENTRY _ZTI8S19016C8[];
extern  VTBL_ENTRY _ZTV8S19016C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C8[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19016C5;
extern VTBL_ENTRY _ZTI8S19016C5[];
extern  VTBL_ENTRY _ZTV8S19016C5[];
extern Class_Descriptor cd_S19016C15;
extern VTBL_ENTRY _ZTI9S19016C15[];
extern  VTBL_ENTRY _ZTV9S19016C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C15[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19016C17;
extern VTBL_ENTRY _ZTI9S19016C17[];
extern  VTBL_ENTRY _ZTV9S19016C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19016C17[];
static Base_Class bases_S19016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C28,    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_S19016C5,    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_S2014C28,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(20,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
    5, //immediately_derived
  0, 0},
  {&cd_S19016C3,    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
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(40,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //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
    8, //immediately_derived
  0, 0},
  {&cd_S19016C2,    ABISELECT(8,4), //bcp->offset
    17, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(168,104), //bcp->offset
    65, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(180,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
    13, //immediately_derived
  0, 1},
  {&cd_S19016C9,    ABISELECT(56,36), //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
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19016C13,    ABISELECT(184,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19016C9,    ABISELECT(240,152), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19016C12,    ABISELECT(184,116), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S2014C28,    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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19016C5,    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
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19016C15,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19016C14,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C13,    ABISELECT(264,164), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19016C16,    ABISELECT(120,80), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C9,    ABISELECT(136,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19016C11,    ABISELECT(80,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19016C8,    ABISELECT(56,36), //bcp->offset
    26, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S2014C21,    ABISELECT(280,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
    35, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(313,197), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(304,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
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19016C5,    ABISELECT(304,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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19016C15,    ABISELECT(304,192), //bcp->offset
    105, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(288,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
    35, //immediately_derived
  0, 0},
  {&cd_S19016C17,    ABISELECT(280,176), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19016C1[];
extern void _ZN8S19016C1D1Ev();
extern void _ZN8S19016C1D0Ev();
extern void _ZN8S19016C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S19016C1D1Ev,_ZTv0_n12_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19016C1D1Ev,_ZThn4_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C1D0Ev,_ZTv0_n12_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19016C1D0Ev,_ZThn4_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19016C1D1Ev,_ZTvn20_n12_N8S19016C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19016C1D0Ev,_ZTvn20_n12_N8S19016C1D0Ev)();
extern void ABISELECT(_ZTv0_n88_N8S19016C1D1Ev,_ZTv0_n44_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19016C1D1Ev,_ZThn36_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19016C1D0Ev,_ZTv0_n44_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19016C1D0Ev,_ZThn36_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n88_N8S19016C1D1Ev,_ZTvn12_n44_N8S19016C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19016C1D0Ev,_ZTvn12_n44_N8S19016C1D0Ev)();
extern void ABISELECT(_ZTvn64_n88_N8S19016C1D1Ev,_ZTvn44_n44_N8S19016C1D1Ev)();
extern void ABISELECT(_ZTvn64_n88_N8S19016C1D0Ev,_ZTvn44_n44_N8S19016C1D0Ev)();
extern void ABISELECT(_ZTvn80_n88_N8S19016C1D1Ev,_ZTvn52_n44_N8S19016C1D1Ev)();
extern void ABISELECT(_ZTvn80_n88_N8S19016C1D0Ev,_ZTvn52_n44_N8S19016C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C1D1Ev,_ZTv0_n12_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19016C1D1Ev,_ZThn104_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C1D0Ev,_ZTv0_n12_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19016C1D0Ev,_ZThn104_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19016C1D1Ev,_ZTv0_n32_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19016C1D1Ev,_ZThn116_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19016C1D0Ev,_ZTv0_n32_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S19016C1D0Ev,_ZThn116_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19016C1D1Ev,_ZTv0_n24_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19016C1D1Ev,_ZThn152_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19016C1D0Ev,_ZTv0_n24_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19016C1D0Ev,_ZThn152_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19016C1D1Ev,_ZTv0_n16_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S19016C1D1Ev,_ZThn164_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19016C1D0Ev,_ZTv0_n16_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S19016C1D0Ev,_ZThn164_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19016C1D1Ev,_ZTv0_n36_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S19016C1D1Ev,_ZThn176_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19016C1D0Ev,_ZTv0_n36_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S19016C1D0Ev,_ZThn176_N8S19016C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19016C1D1Ev,_ZTv0_n28_N8S19016C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19016C1D1Ev,_ZThn192_N8S19016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19016C1D0Ev,_ZTv0_n28_N8S19016C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19016C1D0Ev,_ZThn192_N8S19016C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19016C1[] = {
  ABISELECT(304,192),
  0,
  ABISELECT(280,176),
  ABISELECT(264,164),
  0,
  ABISELECT(240,152),
  ABISELECT(184,116),
  ABISELECT(180,112),
  ABISELECT(168,104),
  0,
  ABISELECT(56,36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&_ZN8S19016C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19016C12v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C1D1Ev,_ZTv0_n12_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C1D0Ev,_ZTv0_n12_N8S19016C1D0Ev),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C1D1Ev,_ZTvn20_n12_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C1D0Ev,_ZTvn20_n12_N8S19016C1D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(208,128),
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(184,116),
  ABISELECT(128,80),
  ABISELECT(124,76),
  ABISELECT(112,68),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19016C1D1Ev,_ZTv0_n44_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19016C1D0Ev,_ZTv0_n44_N8S19016C1D0Ev),
  ABISELECT(184,116),
  ABISELECT(-72,-44),
  ABISELECT(104,68),
  ABISELECT(-80,-48),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19016C1D1Ev,_ZTvn12_n44_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19016C1D0Ev,_ZTvn12_n44_N8S19016C1D0Ev),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(144,84),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N8S19016C1D1Ev,_ZTvn44_n44_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N8S19016C1D0Ev,_ZTvn44_n44_N8S19016C1D0Ev),
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n88_N8S19016C1D1Ev,_ZTvn52_n44_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n88_N8S19016C1D0Ev,_ZTvn52_n44_N8S19016C1D0Ev),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C1D1Ev,_ZTv0_n12_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C1D0Ev,_ZTv0_n12_N8S19016C1D0Ev),
  ABISELECT(-184,-116),
  ABISELECT(-176,-112),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-116),
  ABISELECT(-16,-12),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C1D1Ev,_ZTv0_n32_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C1D0Ev,_ZTv0_n32_N8S19016C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C1D1Ev,_ZTv0_n24_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C1D0Ev,_ZTv0_n24_N8S19016C1D0Ev),
  ABISELECT(-264,-164),
  ABISELECT(-96,-60),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C1D1Ev,_ZTv0_n16_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C1D0Ev,_ZTv0_n16_N8S19016C1D0Ev),
  ABISELECT(-280,-176),
  ABISELECT(24,16),
  ABISELECT(-100,-64),
  ABISELECT(-112,-72),
  ABISELECT(-280,-176),
  ABISELECT(-40,-24),
  ABISELECT(-280,-176),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19016C1D1Ev,_ZTv0_n36_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19016C1D0Ev,_ZTv0_n36_N8S19016C1D0Ev),
  ABISELECT(-304,-192),
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-192),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI8S19016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19016C1D1Ev,_ZTv0_n28_N8S19016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19016C1D0Ev,_ZTv0_n28_N8S19016C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19016C1[];
extern void _ZN8S19016C8D1Ev();
extern void _ZN8S19016C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C8__8S19016C1[] = {
  ABISELECT(208,128),
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(184,116),
  ABISELECT(128,80),
  ABISELECT(124,76),
  ABISELECT(112,68),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&_ZN8S19016C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C8D0Ev,
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C98S19016C8__8S19016C1[] = {
  ABISELECT(124,76),
  ABISELECT(112,68),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19016C9D1Ev,_ZThn68_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S19016C9D0Ev,_ZThn68_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C98S19016C8__8S19016C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C11D1Ev();
extern void _ZN9S19016C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(184,116),
  ABISELECT(-72,-44),
  ABISELECT(104,68),
  ABISELECT(-80,-48),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&_ZN9S19016C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C11D0Ev,
};
extern void _ZN9S19016C14D1Ev();
extern void _ZN9S19016C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&_ZN9S19016C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C14D0Ev,
};
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C159S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C15D1Ev,_ZThn104_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C15D0Ev,_ZThn104_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C159S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C15D1Ev,_ZThn56_N9S19016C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C15D0Ev,_ZThn56_N9S19016C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C159S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C14D1Ev,_ZThn104_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C14D0Ev,_ZThn104_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C14D1Ev,_ZThn56_N9S19016C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C14D0Ev,_ZThn56_N9S19016C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C149S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev),
};
extern void _ZN9S19016C16D1Ev();
extern void _ZN9S19016C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C169S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&_ZN9S19016C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn144_N9S19016C16D1Ev,_ZThn84_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn144_N9S19016C16D0Ev,_ZThn84_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__9S19016C169S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-96,-60),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S19016C16D1Ev,_ZThn24_N9S19016C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S19016C16D0Ev,_ZThn24_N9S19016C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C169S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19016C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C99S19016C118S19016C8__A2__8S19016C1[] = {
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19016C9D1Ev,_ZThn16_N8S19016C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19016C9D0Ev,_ZThn16_N8S19016C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C99S19016C118S19016C8__A2__8S19016C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S19016C11D1Ev,_ZThn68_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S19016C11D0Ev,_ZThn68_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C12__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-176,-112),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-116),
  ABISELECT(-16,-12),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S19016C11D1Ev,_ZThn56_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S19016C11D0Ev,_ZThn56_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S19016C11D1Ev,_ZThn104_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S19016C11D0Ev,_ZThn104_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C2__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D1Ev,_ZTvn20_n12_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C11D0Ev,_ZTvn20_n12_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19016C16__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(144,84),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D1Ev,_ZThn32_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19016C11D0Ev,_ZThn32_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S19016C11D1Ev,_ZThn116_N9S19016C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S19016C11D0Ev,_ZThn116_N9S19016C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-96,-60),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A__9S19016C118S19016C8__8S19016C1[] = {
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19016C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D1Ev,_ZThn40_N9S19016C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19016C11D0Ev,_ZThn40_N9S19016C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19016C8D1Ev,_ZThn68_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19016C8D0Ev,_ZThn68_N8S19016C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C8__8S19016C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZThn24_N8S19016C8D1Ev,_ZThn12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19016C8D0Ev,_ZThn12_N8S19016C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19016C11__8S19016C8__8S19016C1[] = {
  ABISELECT(184,116),
  ABISELECT(-72,-44),
  ABISELECT(104,68),
  ABISELECT(-80,-48),
  ABISELECT(100,64),
  ABISELECT(88,56),
  ABISELECT(160,104),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19016C8D1Ev,_ZThn12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19016C8D0Ev,_ZThn12_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19016C8D1Ev,_ZThn80_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19016C8D0Ev,_ZThn80_N8S19016C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C12__8S19016C8__8S19016C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-176,-112),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-116),
  ABISELECT(-16,-12),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S19016C8D1Ev,_ZThn116_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S19016C8D0Ev,_ZThn116_N8S19016C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__A1__8S19016C8__8S19016C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C2__8S19016C8__8S19016C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19016C8D1Ev,_ZTvn20_n12_N8S19016C8D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19016C8D0Ev,_ZTvn20_n12_N8S19016C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__8S19016C8__8S19016C1[] = {
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C8D1Ev,_ZTvn20_n12_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19016C8D0Ev,_ZTvn20_n12_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19016C8D1Ev,_ZThn44_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19016C8D0Ev,_ZThn44_N8S19016C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19016C169S19016C11__8S19016C8__8S19016C1[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(144,84),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19016C8D1Ev,_ZThn44_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19016C8D0Ev,_ZThn44_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn208_N8S19016C8D1Ev,_ZThn128_N8S19016C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev)();
extern void ABISELECT(_ZThn208_N8S19016C8D0Ev,_ZThn128_N8S19016C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__8S19016C8__8S19016C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev),
};
extern void ABISELECT(_ZThn80_N8S19016C8D1Ev,_ZThn52_N8S19016C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19016C8D0Ev,_ZThn52_N8S19016C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C99S19016C11__A2__8S19016C8__8S19016C1[] = {
  ABISELECT(44,24),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19016C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19016C8D1Ev,_ZThn52_N8S19016C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S19016C8D0Ev,_ZThn52_N8S19016C8D0Ev),
};
extern void _ZN9S19016C12D1Ev();
extern void _ZN9S19016C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C12__8S19016C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(56,36),
  ABISELECT(-4,-4),
  ABISELECT(-184,-116),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&_ZN9S19016C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C12D0Ev,
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C139S19016C12__8S19016C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C139S19016C12__8S19016C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C12__8S19016C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C12__8S19016C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C2__9S19016C12__8S19016C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D1Ev,_ZTv0_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C12D0Ev,_ZTv0_n12_N9S19016C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C58S19016C2__A2__9S19016C12__8S19016C1[] = {
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S19016C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D1Ev,_ZTvn20_n12_N9S19016C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19016C12D0Ev,_ZTvn20_n12_N9S19016C12D0Ev),
};
extern void _ZN8S19016C9D1Ev();
extern void _ZN8S19016C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19016C9__A1__8S19016C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&_ZN8S19016C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19016C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__8S19016C9__A1__8S19016C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19016C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev),
};
extern void _ZN9S19016C13D1Ev();
extern void _ZN9S19016C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C13__A1__8S19016C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&_ZN9S19016C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C13__A1__8S19016C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S19016C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D1Ev,_ZTv0_n12_N9S19016C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C13D0Ev,_ZTv0_n12_N9S19016C13D0Ev),
};
extern void _ZN9S19016C17D1Ev();
extern void _ZN9S19016C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C17__8S19016C1[] = {
  ABISELECT(24,16),
  ABISELECT(-100,-64),
  ABISELECT(-112,-72),
  ABISELECT(-280,-176),
  ABISELECT(-40,-24),
  ABISELECT(-280,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&_ZN9S19016C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C17D1Ev,_ZTv0_n24_N9S19016C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19016C17D0Ev,_ZTv0_n24_N9S19016C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C17__8S19016C1[] = {
  ABISELECT(40,24),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C17D1Ev,_ZTv0_n24_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C17D0Ev,_ZTv0_n24_N9S19016C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C17D1Ev,_ZTv0_n12_N9S19016C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C17D0Ev,_ZTv0_n12_N9S19016C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__9S19016C17__8S19016C1[] = {
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C17D1Ev,_ZTv0_n12_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C17D0Ev,_ZTv0_n12_N9S19016C17D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev)();
extern void ABISELECT(_ZThn24_N9S19016C17D1Ev,_ZThn16_N9S19016C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev)();
extern void ABISELECT(_ZThn24_N9S19016C17D0Ev,_ZThn16_N9S19016C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19016C15__9S19016C17__8S19016C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-192),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19016C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev),
};
extern void _ZN9S19016C15D1Ev();
extern void _ZN9S19016C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19016C15__A1__8S19016C1[] = {
  ABISELECT(-124,-80),
  ABISELECT(-136,-88),
  ABISELECT(-64,-40),
  ABISELECT(-304,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&_ZN9S19016C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19016C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C9__9S19016C15__A1__8S19016C1[] = {
  ABISELECT(64,40),
  ABISELECT(-60,-40),
  ABISELECT(-72,-48),
  ABISELECT(-240,-152),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19016C5__A1__9S19016C15__A1__8S19016C1[] = {
  ABISELECT(136,88),
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S19016C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev),
};
static  VTT_ENTRY vtt_S19016C1[] = {
  {&(_ZTV8S19016C1[14]),  14,114},
  {&(_ZTV8S19016C1[20]),  20,114},
  {&(_ZTV8S19016C1[24]),  24,114},
  {&(_ZTV8S19016C1[37]),  37,114},
  {&(_ZTV8S19016C1[68]),  68,114},
  {&(_ZTV8S19016C1[49]),  49,114},
  {&(_ZTV8S19016C1[78]),  78,114},
  {&(_ZTV8S19016C1[86]),  86,114},
  {&(_ZTV8S19016C1[56]),  56,114},
  {&(_ZTV8S19016C1[92]),  92,114},
  {&(_ZTV8S19016C1[63]),  63,114},
  {&(_ZTV8S19016C1[103]),  103,114},
  {&(_ZTV8S19016C1[112]),  112,114},
  {&(_tg__ZTV8S19016C8__8S19016C1[10]),  10,12},
  {&(_tg__ZTV8S19016C98S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C98S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C118S19016C8__8S19016C1[10]),  10,12},
  {&(_tg__ZTV9S19016C149S19016C118S19016C8__8S19016C1[7]),  7,9},
  {&(_tg__ZTV9S19016C159S19016C149S19016C118S19016C8__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C159S19016C149S19016C118S19016C8__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C159S19016C149S19016C118S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C149S19016C118S19016C8__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C5__9S19016C149S19016C118S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C169S19016C118S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV9S19016C13__9S19016C169S19016C118S19016C8__8S19016C1[4]),  4,6},
  {&(_tg__ZTV8S19016C5__9S19016C169S19016C118S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C99S19016C118S19016C8__A2__8S19016C1[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C99S19016C118S19016C8__A2__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C12__9S19016C118S19016C8__8S19016C1[8]),  8,10},
  {&(_tg__ZTV8S19016C5__9S19016C118S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C118S19016C8__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C2__9S19016C118S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__9S19016C118S19016C8__8S19016C1[2]),  2,4},
  {&(_tg__ZTV9S19016C16__9S19016C118S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV9S19016C13__A1__9S19016C118S19016C8__8S19016C1[4]),  4,6},
  {&(_tg__ZTV8S19016C9__A__9S19016C118S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C11__8S19016C8__8S19016C1[10]),  10,12},
  {&(_tg__ZTV9S19016C12__8S19016C8__8S19016C1[8]),  8,10},
  {&(_tg__ZTV8S19016C9__A1__8S19016C8__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C2__8S19016C8__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__8S19016C8__8S19016C1[2]),  2,4},
  {&(_tg__ZTV9S19016C169S19016C11__8S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV9S19016C13__A1__8S19016C8__8S19016C1[4]),  4,6},
  {&(_tg__ZTV8S19016C99S19016C11__A2__8S19016C8__8S19016C1[5]),  5,7},
  {&(_tg__ZTV9S19016C12__8S19016C1[7]),  7,9},
  {&(_tg__ZTV9S19016C139S19016C12__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C139S19016C12__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C12__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C9__9S19016C12__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C2__9S19016C12__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C58S19016C2__A2__9S19016C12__8S19016C1[2]),  2,4},
  {&(_tg__ZTV8S19016C9__A1__8S19016C1[5]),  5,7},
  {&(_tg__ZTV8S19016C5__8S19016C9__A1__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C13__A1__8S19016C1[3]),  3,5},
  {&(_tg__ZTV8S19016C5__9S19016C13__A1__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C17__8S19016C1[8]),  8,10},
  {&(_tg__ZTV8S19016C9__9S19016C17__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C5__9S19016C17__8S19016C1[3]),  3,5},
  {&(_tg__ZTV9S19016C15__9S19016C17__8S19016C1[7]),  7,9},
  {&(_tg__ZTV9S19016C15__A1__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C9__9S19016C15__A1__8S19016C1[6]),  6,8},
  {&(_tg__ZTV8S19016C5__A1__9S19016C15__A1__8S19016C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19016C1[];
extern  VTBL_ENTRY _ZTV8S19016C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19016C1[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19016C17D0Ev,_ZTv0_n28_N9S19016C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19016C17D0Ev,_ZThn16_N9S19016C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19016C17D1Ev,_ZTv0_n28_N9S19016C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19016C17D1Ev,_ZThn16_N9S19016C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D0Ev,_ZTv0_n24_N9S19016C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D0Ev,_ZThn36_N9S19016C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C12D1Ev,_ZTv0_n24_N9S19016C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19016C12D1Ev,_ZThn36_N9S19016C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C8D0Ev,_ZTv0_n16_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19016C8D0Ev,_ZThn128_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C8D1Ev,_ZTv0_n16_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19016C8D1Ev,_ZThn128_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C8D0Ev,_ZTv0_n24_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C8D0Ev,_ZThn116_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C8D1Ev,_ZTv0_n24_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C8D1Ev,_ZThn116_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C8D0Ev,_ZTv0_n32_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19016C8D0Ev,_ZThn80_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C8D1Ev,_ZTv0_n32_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19016C8D1Ev,_ZThn80_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C8D0Ev,_ZTv0_n12_N8S19016C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C8D0Ev,_ZThn68_N8S19016C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C8D1Ev,_ZTv0_n12_N8S19016C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C8D1Ev,_ZThn68_N8S19016C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D0Ev,_ZTv0_n16_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C11D0Ev,_ZThn116_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C11D1Ev,_ZTv0_n16_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19016C11D1Ev,_ZThn116_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D0Ev,_ZTv0_n24_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C11D0Ev,_ZThn104_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C11D1Ev,_ZTv0_n24_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C11D1Ev,_ZThn104_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D0Ev,_ZTv0_n12_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C11D0Ev,_ZThn56_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C11D1Ev,_ZTv0_n12_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C11D1Ev,_ZThn56_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D0Ev,_ZTv0_n32_N9S19016C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19016C11D0Ev,_ZThn68_N9S19016C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19016C11D1Ev,_ZTv0_n32_N9S19016C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19016C11D1Ev,_ZThn68_N9S19016C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D0Ev,_ZTv0_n12_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C16D0Ev,_ZThn24_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C16D1Ev,_ZTv0_n12_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19016C16D1Ev,_ZThn24_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D0Ev,_ZTv0_n16_N9S19016C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19016C16D0Ev,_ZThn84_N9S19016C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19016C16D1Ev,_ZTv0_n16_N9S19016C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19016C16D1Ev,_ZThn84_N9S19016C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D0Ev,_ZTv0_n12_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C14D0Ev,_ZThn56_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C14D1Ev,_ZTv0_n12_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C14D1Ev,_ZThn56_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D0Ev,_ZTv0_n24_N9S19016C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C14D0Ev,_ZThn104_N9S19016C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C14D1Ev,_ZTv0_n24_N9S19016C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C14D1Ev,_ZThn104_N9S19016C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D0Ev,_ZTv0_n12_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C15D0Ev,_ZThn56_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19016C15D1Ev,_ZTv0_n12_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19016C15D1Ev,_ZThn56_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D0Ev,_ZTv0_n24_N9S19016C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C15D0Ev,_ZThn104_N9S19016C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19016C15D1Ev,_ZTv0_n24_N9S19016C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19016C15D1Ev,_ZThn104_N9S19016C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D0Ev,_ZTv0_n12_N8S19016C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19016C9D0Ev,_ZThn16_N8S19016C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C9D0Ev,_ZThn68_N8S19016C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C9D1Ev,_ZTv0_n12_N8S19016C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19016C9D1Ev,_ZThn16_N8S19016C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19016C9D1Ev,_ZThn68_N8S19016C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19016C1D0Ev,_ZTv0_n28_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19016C1D0Ev,_ZThn192_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19016C1D1Ev,_ZTv0_n28_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19016C1D1Ev,_ZThn192_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19016C1D0Ev,_ZTv0_n36_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19016C1D0Ev,_ZThn176_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19016C1D1Ev,_ZTv0_n36_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19016C1D1Ev,_ZThn176_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C1D0Ev,_ZTv0_n16_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19016C1D0Ev,_ZThn164_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19016C1D1Ev,_ZTv0_n16_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19016C1D1Ev,_ZThn164_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C1D0Ev,_ZTv0_n24_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19016C1D0Ev,_ZThn152_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19016C1D1Ev,_ZTv0_n24_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19016C1D1Ev,_ZThn152_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C1D0Ev,_ZTv0_n32_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C1D0Ev,_ZThn116_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19016C1D1Ev,_ZTv0_n32_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19016C1D1Ev,_ZThn116_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19016C1D0Ev,_ZTv0_n44_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19016C1D0Ev,_ZThn36_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19016C1D1Ev,_ZTv0_n44_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19016C1D1Ev,_ZThn36_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C1D0Ev,_ZTv0_n12_N8S19016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19016C1D0Ev,_ZThn104_N8S19016C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19016C1D0Ev,_ZThn4_N8S19016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19016C1D1Ev,_ZTv0_n12_N8S19016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19016C1D1Ev,_ZThn104_N8S19016C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19016C1D1Ev,_ZThn4_N8S19016C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19016C1 = {  "S19016C1", // class name
  bases_S19016C1, 36,
  &(vtc_S19016C1[0]), // expected_vtbl_contents
  &(vtt_S19016C1[0]), // expected_vtt_contents
  ABISELECT(320,200), // object size
  NSPAIRA(_ZTI8S19016C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19016C1),114, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19016C1),63, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C5  : S2014C38 {
  ::S2014C38 s7276c5f0;
  virtual  ~S7276C5(); // _ZN7S7276C5D1Ev
  S7276C5(); // tgen
};
//SIG(-1 S7276C5) C1{ BC2{ m} vd FC2}


 S7276C5 ::~S7276C5(){ note_dtor("S7276C5", this);}
S7276C5 ::S7276C5(){ note_ctor("S7276C5", this);} // tgen

static void Test_S7276C5()
{
  extern Class_Descriptor cd_S7276C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7276C5, buf);
    S7276C5 *dp, &lv = *(dp=new (buf) S7276C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7276C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C5)");
    check_base_class_offset(lv, (S2014C38*), 0, "S7276C5");
    check_field_offset(lv, s7276c5f0, ABISELECT(8,4), "S7276C5.s7276c5f0");
    test_class_info(&lv, &cd_S7276C5);
    dp->~S7276C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C5(Test_S7276C5, "S7276C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7276C5C1Ev();
extern void _ZN7S7276C5D1Ev();
Name_Map name_map_S7276C5[] = {
  NSPAIR(_ZN7S7276C5C1Ev),
  NSPAIR(_ZN7S7276C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S7276C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7276C5[];
extern void _ZN7S7276C5D1Ev();
extern void _ZN7S7276C5D0Ev();
static  VTBL_ENTRY vtc_S7276C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C5[0]),
  (VTBL_ENTRY)&_ZN7S7276C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
Class_Descriptor cd_S7276C5 = {  "S7276C5", // class name
  bases_S7276C5, 1,
  &(vtc_S7276C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7276C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7276C5),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  S7276C7  : virtual S2014C28 , virtual S7276C5 , virtual S3222C8_nt {
  void *s7276c7f0;
  ::S19762C18_nt s7276c7f1;
  virtual  ~S7276C7(); // _ZN7S7276C7D2Ev
  S7276C7(); // tgen
};
//SIG(-1 S7276C7) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S7276C7 ::~S7276C7(){ note_dtor("S7276C7", this);}
S7276C7 ::S7276C7(){ note_ctor("S7276C7", this);} // tgen

static void Test_S7276C7()
{
  extern Class_Descriptor cd_S7276C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7276C7, buf);
    S7276C7 *dp, &lv = *(dp=new (buf) S7276C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7276C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C7)");
    check_base_class_offset(lv, (S2014C28*), 0, "S7276C7");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(24,12), "S7276C7");
    check_base_class_offset(lv, (S7276C5*), ABISELECT(24,12), "S7276C7");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S7276C7");
    check_field_offset(lv, s7276c7f0, ABISELECT(8,4), "S7276C7.s7276c7f0");
    check_field_offset(lv, s7276c7f1, ABISELECT(16,8), "S7276C7.s7276c7f1");
    test_class_info(&lv, &cd_S7276C7);
    dp->~S7276C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C7(Test_S7276C7, "S7276C7", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7276C7C1Ev();
extern void _ZN7S7276C7D2Ev();
Name_Map name_map_S7276C7[] = {
  NSPAIR(_ZN7S7276C7C1Ev),
  NSPAIR(_ZN7S7276C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7276C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7276C7[];
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C7[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7276C7[];
static  VTT_ENTRY vtt_S7276C7[] = {
  {&(_ZTV7S7276C7[5]),  5,12},
  {&(_ZTV7S7276C7[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C7 = {  "S7276C7", // class name
  bases_S7276C7, 4,
  &(vtc_S7276C7[0]), // expected_vtbl_contents
  &(vtt_S7276C7[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7276C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7276C7),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7276C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C3  : S2014C38 , S7276C5 , virtual S2014C28 , virtual S7276C7 {
  virtual  ~S7276C3(); // _ZN7S7276C3D2Ev
  S7276C3(); // tgen
};
//SIG(-1 S7276C3) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S7276C3 ::~S7276C3(){ note_dtor("S7276C3", this);}
S7276C3 ::S7276C3(){ note_ctor("S7276C3", this);} // tgen

static void Test_S7276C3()
{
  extern Class_Descriptor cd_S7276C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7276C3, buf);
    S7276C3 *dp, &lv = *(dp=new (buf) S7276C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7276C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C3)");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S7276C3");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), 0, "S7276C3");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*), 0, "S7276C3");
    check_base_class_offset(lv, (S2014C28*), 0, "S7276C3");
    check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C3");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(40,20), "S7276C3");
    check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(40,20), "S7276C3");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(52,28), "S7276C3");
    check_base_class_offset(lv, (S7276C7*), ABISELECT(16,8), "S7276C3");
    test_class_info(&lv, &cd_S7276C3);
    dp->~S7276C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C3(Test_S7276C3, "S7276C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7276C3C1Ev();
extern void _ZN7S7276C3D2Ev();
Name_Map name_map_S7276C3[] = {
  NSPAIR(_ZN7S7276C3C1Ev),
  NSPAIR(_ZN7S7276C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
static Base_Class bases_S7276C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI7S7276C3[];
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C3[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7276C3[];
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C3[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__7S7276C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
static  VTT_ENTRY vtt_S7276C3[] = {
  {&(_ZTV7S7276C3[6]),  6,21},
  {&(_ZTV7S7276C3[14]),  14,21},
  {&(_ZTV7S7276C3[19]),  19,21},
  {&(_tg__ZTV7S7276C7__7S7276C3[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__7S7276C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C3 = {  "S7276C3", // class name
  bases_S7276C3, 8,
  &(vtc_S7276C3[0]), // expected_vtbl_contents
  &(vtt_S7276C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7276C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7276C3),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7276C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C2  : virtual S7276C3 {
  virtual  ~S7276C2(); // _ZN7S7276C2D2Ev
  S7276C2(); // tgen
};
//SIG(-1 S7276C2) C1{ VBC2{ BC3{ m} BC4{ BC3 vd FC3} VBC5{ m} VBC6{ VBC5 VBC4 VBC7{ m Fi} vd Fp FC8{}} vd} vd}


 S7276C2 ::~S7276C2(){ note_dtor("S7276C2", this);}
S7276C2 ::S7276C2(){ note_ctor("S7276C2", this);} // tgen

static void Test_S7276C2()
{
  extern Class_Descriptor cd_S7276C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7276C2, buf);
    S7276C2 *dp, &lv = *(dp=new (buf) S7276C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7276C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C2)");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*), ABISELECT(17,9), "S7276C2");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*), ABISELECT(8,4), "S7276C2");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*), ABISELECT(8,4), "S7276C2");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*), 0, "S7276C2");
    check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C2");
    /*is_ambiguous_... S7276C2::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(48,24), "S7276C2");
    check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(48,24), "S7276C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(60,32), "S7276C2");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*), ABISELECT(24,12), "S7276C2");
    check_base_class_offset(lv, (S7276C3*), ABISELECT(8,4), "S7276C2");
    test_class_info(&lv, &cd_S7276C2);
    dp->~S7276C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C2(Test_S7276C2, "S7276C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7276C2C1Ev();
extern void _ZN7S7276C2D2Ev();
Name_Map name_map_S7276C2[] = {
  NSPAIR(_ZN7S7276C2C1Ev),
  NSPAIR(_ZN7S7276C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
static Base_Class bases_S7276C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S7276C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(48,24), //bcp->offset
    26, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S7276C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //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 _ZTI7S7276C2[];
extern void _ZN7S7276C2D1Ev();
extern void _ZN7S7276C2D0Ev();
extern void ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7276C2D1Ev,_ZThn4_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7276C2D0Ev,_ZThn4_N7S7276C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn12_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn12_N7S7276C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C2[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&_ZN7S7276C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7276C2[];
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C3__7S7276C2[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C3__7S7276C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C3__7S7276C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C2[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__7S7276C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
static  VTT_ENTRY vtt_S7276C2[] = {
  {&(_ZTV7S7276C2[7]),  7,31},
  {&(_ZTV7S7276C2[16]),  16,31},
  {&(_ZTV7S7276C2[24]),  24,31},
  {&(_ZTV7S7276C2[29]),  29,31},
  {&(_tg__ZTV7S7276C3__7S7276C2[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C3__7S7276C2[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C3__7S7276C2[3]),  3,5},
  {&(_tg__ZTV7S7276C7__7S7276C2[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__7S7276C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7276C2[];
extern  VTBL_ENTRY _ZTV7S7276C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C2[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn12_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn12_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7276C2D0Ev,_ZThn4_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7276C2D1Ev,_ZThn4_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C2 = {  "S7276C2", // class name
  bases_S7276C2, 9,
  &(vtc_S7276C2[0]), // expected_vtbl_contents
  &(vtt_S7276C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7276C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7276C2),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7276C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C11  : virtual S7276C5 {
  __tsi64 s7276c11f0;
  ~S7276C11(); // tgen
  S7276C11(); // tgen
};
//SIG(-1 S7276C11) C1{ VBC2{ BC3{ m} vd FC3} FL}


S7276C11 ::~S7276C11(){ note_dtor("S7276C11", this);} // tgen
S7276C11 ::S7276C11(){ note_ctor("S7276C11", this);} // tgen

static void Test_S7276C11()
{
  extern Class_Descriptor cd_S7276C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7276C11, buf);
    S7276C11 *dp, &lv = *(dp=new (buf) S7276C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7276C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C11)");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(16,12), "S7276C11");
    check_base_class_offset(lv, (S7276C5*), ABISELECT(16,12), "S7276C11");
    check_field_offset(lv, s7276c11f0, ABISELECT(8,4), "S7276C11.s7276c11f0");
    test_class_info(&lv, &cd_S7276C11);
    dp->~S7276C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C11(Test_S7276C11, "S7276C11", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7276C11C1Ev();
extern void _ZN8S7276C11D1Ev();
Name_Map name_map_S7276C11[] = {
  NSPAIR(_ZN8S7276C11C1Ev),
  NSPAIR(_ZN8S7276C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
static Base_Class bases_S7276C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S7276C5,    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 _ZTI8S7276C11[];
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C11[];
static  VTT_ENTRY vtt_S7276C11[] = {
  {&(_ZTV8S7276C11[3]),  3,10},
  {&(_ZTV8S7276C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C11 = {  "S7276C11", // class name
  bases_S7276C11, 2,
  &(vtc_S7276C11[0]), // expected_vtbl_contents
  &(vtt_S7276C11[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7276C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7276C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C15  : S2014C28 , S7276C5 , S2014C38 , S3222C8_nt {
  short s7276c15f0:16;
  __tsi64 s7276c15f1;
  ~S7276C15(); // tgen
  S7276C15(); // tgen
};
//SIG(-1 S7276C15) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 FL}


S7276C15 ::~S7276C15(){ note_dtor("S7276C15", this);} // tgen
S7276C15 ::S7276C15(){ note_ctor("S7276C15", this);} // tgen

static void Test_S7276C15()
{
  extern Class_Descriptor cd_S7276C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7276C15, buf);
    S7276C15 *dp, &lv = *(dp=new (buf) S7276C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7276C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C15)");
    check_base_class_offset(lv, (S2014C28*), 0, "S7276C15");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*), 0, "S7276C15");
    check_base_class_offset(lv, (S7276C5*), 0, "S7276C15");
    /*is_ambiguous_... S7276C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S7276C15");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S7276C15");
    set_bf_and_test(lv, s7276c15f0, ABISELECT(16,12), 0, 16, 1, "S7276C15");
    set_bf_and_test(lv, s7276c15f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S7276C15");
    check_field_offset(lv, s7276c15f1, ABISELECT(24,16), "S7276C15.s7276c15f1");
    test_class_info(&lv, &cd_S7276C15);
    dp->~S7276C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C15(Test_S7276C15, "S7276C15", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S7276C15C1Ev();
extern void _ZN8S7276C15D1Ev();
Name_Map name_map_S7276C15[] = {
  NSPAIR(_ZN8S7276C15C1Ev),
  NSPAIR(_ZN8S7276C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7276C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S7276C15[];
extern void _ZN8S7276C15D1Ev();
extern void _ZN8S7276C15D0Ev();
static  VTBL_ENTRY vtc_S7276C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C15[0]),
  (VTBL_ENTRY)&_ZN8S7276C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C15D0Ev,
};
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
Class_Descriptor cd_S7276C15 = {  "S7276C15", // class name
  bases_S7276C15, 5,
  &(vtc_S7276C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S7276C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7276C15),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  S7276C14  : S7276C15 , S7276C5 {
  int s7276c14f0;
  ~S7276C14(); // tgen
  S7276C14(); // tgen
};
//SIG(-1 S7276C14) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 FL} BC4 Fi}


S7276C14 ::~S7276C14(){ note_dtor("S7276C14", this);} // tgen
S7276C14 ::S7276C14(){ note_ctor("S7276C14", this);} // tgen

static void Test_S7276C14()
{
  extern Class_Descriptor cd_S7276C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S7276C14, buf);
    S7276C14 *dp, &lv = *(dp=new (buf) S7276C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7276C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C14)");
    check_base_class_offset(lv, (S2014C28*)(S7276C15*), 0, "S7276C14");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*), 0, "S7276C14");
    check_base_class_offset(lv, (S7276C5*)(S7276C15*), 0, "S7276C14");
    /*is_ambiguous_... S7276C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*), ABISELECT(9,5), "S7276C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*), ABISELECT(12,8), "S7276C14");
    check_base_class_offset(lv, (S7276C15*), 0, "S7276C14");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(32,24), "S7276C14");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*), ABISELECT(32,24), "S7276C14");
    check_field_offset(lv, s7276c14f0, ABISELECT(44,32), "S7276C14.s7276c14f0");
    test_class_info(&lv, &cd_S7276C14);
    dp->~S7276C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C14(Test_S7276C14, "S7276C14", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S7276C14C1Ev();
extern void _ZN8S7276C14D1Ev();
Name_Map name_map_S7276C14[] = {
  NSPAIR(_ZN8S7276C14C1Ev),
  NSPAIR(_ZN8S7276C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
static Base_Class bases_S7276C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S7276C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(32,24), //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 _ZTI8S7276C14[];
extern void _ZN8S7276C14D1Ev();
extern void _ZN8S7276C14D0Ev();
extern void ABISELECT(_ZThn32_N8S7276C14D1Ev,_ZThn24_N8S7276C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7276C14D0Ev,_ZThn24_N8S7276C14D0Ev)();
static  VTBL_ENTRY vtc_S7276C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C14[0]),
  (VTBL_ENTRY)&_ZN8S7276C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C14D0Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7276C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7276C14D1Ev,_ZThn24_N8S7276C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7276C14D0Ev,_ZThn24_N8S7276C14D0Ev),
};
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
Class_Descriptor cd_S7276C14 = {  "S7276C14", // class name
  bases_S7276C14, 8,
  &(vtc_S7276C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S7276C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7276C14),8, //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  S7276C13  : S7276C11 , virtual S2014C28 , virtual S3222C8_nt , virtual S7276C7 , virtual S7276C14 {
  long s7276c13f0;
  ::S7276C11 s7276c13f1;
  virtual  ~S7276C13(); // _ZN8S7276C13D2Ev
  S7276C13(); // tgen
};
//SIG(-1 S7276C13) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 FL} BC3 Fi} vd Fl FC2}


 S7276C13 ::~S7276C13(){ note_dtor("S7276C13", this);}
S7276C13 ::S7276C13(){ note_ctor("S7276C13", this);} // tgen

static void Test_S7276C13()
{
  extern Class_Descriptor cd_S7276C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S7276C13, buf);
    S7276C13 *dp, &lv = *(dp=new (buf) S7276C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S7276C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C13)");
    /*is_ambiguous_... S7276C13::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(56,36), "S7276C13");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(56,36), "S7276C13");
    check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(56,36), "S7276C13");
    check_base_class_offset(lv, (S7276C11*), 0, "S7276C13");
    /*is_ambiguous_... S7276C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S7276C13");
    check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C13");
    /*is_ambiguous_... S7276C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S7276C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(68,44), "S7276C13");
    check_base_class_offset(lv, (S7276C7*), ABISELECT(72,48), "S7276C13");
    check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*), ABISELECT(96,60), "S7276C13");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(96,60), "S7276C13");
    check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(96,60), "S7276C13");
    /*is_ambiguous_... S7276C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*), ABISELECT(105,65), "S7276C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*), ABISELECT(108,68), "S7276C13");
    check_base_class_offset(lv, (S7276C15*)(S7276C14*), ABISELECT(96,60), "S7276C13");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*), ABISELECT(128,84), "S7276C13");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*), ABISELECT(128,84), "S7276C13");
    check_base_class_offset(lv, (S7276C14*), ABISELECT(96,60), "S7276C13");
    check_field_offset(lv, s7276c13f0, ABISELECT(16,12), "S7276C13.s7276c13f0");
    check_field_offset(lv, s7276c13f1, ABISELECT(24,16), "S7276C13.s7276c13f1");
    test_class_info(&lv, &cd_S7276C13);
    dp->~S7276C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C13(Test_S7276C13, "S7276C13", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S7276C13C1Ev();
extern void _ZN8S7276C13D2Ev();
Name_Map name_map_S7276C13[] = {
  NSPAIR(_ZN8S7276C13C1Ev),
  NSPAIR(_ZN8S7276C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
static Base_Class bases_S7276C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S7276C11,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S7276C7,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7276C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S7276C15,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(128,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_S7276C5,    ABISELECT(128,84), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C13[];
extern void _ZN8S7276C13D1Ev();
extern void _ZN8S7276C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7276C13D1Ev,_ZThn48_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7276C13D0Ev,_ZThn48_N8S7276C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7276C13D1Ev,_ZThn60_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7276C13D0Ev,_ZThn60_N8S7276C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY vtc_S7276C13[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&_ZN8S7276C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C13D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C13[];
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C13[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn36_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn36_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__8S7276C13[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C13[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__8S7276C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
static  VTT_ENTRY vtt_S7276C13[] = {
  {&(_ZTV8S7276C13[7]),  7,31},
  {&(_tg__ZTV8S7276C11__8S7276C13[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__8S7276C13[3]),  3,5},
  {&(_ZTV8S7276C13[12]),  12,31},
  {&(_ZTV8S7276C13[20]),  20,31},
  {&(_ZTV8S7276C13[25]),  25,31},
  {&(_ZTV8S7276C13[29]),  29,31},
  {&(_tg__ZTV7S7276C7__8S7276C13[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__8S7276C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C13[];
extern  VTBL_ENTRY _ZTV8S7276C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C13[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn36_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn36_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7276C13D0Ev,_ZThn48_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7276C13D1Ev,_ZThn48_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C13D0Ev,_ZThn60_N8S7276C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C13D1Ev,_ZThn60_N8S7276C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C13 = {  "S7276C13", // class name
  bases_S7276C13, 15,
  &(vtc_S7276C13[0]), // expected_vtbl_contents
  &(vtt_S7276C13[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S7276C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7276C13),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C13),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C16  : virtual S7276C7 , S7276C3 , virtual S2014C38 {
  ::S3222C8_nt s7276c16f0[6];
  virtual  ~S7276C16(); // _ZN8S7276C16D2Ev
  S7276C16(); // tgen
};
//SIG(-1 S7276C16) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S7276C16 ::~S7276C16(){ note_dtor("S7276C16", this);}
S7276C16 ::S7276C16(){ note_ctor("S7276C16", this);} // tgen

static void Test_S7276C16()
{
  extern Class_Descriptor cd_S7276C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S7276C16, buf);
    S7276C16 *dp, &lv = *(dp=new (buf) S7276C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S7276C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C16)");
    check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C16");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*), 0, "S7276C16");
    /*is_ambiguous_... S7276C16::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(64,44), "S7276C16");
    check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(64,44), "S7276C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(76,52), "S7276C16");
    check_base_class_offset(lv, (S7276C7*), ABISELECT(40,32), "S7276C16");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*), ABISELECT(40,32), "S7276C16");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*), ABISELECT(9,5), "S7276C16");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*), 0, "S7276C16");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*), 0, "S7276C16");
    check_base_class_offset(lv, (S7276C3*), 0, "S7276C16");
    /*is_ambiguous_... S7276C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S7276C16");
    check_field_offset(lv, s7276c16f0, ABISELECT(12,8), "S7276C16.s7276c16f0");
    test_class_info(&lv, &cd_S7276C16);
    dp->~S7276C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C16(Test_S7276C16, "S7276C16", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S7276C16C1Ev();
extern void _ZN8S7276C16D2Ev();
Name_Map name_map_S7276C16[] = {
  NSPAIR(_ZN8S7276C16C1Ev),
  NSPAIR(_ZN8S7276C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S7276C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7276C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C16[];
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C16D1Ev,_ZThn32_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S7276C16D0Ev,_ZThn32_N8S7276C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7276C16D1Ev,_ZThn44_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7276C16D0Ev,_ZThn44_N8S7276C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C16[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C16[];
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C3__8S7276C16[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn32_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn32_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C3__8S7276C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7276C3D1Ev,_ZThn44_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7276C3D0Ev,_ZThn44_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C3__8S7276C16[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C16[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__8S7276C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
static  VTT_ENTRY vtt_S7276C16[] = {
  {&(_ZTV8S7276C16[7]),  7,22},
  {&(_tg__ZTV7S7276C3__8S7276C16[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C3__8S7276C16[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C3__8S7276C16[3]),  3,5},
  {&(_ZTV8S7276C16[15]),  15,22},
  {&(_ZTV8S7276C16[20]),  20,22},
  {&(_tg__ZTV7S7276C7__8S7276C16[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__8S7276C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C3D0Ev,_ZThn44_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C3D1Ev,_ZThn44_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn32_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn32_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7276C16D0Ev,_ZThn44_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7276C16D1Ev,_ZThn44_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7276C16D0Ev,_ZThn32_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7276C16D1Ev,_ZThn32_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C16 = {  "S7276C16", // class name
  bases_S7276C16, 10,
  &(vtc_S7276C16[0]), // expected_vtbl_contents
  &(vtt_S7276C16[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S7276C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7276C16),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C16),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C17  : virtual S7276C11 , virtual S3222C8_nt {
  unsigned char s7276c17f0:1;
  ~S7276C17(); // tgen
  S7276C17(); // tgen
};
//SIG(-1 S7276C17) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S7276C17 ::~S7276C17(){ note_dtor("S7276C17", this);} // tgen
S7276C17 ::S7276C17(){ note_ctor("S7276C17", this);} // tgen

static void Test_S7276C17()
{
  extern Class_Descriptor cd_S7276C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7276C17, buf);
    S7276C17 *dp, &lv = *(dp=new (buf) S7276C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7276C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C17)");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(32,20), "S7276C17");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(32,20), "S7276C17");
    check_base_class_offset(lv, (S7276C11*), ABISELECT(16,8), "S7276C17");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S7276C17");
    set_bf_and_test(lv, s7276c17f0, ABISELECT(8,4), 0, 1, 1, "S7276C17");
    test_class_info(&lv, &cd_S7276C17);
    dp->~S7276C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C17(Test_S7276C17, "S7276C17", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S7276C17C1Ev();
extern void _ZN8S7276C17D1Ev();
Name_Map name_map_S7276C17[] = {
  NSPAIR(_ZN8S7276C17C1Ev),
  NSPAIR(_ZN8S7276C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7276C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(32,20), //bcp->offset
    13, //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_S7276C11,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C17[];
extern void _ZN8S7276C17D1Ev();
extern void _ZN8S7276C17D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C17D1Ev,_ZThn8_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C17D0Ev,_ZThn8_N8S7276C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7276C17D1Ev,_ZThn20_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7276C17D0Ev,_ZThn20_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C17[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&_ZN8S7276C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C17D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C17[];
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C17[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__8S7276C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
static  VTT_ENTRY vtt_S7276C17[] = {
  {&(_ZTV8S7276C17[5]),  5,18},
  {&(_ZTV8S7276C17[11]),  11,18},
  {&(_ZTV8S7276C17[16]),  16,18},
  {&(_tg__ZTV8S7276C11__8S7276C17[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__8S7276C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C17[];
extern  VTBL_ENTRY _ZTV8S7276C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C17[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7276C17D0Ev,_ZThn20_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7276C17D1Ev,_ZThn20_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C17D0Ev,_ZThn8_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C17D1Ev,_ZThn8_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C17 = {  "S7276C17", // class name
  bases_S7276C17, 4,
  &(vtc_S7276C17[0]), // expected_vtbl_contents
  &(vtt_S7276C17[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S7276C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7276C17),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C17),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C12  : virtual S7276C13 , S7276C16 , S7276C17 , S7276C7 {
  ~S7276C12(); // tgen
  S7276C12(); // tgen
};
//SIG(-1 S7276C12) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 FL} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S7276C12 ::~S7276C12(){ note_dtor("S7276C12", this);} // tgen
S7276C12 ::S7276C12(){ note_ctor("S7276C12", this);} // tgen

static void Test_S7276C12()
{
  extern Class_Descriptor cd_S7276C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S7276C12, buf);
    S7276C12 *dp, &lv = *(dp=new (buf) S7276C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S7276C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C12)");
    /*is_ambiguous_... S7276C12::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(136,88), "S7276C12");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*)(S7276C13*), ABISELECT(136,88), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(136,88), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C11 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(136,88), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(136,88), "S7276C12");
    check_base_class_offset(lv, (S7276C11*)(S7276C13*), ABISELECT(80,52), "S7276C12");
    /*is_ambiguous_... S7276C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C13*), 0, "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C12");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*)(S7276C16*), 0, "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C12");
    /*is_ambiguous_... S7276C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C13*), ABISELECT(148,96), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(148,96), "S7276C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C17*), ABISELECT(148,96), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(148,96), "S7276C12");
    check_base_class_offset(lv, (S7276C7*)(S7276C13*), ABISELECT(152,100), "S7276C12");
    check_base_class_offset(lv, (S7276C7*)(S7276C16*), ABISELECT(152,100), "S7276C12");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*)(S7276C16*), ABISELECT(152,100), "S7276C12");
    check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*), ABISELECT(176,112), "S7276C12");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(176,112), "S7276C12");
    check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(176,112), "S7276C12");
    /*is_ambiguous_... S7276C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*), ABISELECT(185,117), "S7276C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*), ABISELECT(188,120), "S7276C12");
    check_base_class_offset(lv, (S7276C15*)(S7276C14*), ABISELECT(176,112), "S7276C12");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*), ABISELECT(208,136), "S7276C12");
    /*is_ambiguous_... S7276C14::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*), ABISELECT(208,136), "S7276C12");
    check_base_class_offset(lv, (S7276C14*)(S7276C13*), ABISELECT(176,112), "S7276C12");
    check_base_class_offset(lv, (S7276C13*), ABISELECT(80,52), "S7276C12");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*)(S7276C16*), ABISELECT(9,5), "S7276C12");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*)(S7276C16*), 0, "S7276C12");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*)(S7276C16*), 0, "S7276C12");
    check_base_class_offset(lv, (S7276C3*)(S7276C16*), 0, "S7276C12");
    /*is_ambiguous_... S7276C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C16*), ABISELECT(224,148), "S7276C12");
    check_base_class_offset(lv, (S7276C16*), 0, "S7276C12");
    check_base_class_offset(lv, (S7276C11*)(S7276C17*), ABISELECT(224,148), "S7276C12");
    check_base_class_offset(lv, (S7276C17*), ABISELECT(40,32), "S7276C12");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C7*), ABISELECT(56,40), "S7276C12");
    test_class_info(&lv, &cd_S7276C12);
    dp->~S7276C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C12(Test_S7276C12, "S7276C12", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN8S7276C12C1Ev();
extern void _ZN8S7276C12D1Ev();
Name_Map name_map_S7276C12[] = {
  NSPAIR(_ZN8S7276C12C1Ev),
  NSPAIR(_ZN8S7276C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
extern Class_Descriptor cd_S7276C13;
extern VTBL_ENTRY _ZTI8S7276C13[];
extern  VTBL_ENTRY _ZTV8S7276C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C16;
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S7276C17;
extern VTBL_ENTRY _ZTI8S7276C17[];
extern  VTBL_ENTRY _ZTV8S7276C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C17[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
static Base_Class bases_S7276C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7276C11,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S7276C15,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    ABISELECT(208,136), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7276C13,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7276C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S7276C16,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7276C11,    ABISELECT(224,148), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7276C17,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7276C7,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C12[];
extern void _ZN8S7276C12D1Ev();
extern void _ZN8S7276C12D0Ev();
extern void ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S7276C12D1Ev,_ZThn52_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S7276C12D0Ev,_ZThn52_N8S7276C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7276C12D1Ev,_ZThn88_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7276C12D0Ev,_ZThn88_N8S7276C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7276C12D1Ev,_ZThn100_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7276C12D0Ev,_ZThn100_N8S7276C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7276C12D1Ev,_ZThn112_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7276C12D0Ev,_ZThn112_N8S7276C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7276C12D1Ev,_ZThn148_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7276C12D0Ev,_ZThn148_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C12[] = {
  ABISELECT(224,148),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&_ZN8S7276C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C12D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-88,-60),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C12[];
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C16__8S7276C12[] = {
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C38S7276C16__8S7276C12[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7276C3D1Ev,_ZThn100_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7276C3D0Ev,_ZThn100_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C38S7276C16__8S7276C12[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7276C3D1Ev,_ZThn88_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7276C3D0Ev,_ZThn88_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C38S7276C16__8S7276C12[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S7276C16D1Ev,_ZThn100_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S7276C16D0Ev,_ZThn100_N8S7276C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C16__8S7276C12[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn136_N8S7276C16D1Ev,_ZThn88_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn136_N8S7276C16D0Ev,_ZThn88_N8S7276C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C16__8S7276C12[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
extern void _ZN8S7276C17D1Ev();
extern void _ZN8S7276C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C17__8S7276C12[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&_ZN8S7276C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn184_N8S7276C17D1Ev,_ZThn116_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn184_N8S7276C17D0Ev,_ZThn116_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C17__8S7276C12[] = {
  ABISELECT(-184,-116),
  ABISELECT(-88,-60),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S7276C17D1Ev,_ZThn56_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S7276C17D0Ev,_ZThn56_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C17__8S7276C12[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__A__8S7276C12[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7276C7D1Ev,_ZThn48_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S7276C7D0Ev,_ZThn48_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__A__8S7276C12[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void _ZN8S7276C13D1Ev();
extern void _ZN8S7276C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C13__8S7276C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&_ZN8S7276C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C13D0Ev,
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C118S7276C13__8S7276C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn36_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn36_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C118S7276C13__8S7276C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C13__8S7276C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7276C13D1Ev,_ZThn48_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7276C13D0Ev,_ZThn48_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C13__8S7276C12[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7276C13D1Ev,_ZThn60_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7276C13D0Ev,_ZThn60_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C13__8S7276C12[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C13__8S7276C12[] = {
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__8S7276C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__A1__8S7276C12[] = {
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__A1__8S7276C12[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
static  VTT_ENTRY vtt_S7276C12[] = {
  {&(_ZTV8S7276C12[10]),  10,64},
  {&(_tg__ZTV8S7276C16__8S7276C12[7]),  7,9},
  {&(_tg__ZTV7S7276C38S7276C16__8S7276C12[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C38S7276C16__8S7276C12[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C38S7276C16__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C16__8S7276C12[6]),  6,8},
  {&(_tg__ZTV7S7276C5__8S7276C16__8S7276C12[3]),  3,5},
  {&(_tg__ZTV8S7276C17__8S7276C12[5]),  5,7},
  {&(_tg__ZTV8S7276C11__8S7276C17__8S7276C12[4]),  4,6},
  {&(_tg__ZTV7S7276C5__8S7276C17__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C7__A__8S7276C12[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__A__8S7276C12[3]),  3,5},
  {&(_ZTV8S7276C12[34]),  34,64},
  {&(_ZTV8S7276C12[39]),  39,64},
  {&(_ZTV8S7276C12[47]),  47,64},
  {&(_ZTV8S7276C12[52]),  52,64},
  {&(_ZTV8S7276C12[56]),  56,64},
  {&(_ZTV8S7276C12[17]),  17,64},
  {&(_ZTV8S7276C12[62]),  62,64},
  {&(_ZTV8S7276C12[24]),  24,64},
  {&(_tg__ZTV8S7276C13__8S7276C12[7]),  7,9},
  {&(_tg__ZTV8S7276C118S7276C13__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C118S7276C13__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C13__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C13__8S7276C12[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C13__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C13__8S7276C12[2]),  2,4},
  {&(_tg__ZTV7S7276C7__8S7276C12[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__8S7276C12[3]),  3,5},
  {&(_tg__ZTV8S7276C11__A1__8S7276C12[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__A1__8S7276C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C12[];
extern  VTBL_ENTRY _ZTV8S7276C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C12[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7276C13D0Ev,_ZThn48_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7276C13D1Ev,_ZThn48_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C13D0Ev,_ZThn60_N8S7276C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C13D1Ev,_ZThn60_N8S7276C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn36_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn36_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7276C7D0Ev,_ZThn48_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7276C7D1Ev,_ZThn48_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C17D0Ev,_ZThn56_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C17D1Ev,_ZThn56_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7276C17D0Ev,_ZThn116_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7276C17D1Ev,_ZThn116_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C16D0Ev,_ZThn88_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C16D1Ev,_ZThn88_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C16D0Ev,_ZThn100_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C16D1Ev,_ZThn100_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7276C3D0Ev,_ZThn88_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7276C3D1Ev,_ZThn88_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7276C3D0Ev,_ZThn100_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7276C3D1Ev,_ZThn100_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C12D0Ev,_ZThn148_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C12D1Ev,_ZThn148_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C12D0Ev,_ZThn100_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C12D1Ev,_ZThn100_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7276C12D0Ev,_ZThn112_N8S7276C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C12D0Ev,_ZThn88_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7276C12D1Ev,_ZThn112_N8S7276C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C12D1Ev,_ZThn88_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7276C12D0Ev,_ZThn52_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7276C12D1Ev,_ZThn52_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C12 = {  "S7276C12", // class name
  bases_S7276C12, 25,
  &(vtc_S7276C12[0]), // expected_vtbl_contents
  &(vtt_S7276C12[0]), // expected_vtt_contents
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI8S7276C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7276C12),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C12),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C10  : virtual S7276C11 , S7276C12 , S7276C14 , S2014C38 , virtual S7276C16 {
  virtual  ~S7276C10(); // _ZN8S7276C10D2Ev
  S7276C10(); // tgen
};
//SIG(-1 S7276C10) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} BC5{ VBC6{ BC2 VBC7{ m} VBC8{ m Fi} VBC9{ VBC7 VBC3 VBC8 vd Fp FC10{}} VBC11{ BC12{ BC7 BC3 BC4 BC8 Fs:16 FL} BC3 Fi} vd Fl FC2} BC13{ VBC9 BC14{ BC4 BC3 VBC7 VBC9 vd} VBC4 vd FC8[6]} BC15{ VBC2 VBC8 Fc:1} BC9} BC11 BC4 VBC13 vd}


 S7276C10 ::~S7276C10(){ note_dtor("S7276C10", this);}
S7276C10 ::S7276C10(){ note_ctor("S7276C10", this);} // tgen

static void Test_S7276C10()
{
  extern Class_Descriptor cd_S7276C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,59)];
    init_test(&cd_S7276C10, buf);
    S7276C10 *dp, &lv = *(dp=new (buf) S7276C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,232), "sizeof(S7276C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C10)");
    /*is_ambiguous_... S7276C10::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(144,100), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C11 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(144,100), "S7276C10");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*)(S7276C13*), ABISELECT(144,100), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(144,100), "S7276C10");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*)(S7276C12*), ABISELECT(144,100), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C11 */ AMB_check_base_class_offset(lv, (S7276C11*), ABISELECT(128,88), "S7276C10");
    check_base_class_offset(lv, (S7276C11*)(S7276C17*)(S7276C12*), ABISELECT(128,88), "S7276C10");
    check_base_class_offset(lv, (S7276C11*)(S7276C13*), ABISELECT(160,108), "S7276C10");
    /*is_ambiguous_... S7276C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C13*), 0, "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C10");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*)(S7276C16*)(S7276C12*), 0, "S7276C10");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*)(S7276C12*), 0, "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C3*)(S7276C16*), 0, "S7276C10");
    /*is_ambiguous_... S7276C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C13*), ABISELECT(216,144), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(216,144), "S7276C10");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C17*)(S7276C12*), ABISELECT(216,144), "S7276C10");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*)(S7276C12*), ABISELECT(216,144), "S7276C10");
    check_base_class_offset(lv, (S7276C7*)(S7276C13*), ABISELECT(224,148), "S7276C10");
    check_base_class_offset(lv, (S7276C7*)(S7276C16*)(S7276C12*), ABISELECT(224,148), "S7276C10");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*)(S7276C16*)(S7276C12*), ABISELECT(224,148), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C16*), ABISELECT(224,148), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C3*)(S7276C16*), ABISELECT(224,148), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*), ABISELECT(248,160), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(248,160), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(248,160), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*), ABISELECT(257,165), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*), ABISELECT(260,168), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C15*)(S7276C14*), ABISELECT(248,160), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*), ABISELECT(280,184), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*), ABISELECT(280,184), "S7276C10");
    check_base_class_offset(lv, (S7276C14*)(S7276C13*), ABISELECT(248,160), "S7276C10");
    check_base_class_offset(lv, (S7276C13*)(S7276C12*), ABISELECT(160,108), "S7276C10");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*)(S7276C16*)(S7276C12*), ABISELECT(9,5), "S7276C10");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*)(S7276C16*)(S7276C12*), 0, "S7276C10");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*)(S7276C16*)(S7276C12*), 0, "S7276C10");
    check_base_class_offset(lv, (S7276C3*)(S7276C16*)(S7276C12*), 0, "S7276C10");
    /*is_ambiguous_... S7276C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C16*)(S7276C12*), ABISELECT(296,196), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C16*), ABISELECT(296,196), "S7276C10");
    check_base_class_offset(lv, (S7276C16*)(S7276C12*), 0, "S7276C10");
    check_base_class_offset(lv, (S7276C17*)(S7276C12*), ABISELECT(40,32), "S7276C10");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C12*), ABISELECT(56,40), "S7276C10");
    check_base_class_offset(lv, (S7276C12*), 0, "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*), ABISELECT(80,52), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(80,52), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(80,52), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*), ABISELECT(89,57), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*), ABISELECT(92,60), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C15*)(S7276C14*), ABISELECT(80,52), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*), ABISELECT(112,76), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*), ABISELECT(112,76), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C14*), ABISELECT(80,52), "S7276C10");
    /*is_ambiguous_... S7276C10::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(128,88), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*)(S7276C16*), ABISELECT(313,205), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*)(S7276C16*), ABISELECT(304,200), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*)(S7276C16*), ABISELECT(304,200), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C3*)(S7276C16*), ABISELECT(304,200), "S7276C10");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C16*), ABISELECT(304,200), "S7276C10");
    test_class_info(&lv, &cd_S7276C10);
    dp->~S7276C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C10(Test_S7276C10, "S7276C10", ABISELECT(344,232));

#else // __cplusplus

extern void _ZN8S7276C10C1Ev();
extern void _ZN8S7276C10D2Ev();
Name_Map name_map_S7276C10[] = {
  NSPAIR(_ZN8S7276C10C1Ev),
  NSPAIR(_ZN8S7276C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
extern Class_Descriptor cd_S7276C13;
extern VTBL_ENTRY _ZTI8S7276C13[];
extern  VTBL_ENTRY _ZTV8S7276C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C16;
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
extern Class_Descriptor cd_S7276C17;
extern VTBL_ENTRY _ZTI8S7276C17[];
extern  VTBL_ENTRY _ZTV8S7276C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C17[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S7276C12;
extern VTBL_ENTRY _ZTI8S7276C12[];
extern  VTBL_ENTRY _ZTV8S7276C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S7276C16;
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
static Base_Class bases_S7276C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(144,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
    1, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(144,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7276C11,    ABISELECT(128,88), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7276C11,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(216,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, 1},
  {&cd_S7276C7,    ABISELECT(224,148), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(248,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
    12, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(248,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
    9, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(248,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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(257,165), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(260,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
    12, //immediately_derived
  0, 0},
  {&cd_S7276C15,    ABISELECT(248,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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(280,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
    14, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(280,184), //bcp->offset
    69, //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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(248,160), //bcp->offset
    64, //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
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7276C13,    ABISELECT(160,108), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S2014C38,    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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7276C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(296,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
    22, //immediately_derived
  0, 1},
  {&cd_S7276C16,    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
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7276C17,    ABISELECT(40,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7276C7,    ABISELECT(56,40), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7276C12,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    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
    31, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7276C5,    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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    31, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(92,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
    31, //immediately_derived
  0, 0},
  {&cd_S7276C15,    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
    20, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(112,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
    33, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(112,76), //bcp->offset
    31, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(80,52), //bcp->offset
    27, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C38,    ABISELECT(128,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
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C38,    ABISELECT(313,205), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(304,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
    38, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(304,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
    10, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7276C3,    ABISELECT(304,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7276C16,    ABISELECT(304,200), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C10[];
extern void _ZN8S7276C10D1Ev();
extern void _ZN8S7276C10D0Ev();
extern void ABISELECT(_ZThn40_N8S7276C10D1Ev,_ZThn32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C10D0Ev,_ZThn32_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C10D1Ev,_ZThn40_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C10D0Ev,_ZThn40_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7276C10D1Ev,_ZThn52_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7276C10D0Ev,_ZThn52_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn112_N8S7276C10D1Ev,_ZThn76_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7276C10D0Ev,_ZThn76_N8S7276C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S7276C10D1Ev,_ZThn88_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S7276C10D0Ev,_ZThn88_N8S7276C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7276C10D1Ev,_ZThn100_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7276C10D0Ev,_ZThn100_N8S7276C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S7276C10D1Ev,_ZThn108_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S7276C10D0Ev,_ZThn108_N8S7276C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C10D1Ev,_ZTv0_n24_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn224_N8S7276C10D1Ev,_ZThn148_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C10D0Ev,_ZTv0_n24_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn224_N8S7276C10D0Ev,_ZThn148_N8S7276C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn248_N8S7276C10D1Ev,_ZThn160_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn248_N8S7276C10D0Ev,_ZThn160_N8S7276C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7276C10D1Ev,_ZTvn24_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C10D0Ev,_ZTvn24_n12_N8S7276C10D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn304_N8S7276C10D1Ev,_ZThn200_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn304_N8S7276C10D0Ev,_ZThn200_N8S7276C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C10[] = {
  ABISELECT(304,200),
  ABISELECT(128,88),
  ABISELECT(248,160),
  ABISELECT(160,108),
  ABISELECT(296,196),
  ABISELECT(216,144),
  ABISELECT(144,100),
  ABISELECT(224,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&_ZN8S7276C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C10D0Ev,
  ABISELECT(176,112),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C10D1Ev,_ZThn32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C10D0Ev,_ZThn32_N8S7276C10D0Ev),
  ABISELECT(160,104),
  ABISELECT(88,60),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C10D1Ev,_ZThn40_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C10D0Ev,_ZThn40_N8S7276C10D0Ev),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7276C10D1Ev,_ZThn52_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7276C10D0Ev,_ZThn52_N8S7276C10D0Ev),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7276C10D1Ev,_ZThn76_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7276C10D0Ev,_ZThn76_N8S7276C10D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(16,12),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev),
  ABISELECT(-160,-108),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-108),
  ABISELECT(-16,-8),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C10D1Ev,_ZTv0_n24_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C10D0Ev,_ZTv0_n24_N8S7276C10D0Ev),
  ABISELECT(-248,-160),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev),
  ABISELECT(-280,-184),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C10D1Ev,_ZTvn24_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C10D0Ev,_ZTvn24_n12_N8S7276C10D0Ev),
  ABISELECT(-304,-200),
  ABISELECT(-8,-4),
  ABISELECT(-88,-56),
  ABISELECT(-160,-100),
  ABISELECT(-80,-52),
  ABISELECT(-304,-200),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C10[];
extern void _ZN8S7276C12D1Ev();
extern void _ZN8S7276C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C12__8S7276C10[] = {
  ABISELECT(128,88),
  ABISELECT(248,160),
  ABISELECT(160,108),
  ABISELECT(296,196),
  ABISELECT(216,144),
  ABISELECT(144,100),
  ABISELECT(224,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&_ZN8S7276C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C12D0Ev,
};
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(296,196),
  ABISELECT(216,144),
  ABISELECT(144,100),
  ABISELECT(224,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C38S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(216,144),
  ABISELECT(144,100),
  ABISELECT(224,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn224_N7S7276C3D1Ev,_ZThn148_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn224_N7S7276C3D0Ev,_ZThn148_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C38S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(-224,-148),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S7276C3D1Ev,_ZThn100_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S7276C3D0Ev,_ZThn100_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C38S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7276C16D1Ev,_ZThn148_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7276C16D0Ev,_ZThn148_N8S7276C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(-224,-148),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7276C16D1Ev,_ZThn100_N8S7276C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7276C16D0Ev,_ZThn100_N8S7276C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C168S7276C12__8S7276C10[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
extern void _ZN8S7276C17D1Ev();
extern void _ZN8S7276C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C178S7276C12__8S7276C10[] = {
  ABISELECT(176,112),
  ABISELECT(104,68),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&_ZN8S7276C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn88_N8S7276C17D1Ev,_ZThn56_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn88_N8S7276C17D0Ev,_ZThn56_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C178S7276C12__8S7276C10[] = {
  ABISELECT(-88,-56),
  ABISELECT(16,12),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S7276C17D1Ev,_ZThn68_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S7276C17D0Ev,_ZThn68_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C178S7276C12__8S7276C10[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C78S7276C12__A1__8S7276C10[] = {
  ABISELECT(160,104),
  ABISELECT(88,60),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S7276C7D1Ev,_ZThn60_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S7276C7D0Ev,_ZThn60_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C78S7276C12__A1__8S7276C10[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7276C12D1Ev,_ZThn108_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7276C12D0Ev,_ZThn108_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C13__8S7276C12__8S7276C10[] = {
  ABISELECT(-160,-108),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-108),
  ABISELECT(-16,-8),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S7276C12D1Ev,_ZThn100_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S7276C12D0Ev,_ZThn100_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C12__8S7276C10[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7276C12D1Ev,_ZThn148_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7276C12D0Ev,_ZThn148_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C12__8S7276C10[] = {
  ABISELECT(-224,-148),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn248_N8S7276C12D1Ev,_ZThn160_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn248_N8S7276C12D0Ev,_ZThn160_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C12__8S7276C10[] = {
  ABISELECT(-248,-160),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C12__8S7276C10[] = {
  ABISELECT(-280,-184),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7276C17__8S7276C12__8S7276C10[] = {
  ABISELECT(176,112),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7276C12D1Ev,_ZThn88_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7276C12D0Ev,_ZThn88_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__A1__8S7276C12__8S7276C10[] = {
  ABISELECT(-128,-88),
  ABISELECT(16,12),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__A__8S7276C12__8S7276C10[] = {
  ABISELECT(160,104),
  ABISELECT(88,60),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev),
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__8S7276C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void _ZN8S7276C13D1Ev();
extern void _ZN8S7276C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C13__8S7276C10[] = {
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-108),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&_ZN8S7276C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C13D0Ev,
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C118S7276C13__A1__8S7276C10[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C118S7276C13__A1__8S7276C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C13__8S7276C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7276C13D1Ev,_ZThn40_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7276C13D0Ev,_ZThn40_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C13__8S7276C10[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn88_N8S7276C13D1Ev,_ZThn52_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn88_N8S7276C13D0Ev,_ZThn52_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C13__8S7276C10[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C13__8S7276C10[] = {
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__8S7276C10[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C16__A1__8S7276C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-56),
  ABISELECT(-160,-100),
  ABISELECT(-80,-52),
  ABISELECT(-304,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C38S7276C16__A1__8S7276C10[] = {
  ABISELECT(-88,-56),
  ABISELECT(-160,-100),
  ABISELECT(-80,-52),
  ABISELECT(-304,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C38S7276C16__A1__8S7276C10[] = {
  ABISELECT(80,52),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C38S7276C16__A1__8S7276C10[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C16__A1__8S7276C10[] = {
  ABISELECT(80,52),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-148),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C16__A1__8S7276C10[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
static  VTT_ENTRY vtt_S7276C10[] = {
  {&(_ZTV8S7276C10[11]),  11,83},
  {&(_tg__ZTV8S7276C12__8S7276C10[10]),  10,12},
  {&(_tg__ZTV8S7276C168S7276C12__8S7276C10[7]),  7,9},
  {&(_tg__ZTV7S7276C38S7276C168S7276C12__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C38S7276C168S7276C12__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C38S7276C168S7276C12__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C168S7276C12__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C5__8S7276C168S7276C12__8S7276C10[3]),  3,5},
  {&(_tg__ZTV8S7276C178S7276C12__8S7276C10[5]),  5,7},
  {&(_tg__ZTV8S7276C11__8S7276C178S7276C12__8S7276C10[4]),  4,6},
  {&(_tg__ZTV7S7276C5__8S7276C178S7276C12__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C78S7276C12__A1__8S7276C10[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C78S7276C12__A1__8S7276C10[3]),  3,5},
  {&(_tg__ZTV8S7276C13__8S7276C12__8S7276C10[8]),  8,10},
  {&(_tg__ZTV7S7276C5__8S7276C12__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C12__8S7276C10[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C12__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C12__8S7276C10[2]),  2,4},
  {&(_tg__ZTV8S7276C17__8S7276C12__8S7276C10[5]),  5,7},
  {&(_tg__ZTV8S7276C11__A1__8S7276C12__8S7276C10[4]),  4,6},
  {&(_tg__ZTV7S7276C7__A__8S7276C12__8S7276C10[5]),  5,7},
  {&(_ZTV8S7276C10[39]),  39,83},
  {&(_ZTV8S7276C10[44]),  44,83},
  {&(_ZTV8S7276C10[54]),  54,83},
  {&(_ZTV8S7276C10[62]),  62,83},
  {&(_ZTV8S7276C10[67]),  67,83},
  {&(_ZTV8S7276C10[71]),  71,83},
  {&(_ZTV8S7276C10[18]),  18,83},
  {&(_ZTV8S7276C10[25]),  25,83},
  {&(_ZTV8S7276C10[81]),  81,83},
  {&(_tg__ZTV8S7276C11__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__8S7276C10[3]),  3,5},
  {&(_tg__ZTV8S7276C13__8S7276C10[7]),  7,9},
  {&(_tg__ZTV8S7276C118S7276C13__A1__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C118S7276C13__A1__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C13__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C13__8S7276C10[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C13__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C13__8S7276C10[2]),  2,4},
  {&(_tg__ZTV7S7276C7__8S7276C10[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__8S7276C10[3]),  3,5},
  {&(_tg__ZTV8S7276C16__A1__8S7276C10[7]),  7,9},
  {&(_tg__ZTV7S7276C38S7276C16__A1__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C38S7276C16__A1__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C38S7276C16__A1__8S7276C10[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C16__A1__8S7276C10[6]),  6,8},
  {&(_tg__ZTV7S7276C5__8S7276C16__A1__8S7276C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C10[];
extern  VTBL_ENTRY _ZTV8S7276C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C10[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7276C13D0Ev,_ZThn52_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7276C13D1Ev,_ZThn52_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7276C13D0Ev,_ZThn40_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7276C13D1Ev,_ZThn40_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7276C12D0Ev,_ZThn88_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7276C12D1Ev,_ZThn88_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C12D0Ev,_ZThn148_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C12D1Ev,_ZThn148_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7276C12D0Ev,_ZThn160_N8S7276C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C12D0Ev,_ZThn100_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7276C12D1Ev,_ZThn160_N8S7276C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C12D1Ev,_ZThn100_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7276C12D0Ev,_ZThn108_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7276C12D1Ev,_ZThn108_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7276C7D0Ev,_ZThn60_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7276C7D1Ev,_ZThn60_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7276C17D0Ev,_ZThn68_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7276C17D1Ev,_ZThn68_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7276C17D0Ev,_ZThn56_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7276C17D1Ev,_ZThn56_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C16D0Ev,_ZThn100_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C16D1Ev,_ZThn100_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C16D0Ev,_ZThn148_N8S7276C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C16D1Ev,_ZThn148_N8S7276C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7276C3D0Ev,_ZThn100_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7276C3D1Ev,_ZThn100_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7276C3D0Ev,_ZThn148_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7276C3D1Ev,_ZThn148_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C10D0Ev,_ZTv0_n24_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C10D0Ev,_ZThn148_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C10D1Ev,_ZTv0_n24_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7276C10D1Ev,_ZThn148_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7276C10D0Ev,_ZThn200_N8S7276C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7276C10D0Ev,_ZThn108_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7276C10D1Ev,_ZThn200_N8S7276C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7276C10D1Ev,_ZThn108_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7276C10D0Ev,_ZThn160_N8S7276C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C10D0Ev,_ZThn100_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7276C10D1Ev,_ZThn160_N8S7276C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7276C10D1Ev,_ZThn100_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7276C10D0Ev,_ZThn88_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7276C10D1Ev,_ZThn88_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C10 = {  "S7276C10", // class name
  bases_S7276C10, 41,
  &(vtc_S7276C10[0]), // expected_vtbl_contents
  &(vtt_S7276C10[0]), // expected_vtt_contents
  ABISELECT(344,232), // object size
  NSPAIRA(_ZTI8S7276C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7276C10),83, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C10),47, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C18  : S7276C11 {
  virtual  ~S7276C18(); // _ZN8S7276C18D2Ev
  S7276C18(); // tgen
};
//SIG(-1 S7276C18) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} vd}


 S7276C18 ::~S7276C18(){ note_dtor("S7276C18", this);}
S7276C18 ::S7276C18(){ note_ctor("S7276C18", this);} // tgen

static void Test_S7276C18()
{
  extern Class_Descriptor cd_S7276C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7276C18, buf);
    S7276C18 *dp, &lv = *(dp=new (buf) S7276C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7276C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C18)");
    check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(16,12), "S7276C18");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(16,12), "S7276C18");
    check_base_class_offset(lv, (S7276C11*), 0, "S7276C18");
    test_class_info(&lv, &cd_S7276C18);
    dp->~S7276C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C18(Test_S7276C18, "S7276C18", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7276C18C1Ev();
extern void _ZN8S7276C18D2Ev();
Name_Map name_map_S7276C18[] = {
  NSPAIR(_ZN8S7276C18C1Ev),
  NSPAIR(_ZN8S7276C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
static Base_Class bases_S7276C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S7276C5,    ABISELECT(16,12), //bcp->offset
    5, //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_S7276C11,    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 _ZTI8S7276C18[];
extern void _ZN8S7276C18D1Ev();
extern void _ZN8S7276C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C18D1Ev,_ZThn12_N8S7276C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C18D0Ev,_ZThn12_N8S7276C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C18[0]),
  (VTBL_ENTRY)&_ZN8S7276C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C18D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C18[];
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__8S7276C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
static  VTT_ENTRY vtt_S7276C18[] = {
  {&(_ZTV8S7276C18[3]),  3,10},
  {&(_tg__ZTV8S7276C11__8S7276C18[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__8S7276C18[3]),  3,5},
  {&(_ZTV8S7276C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S7276C18[];
extern  VTBL_ENTRY _ZTV8S7276C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C18[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D0Ev,_ZThn12_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C11D1Ev,_ZThn12_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C18D0Ev,_ZThn12_N8S7276C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7276C18D1Ev,_ZThn12_N8S7276C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C18 = {  "S7276C18", // class name
  bases_S7276C18, 3,
  &(vtc_S7276C18[0]), // expected_vtbl_contents
  &(vtt_S7276C18[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7276C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7276C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C18),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C20  : virtual S7276C2 {
  ~S7276C20(); // tgen
  S7276C20(); // tgen
};
//SIG(-1 S7276C20) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd}}


S7276C20 ::~S7276C20(){ note_dtor("S7276C20", this);} // tgen
S7276C20 ::S7276C20(){ note_ctor("S7276C20", this);} // tgen

static void Test_S7276C20()
{
  extern Class_Descriptor cd_S7276C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7276C20, buf);
    S7276C20 *dp, &lv = *(dp=new (buf) S7276C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7276C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C20)");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*), ABISELECT(17,9), "S7276C20");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*), ABISELECT(8,4), "S7276C20");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*), ABISELECT(8,4), "S7276C20");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*), 0, "S7276C20");
    check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C20");
    /*is_ambiguous_... S7276C20::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(48,24), "S7276C20");
    check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(48,24), "S7276C20");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(60,32), "S7276C20");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*), ABISELECT(24,12), "S7276C20");
    check_base_class_offset(lv, (S7276C3*)(S7276C2*), ABISELECT(8,4), "S7276C20");
    check_base_class_offset(lv, (S7276C2*), 0, "S7276C20");
    test_class_info(&lv, &cd_S7276C20);
    dp->~S7276C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C20(Test_S7276C20, "S7276C20", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7276C20C1Ev();
extern void _ZN8S7276C20D1Ev();
Name_Map name_map_S7276C20[] = {
  NSPAIR(_ZN8S7276C20C1Ev),
  NSPAIR(_ZN8S7276C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S7276C2;
extern VTBL_ENTRY _ZTI7S7276C2[];
extern  VTBL_ENTRY _ZTV7S7276C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C2[];
static Base_Class bases_S7276C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S7276C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(48,24), //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
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7276C3,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7276C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7276C20[];
extern void _ZN8S7276C20D1Ev();
extern void _ZN8S7276C20D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7276C20D1Ev,_ZTv0_n28_N8S7276C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7276C20D1Ev,_ZThn4_N8S7276C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7276C20D0Ev,_ZTv0_n28_N8S7276C20D0Ev)();
extern void ABISELECT(_ZThn8_N8S7276C20D0Ev,_ZThn4_N8S7276C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C20D1Ev,_ZTv0_n24_N8S7276C20D1Ev)();
extern void ABISELECT(_ZThn24_N8S7276C20D1Ev,_ZThn12_N8S7276C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7276C20D0Ev,_ZTv0_n24_N8S7276C20D0Ev)();
extern void ABISELECT(_ZThn24_N8S7276C20D0Ev,_ZThn12_N8S7276C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C20D1Ev,_ZTv0_n12_N8S7276C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7276C20D1Ev,_ZThn24_N8S7276C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C20D0Ev,_ZTv0_n12_N8S7276C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7276C20D0Ev,_ZThn24_N8S7276C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C20[] = {
  0,
  0,
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&_ZN8S7276C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C20D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7276C20D1Ev,_ZTv0_n28_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7276C20D0Ev,_ZTv0_n28_N8S7276C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C20D1Ev,_ZTv0_n24_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C20D0Ev,_ZTv0_n24_N8S7276C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C20D1Ev,_ZTv0_n12_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C20D0Ev,_ZTv0_n12_N8S7276C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7276C20[];
extern void _ZN7S7276C2D1Ev();
extern void _ZN7S7276C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C2__8S7276C20[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&_ZN7S7276C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7276C2D1Ev,_ZThn4_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7276C2D0Ev,_ZThn4_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C3__7S7276C2__8S7276C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn12_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn12_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C2__8S7276C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C2__8S7276C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev),
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C3__8S7276C20[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C3__8S7276C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C3__8S7276C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C20[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__8S7276C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
static  VTT_ENTRY vtt_S7276C20[] = {
  {&(_ZTV8S7276C20[9]),  9,33},
  {&(_ZTV8S7276C20[9]),  9,33},
  {&(_ZTV8S7276C20[18]),  18,33},
  {&(_ZTV8S7276C20[26]),  26,33},
  {&(_ZTV8S7276C20[31]),  31,33},
  {&(_tg__ZTV7S7276C2__8S7276C20[7]),  7,9},
  {&(_tg__ZTV7S7276C3__7S7276C2__8S7276C20[7]),  7,9},
  {&(_tg__ZTV7S7276C7__7S7276C2__8S7276C20[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C2__8S7276C20[3]),  3,5},
  {&(_tg__ZTV7S7276C3__8S7276C20[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C3__8S7276C20[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C3__8S7276C20[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C20[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__8S7276C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7276C20[];
extern  VTBL_ENTRY _ZTV8S7276C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C20[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn12_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn12_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7276C2D0Ev,_ZThn4_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7276C2D1Ev,_ZThn4_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C20D0Ev,_ZTv0_n12_N8S7276C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7276C20D0Ev,_ZThn24_N8S7276C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C20D1Ev,_ZTv0_n12_N8S7276C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7276C20D1Ev,_ZThn24_N8S7276C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C20D0Ev,_ZTv0_n24_N8S7276C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7276C20D0Ev,_ZThn12_N8S7276C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7276C20D1Ev,_ZTv0_n24_N8S7276C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7276C20D1Ev,_ZThn12_N8S7276C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7276C20D0Ev,_ZTv0_n28_N8S7276C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7276C20D0Ev,_ZThn4_N8S7276C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7276C20D1Ev,_ZTv0_n28_N8S7276C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7276C20D1Ev,_ZThn4_N8S7276C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C20 = {  "S7276C20", // class name
  bases_S7276C20, 10,
  &(vtc_S7276C20[0]), // expected_vtbl_contents
  &(vtt_S7276C20[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7276C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7276C20),33, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7276C20),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7276C1  : S7276C2 , virtual S7276C10 , S7276C18 , virtual S2014C24 , virtual S7276C20 {
  ~S7276C1(); // tgen
  S7276C1(); // tgen
};
//SIG(1 S7276C1) C1{ BC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd} VBC10{ VBC11{ VBC5 FL} BC12{ VBC13{ BC11 VBC6 VBC8 VBC7 VBC14{ BC15{ BC6 BC5 BC4 BC8 Fs:16 FL} BC5 Fi} vd Fl FC11} BC16{ VBC7 BC3 VBC4 vd FC8[6]} BC17{ VBC11 VBC8 Fc:1} BC7} BC14 BC4 VBC16 vd} BC18{ BC11 vd} VBC19{ m} VBC20{ VBC2}}


S7276C1 ::~S7276C1(){ note_dtor("S7276C1", this);} // tgen
S7276C1 ::S7276C1(){ note_ctor("S7276C1", this);} // tgen

static void Test_S7276C1()
{
  extern Class_Descriptor cd_S7276C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,66)];
    init_test(&cd_S7276C1, buf);
    S7276C1 *dp, &lv = *(dp=new (buf) S7276C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,260), "sizeof(S7276C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7276C1)");
    /*is_ambiguous_... S7276C1::S7276C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*), ABISELECT(33,21), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*), ABISELECT(24,16), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C3 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*), ABISELECT(24,16), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C3 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C3*), 0, "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*), 0, "S7276C1");
    /*is_ambiguous_... S7276C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C13*), 0, "S7276C1");
    check_base_class_offset(lv, (S2014C28*)(S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), 0, "S7276C1");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C7*)(S7276C12*)(S7276C10*), 0, "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C3*)(S7276C16*), 0, "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*), ABISELECT(64,36), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*), ABISELECT(64,36), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C11 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C11*), ABISELECT(64,36), "S7276C1");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*)(S7276C13*), ABISELECT(64,36), "S7276C1");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C7*)(S7276C12*)(S7276C10*), ABISELECT(64,36), "S7276C1");
    check_base_class_offset(lv, (S7276C5*)(S7276C11*)(S7276C18*), ABISELECT(64,36), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*), ABISELECT(76,44), "S7276C1");
    /*is_ambiguous_... S7276C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C13*), ABISELECT(76,44), "S7276C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S7276C17*)(S7276C12*)(S7276C10*), ABISELECT(76,44), "S7276C1");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C7*)(S7276C12*)(S7276C10*), ABISELECT(76,44), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C3 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C3*), ABISELECT(40,24), "S7276C1");
    check_base_class_offset(lv, (S7276C7*)(S7276C13*), ABISELECT(40,24), "S7276C1");
    check_base_class_offset(lv, (S7276C7*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(40,24), "S7276C1");
    check_base_class_offset(lv, (S7276C7*)(S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(40,24), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C16*), ABISELECT(40,24), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C3*)(S7276C16*), ABISELECT(40,24), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C2 */ AMB_check_base_class_offset(lv, (S7276C3*)(S7276C2*), ABISELECT(24,16), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C2 */ AMB_check_base_class_offset(lv, (S7276C3*)(S7276C2*), ABISELECT(24,16), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C2 */ AMB_check_base_class_offset(lv, (S7276C2*), 0, "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C11 */ AMB_check_base_class_offset(lv, (S7276C11*)(S7276C10*), ABISELECT(216,140), "S7276C1");
    check_base_class_offset(lv, (S7276C11*)(S7276C17*)(S7276C12*)(S7276C10*), ABISELECT(216,140), "S7276C1");
    check_base_class_offset(lv, (S7276C11*)(S7276C13*), ABISELECT(232,152), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*), ABISELECT(288,188), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(288,188), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*), ABISELECT(288,188), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*), ABISELECT(297,193), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*), ABISELECT(300,196), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C15*)(S7276C14*), ABISELECT(288,188), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*), ABISELECT(320,212), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*), ABISELECT(320,212), "S7276C1");
    check_base_class_offset(lv, (S7276C14*)(S7276C13*), ABISELECT(288,188), "S7276C1");
    check_base_class_offset(lv, (S7276C13*)(S7276C12*)(S7276C10*), ABISELECT(232,152), "S7276C1");
    /*is_ambiguous_... S7276C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(89,53), "S7276C1");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(80,48), "S7276C1");
    /*is_ambiguous_... S7276C3::S7276C5 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(80,48), "S7276C1");
    check_base_class_offset(lv, (S7276C3*)(S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(80,48), "S7276C1");
    /*is_ambiguous_... S7276C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C16*)(S7276C12*)(S7276C10*), 0, "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C16*), 0, "S7276C1");
    check_base_class_offset(lv, (S7276C16*)(S7276C12*)(S7276C10*), ABISELECT(80,48), "S7276C1");
    check_base_class_offset(lv, (S7276C17*)(S7276C12*)(S7276C10*), ABISELECT(120,80), "S7276C1");
    /*is_ambiguous_... S7276C12::S7276C7 */ AMB_check_base_class_offset(lv, (S7276C7*)(S7276C12*)(S7276C10*), ABISELECT(136,88), "S7276C1");
    check_base_class_offset(lv, (S7276C12*)(S7276C10*), ABISELECT(80,48), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(160,100), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(160,100), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(160,100), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(169,105), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(172,108), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C15*)(S7276C14*)(S7276C10*), ABISELECT(160,100), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C14*)(S7276C10*), ABISELECT(192,124), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C14*)(S7276C10*), ABISELECT(192,124), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C14 */ AMB_check_base_class_offset(lv, (S7276C14*)(S7276C10*), ABISELECT(160,100), "S7276C1");
    /*is_ambiguous_... S7276C10::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C10*), ABISELECT(208,136), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C3*)(S7276C16*), ABISELECT(345,229), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7276C5*)(S7276C3*)(S7276C16*), ABISELECT(336,224), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C5*)(S7276C3*)(S7276C16*), ABISELECT(336,224), "S7276C1");
    /*is_ambiguous_... S7276C1::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C3*)(S7276C16*), ABISELECT(336,224), "S7276C1");
    /*is_ambiguous_... S7276C10::S7276C16 */ AMB_check_base_class_offset(lv, (S7276C16*)(S7276C10*), ABISELECT(336,224), "S7276C1");
    check_base_class_offset(lv, (S7276C10*), ABISELECT(80,48), "S7276C1");
    check_base_class_offset(lv, (S7276C11*)(S7276C18*), ABISELECT(8,4), "S7276C1");
    check_base_class_offset(lv, (S7276C18*), ABISELECT(8,4), "S7276C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S7276C1");
    check_base_class_offset(lv, (S7276C2*)(S7276C20*), ABISELECT(376,256), "S7276C1");
    check_base_class_offset(lv, (S7276C20*), ABISELECT(376,256), "S7276C1");
    test_class_info(&lv, &cd_S7276C1);
    dp->~S7276C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7276C1(Test_S7276C1, "S7276C1", ABISELECT(384,260));

#else // __cplusplus

extern void _ZN7S7276C1C1Ev();
extern void _ZN7S7276C1D1Ev();
Name_Map name_map_S7276C1[] = {
  NSPAIR(_ZN7S7276C1C1Ev),
  NSPAIR(_ZN7S7276C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S7276C2;
extern VTBL_ENTRY _ZTI7S7276C2[];
extern  VTBL_ENTRY _ZTV7S7276C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C2[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
extern Class_Descriptor cd_S7276C13;
extern VTBL_ENTRY _ZTI8S7276C13[];
extern  VTBL_ENTRY _ZTV8S7276C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C16;
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
extern Class_Descriptor cd_S7276C17;
extern VTBL_ENTRY _ZTI8S7276C17[];
extern  VTBL_ENTRY _ZTV8S7276C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C17[];
extern Class_Descriptor cd_S7276C7;
extern VTBL_ENTRY _ZTI7S7276C7[];
extern  VTBL_ENTRY _ZTV7S7276C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C7[];
extern Class_Descriptor cd_S7276C12;
extern VTBL_ENTRY _ZTI8S7276C12[];
extern  VTBL_ENTRY _ZTV8S7276C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7276C15;
extern VTBL_ENTRY _ZTI8S7276C15[];
extern  VTBL_ENTRY _ZTV8S7276C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C14;
extern VTBL_ENTRY _ZTI8S7276C14[];
extern  VTBL_ENTRY _ZTV8S7276C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7276C5;
extern VTBL_ENTRY _ZTI7S7276C5[];
extern  VTBL_ENTRY _ZTV7S7276C5[];
extern Class_Descriptor cd_S7276C3;
extern VTBL_ENTRY _ZTI7S7276C3[];
extern  VTBL_ENTRY _ZTV7S7276C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C3[];
extern Class_Descriptor cd_S7276C16;
extern VTBL_ENTRY _ZTI8S7276C16[];
extern  VTBL_ENTRY _ZTV8S7276C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C16[];
extern Class_Descriptor cd_S7276C10;
extern VTBL_ENTRY _ZTI8S7276C10[];
extern  VTBL_ENTRY _ZTV8S7276C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C10[];
extern Class_Descriptor cd_S7276C11;
extern VTBL_ENTRY _ZTI8S7276C11[];
extern  VTBL_ENTRY _ZTV8S7276C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C11[];
extern Class_Descriptor cd_S7276C18;
extern VTBL_ENTRY _ZTI8S7276C18[];
extern  VTBL_ENTRY _ZTV8S7276C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C18[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S7276C2;
extern VTBL_ENTRY _ZTI7S7276C2[];
extern  VTBL_ENTRY _ZTV7S7276C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C2[];
extern Class_Descriptor cd_S7276C20;
extern VTBL_ENTRY _ZTI8S7276C20[];
extern  VTBL_ENTRY _ZTV8S7276C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7276C20[];
static Base_Class bases_S7276C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(33,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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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_S7276C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(64,36), //bcp->offset
    40, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    7, //immediately_derived
  0, 1},
  {&cd_S7276C7,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7276C3,    ABISELECT(24,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7276C2,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7276C11,    ABISELECT(216,140), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7276C11,    ABISELECT(232,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(288,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, 0},
  {&cd_S2014C38,    ABISELECT(288,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
    14, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(288,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
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(297,193), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(300,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
    17, //immediately_derived
  0, 0},
  {&cd_S7276C15,    ABISELECT(288,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
    7, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(320,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
    19, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(320,212), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(288,188), //bcp->offset
    97, //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
    9, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7276C13,    ABISELECT(232,152), //bcp->offset
    87, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S2014C38,    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
    25, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    24, //immediately_derived
  0, 0},
  {&cd_S7276C5,    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
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7276C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7276C16,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7276C17,    ABISELECT(120,80), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7276C7,    ABISELECT(136,88), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7276C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    36, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7276C5,    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
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    36, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(172,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_S7276C15,    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
    22, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(192,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
    38, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(192,124), //bcp->offset
    77, //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
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7276C14,    ABISELECT(160,100), //bcp->offset
    73, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(345,229), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(336,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
    43, //immediately_derived
  0, 0},
  {&cd_S7276C5,    ABISELECT(336,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
    12, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7276C3,    ABISELECT(336,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7276C16,    ABISELECT(336,224), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S7276C10,    ABISELECT(80,48), //bcp->offset
    45, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7276C11,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7276C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7276C2,    ABISELECT(376,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7276C20,    ABISELECT(376,256), //bcp->offset
    116, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7276C1[];
extern void _ZN7S7276C1D1Ev();
extern void _ZN7S7276C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7276C1D1Ev,_ZThn4_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7276C1D0Ev,_ZThn4_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7276C1D1Ev,_ZTv0_n28_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C1D1Ev,_ZThn16_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7276C1D0Ev,_ZTv0_n28_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C1D0Ev,_ZThn16_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C1D1Ev,_ZTv0_n24_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C1D1Ev,_ZThn24_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C1D0Ev,_ZTv0_n24_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C1D0Ev,_ZThn24_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C1D1Ev,_ZTv0_n12_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7276C1D1Ev,_ZThn36_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C1D0Ev,_ZTv0_n12_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7276C1D0Ev,_ZThn36_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7276C1D1Ev,_ZTv0_n48_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7276C1D1Ev,_ZThn48_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7276C1D0Ev,_ZTv0_n48_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7276C1D0Ev,_ZThn48_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn40_n96_N7S7276C1D1Ev,_ZTvn32_n48_N7S7276C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N7S7276C1D0Ev,_ZTvn32_n48_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTvn56_n96_N7S7276C1D1Ev,_ZTvn40_n48_N7S7276C1D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N7S7276C1D0Ev,_ZTvn40_n48_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTvn80_n96_N7S7276C1D1Ev,_ZTvn52_n48_N7S7276C1D1Ev)();
extern void ABISELECT(_ZTvn80_n96_N7S7276C1D0Ev,_ZTvn52_n48_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTvn112_n96_N7S7276C1D1Ev,_ZTvn76_n48_N7S7276C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N7S7276C1D0Ev,_ZTvn76_n48_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7276C1D1Ev,_ZTv0_n16_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S7276C1D1Ev,_ZThn140_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7276C1D0Ev,_ZTv0_n16_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S7276C1D0Ev,_ZThn140_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S7276C1D1Ev,_ZThn152_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S7276C1D0Ev,_ZThn152_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C1D1Ev,_ZTv0_n12_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7276C1D1Ev,_ZThn188_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C1D0Ev,_ZTv0_n12_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7276C1D0Ev,_ZThn188_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N7S7276C1D1Ev,_ZTvn24_n12_N7S7276C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N7S7276C1D0Ev,_ZTvn24_n12_N7S7276C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S7276C1D1Ev,_ZThn224_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S7276C1D0Ev,_ZThn224_N7S7276C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S7276C1D1Ev,_ZThn256_N7S7276C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev)();
extern void ABISELECT(_ZThn376_N7S7276C1D0Ev,_ZThn256_N7S7276C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7276C1[] = {
  ABISELECT(376,256),
  ABISELECT(376,256),
  0,
  ABISELECT(336,224),
  0,
  ABISELECT(288,188),
  ABISELECT(232,152),
  ABISELECT(216,140),
  ABISELECT(80,48),
  ABISELECT(76,44),
  ABISELECT(64,36),
  ABISELECT(40,24),
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&_ZN7S7276C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C1D0Ev,
  ABISELECT(56,32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7276C1D1Ev,_ZThn4_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7276C1D0Ev,_ZThn4_N7S7276C1D0Ev),
  ABISELECT(-24,-16),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C1D1Ev,_ZTv0_n28_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C1D0Ev,_ZTv0_n28_N7S7276C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C1D1Ev,_ZTv0_n24_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C1D0Ev,_ZTv0_n24_N7S7276C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C1D1Ev,_ZTv0_n12_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C1D0Ev,_ZTv0_n12_N7S7276C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(256,176),
  ABISELECT(136,92),
  ABISELECT(208,140),
  ABISELECT(152,104),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7276C1D1Ev,_ZTv0_n48_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7276C1D0Ev,_ZTv0_n48_N7S7276C1D0Ev),
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,60),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N7S7276C1D1Ev,_ZTvn32_n48_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N7S7276C1D0Ev,_ZTvn32_n48_N7S7276C1D0Ev),
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N7S7276C1D1Ev,_ZTvn40_n48_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N7S7276C1D0Ev,_ZTvn40_n48_N7S7276C1D0Ev),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n96_N7S7276C1D1Ev,_ZTvn52_n48_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n96_N7S7276C1D0Ev,_ZTvn52_n48_N7S7276C1D0Ev),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N7S7276C1D1Ev,_ZTvn76_n48_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N7S7276C1D0Ev,_ZTvn76_n48_N7S7276C1D0Ev),
  ABISELECT(-216,-140),
  ABISELECT(-152,-104),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7276C1D1Ev,_ZTv0_n16_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7276C1D0Ev,_ZTv0_n16_N7S7276C1D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(56,36),
  ABISELECT(-192,-128),
  ABISELECT(-156,-108),
  ABISELECT(-232,-152),
  ABISELECT(-168,-116),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev),
  ABISELECT(-288,-188),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C1D1Ev,_ZTv0_n12_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C1D0Ev,_ZTv0_n12_N7S7276C1D0Ev),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N7S7276C1D1Ev,_ZTvn24_n12_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N7S7276C1D0Ev,_ZTvn24_n12_N7S7276C1D0Ev),
  ABISELECT(-336,-224),
  ABISELECT(-336,-224),
  ABISELECT(-260,-180),
  ABISELECT(-272,-188),
  ABISELECT(-296,-200),
  ABISELECT(-336,-224),
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev),
  0,
  ABISELECT(-376,-256),
  ABISELECT(-300,-212),
  ABISELECT(-312,-220),
  ABISELECT(-336,-232),
  ABISELECT(-376,-256),
  ABISELECT(-352,-240),
  ABISELECT(-376,-256),
  (VTBL_ENTRY)&(_ZTI7S7276C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7276C1[];
extern void _ZN7S7276C2D1Ev();
extern void _ZN7S7276C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C2__A__7S7276C1[] = {
  ABISELECT(76,44),
  ABISELECT(64,36),
  ABISELECT(40,24),
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&_ZN7S7276C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn16_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn16_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C3__7S7276C2__A__7S7276C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C2__A__7S7276C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7276C2D1Ev,_ZThn36_N7S7276C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7276C2D0Ev,_ZThn36_N7S7276C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C2__A__7S7276C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev),
};
extern void _ZN8S7276C18D1Ev();
extern void _ZN8S7276C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C18__7S7276C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C18[0]),
  (VTBL_ENTRY)&_ZN8S7276C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C18D0Ev,
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C118S7276C18__A2__7S7276C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn32_N8S7276C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn32_N8S7276C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C118S7276C18__A2__7S7276C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C18D1Ev,_ZThn32_N8S7276C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C18D0Ev,_ZThn32_N8S7276C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C18__7S7276C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev),
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C3__7S7276C1[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C3__7S7276C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C3__7S7276C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C1[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C7__7S7276C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void _ZN8S7276C10D1Ev();
extern void _ZN8S7276C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C10__7S7276C1[] = {
  ABISELECT(256,176),
  ABISELECT(136,92),
  ABISELECT(208,140),
  ABISELECT(152,104),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&_ZN8S7276C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C10D0Ev,
};
extern void _ZN8S7276C12D1Ev();
extern void _ZN8S7276C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(136,92),
  ABISELECT(208,140),
  ABISELECT(152,104),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&_ZN8S7276C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C12D0Ev,
};
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C168S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C168S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C168S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
extern void _ZN8S7276C17D1Ev();
extern void _ZN8S7276C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C178S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&_ZN8S7276C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S7276C17D1Ev,_ZThn60_N8S7276C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S7276C17D0Ev,_ZThn60_N8S7276C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C178S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-152,-104),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C178S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S7276C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D1Ev,_ZTv0_n12_N8S7276C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C17D0Ev,_ZTv0_n12_N8S7276C17D0Ev),
};
extern void _ZN7S7276C7D1Ev();
extern void _ZN7S7276C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C78S7276C128S7276C10__A1__7S7276C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&_ZN7S7276C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__7S7276C78S7276C128S7276C10__A1__7S7276C1[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI7S7276C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7276C12D1Ev,_ZThn104_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7276C12D0Ev,_ZThn104_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C13__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(56,36),
  ABISELECT(-192,-128),
  ABISELECT(-156,-108),
  ABISELECT(-232,-152),
  ABISELECT(-168,-116),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D1Ev,_ZTv0_n24_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C12D0Ev,_ZTv0_n24_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7276C12D1Ev,_ZThn140_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S7276C12D0Ev,_ZThn140_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D1Ev,_ZTvn24_n12_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C12D0Ev,_ZTvn24_n12_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7276C17__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,60),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D1Ev,_ZThn32_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C12D0Ev,_ZThn32_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7276C12D1Ev,_ZThn92_N8S7276C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7276C12D0Ev,_ZThn92_N8S7276C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__A1__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-152,-104),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__A__8S7276C128S7276C10__7S7276C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D1Ev,_ZThn40_N8S7276C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C12D0Ev,_ZThn40_N8S7276C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S7276C10D1Ev,_ZThn92_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S7276C10D0Ev,_ZThn92_N8S7276C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C11__8S7276C10__7S7276C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-152,-104),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C10__7S7276C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S7276C10D1Ev,_ZThn104_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S7276C10D0Ev,_ZThn104_N8S7276C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C13__8S7276C10__7S7276C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(56,36),
  ABISELECT(-192,-128),
  ABISELECT(-156,-108),
  ABISELECT(-232,-152),
  ABISELECT(-168,-116),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C10D1Ev,_ZTv0_n24_N8S7276C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C10D0Ev,_ZTv0_n24_N8S7276C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C10__7S7276C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C10D1Ev,_ZTv0_n24_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C10D0Ev,_ZTv0_n24_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7276C10D1Ev,_ZThn140_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7276C10D0Ev,_ZThn140_N8S7276C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C10__7S7276C1[] = {
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C10D1Ev,_ZTvn24_n12_N8S7276C10D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C10D0Ev,_ZTvn24_n12_N8S7276C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C10__7S7276C1[] = {
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C10D1Ev,_ZTvn24_n12_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C10D0Ev,_ZTvn24_n12_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7276C10D1Ev,_ZThn32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S7276C10D0Ev,_ZThn32_N8S7276C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7276C178S7276C12__8S7276C10__7S7276C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,60),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C10D1Ev,_ZThn32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7276C10D0Ev,_ZThn32_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7276C10D1Ev,_ZThn40_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C10D0Ev,_ZThn40_N8S7276C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C78S7276C12__A1__8S7276C10__7S7276C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C10D1Ev,_ZThn40_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7276C10D0Ev,_ZThn40_N8S7276C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7276C10D1Ev,_ZThn176_N8S7276C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S7276C10D0Ev,_ZThn176_N8S7276C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C16__A1__8S7276C10__7S7276C1[] = {
  ABISELECT(-256,-176),
  ABISELECT(-336,-224),
  ABISELECT(-260,-180),
  ABISELECT(-272,-188),
  ABISELECT(-296,-200),
  ABISELECT(-336,-224),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S7276C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev),
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C11__7S7276C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C11__7S7276C1[] = {
  ABISELECT(152,104),
  ABISELECT(152,104),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void _ZN8S7276C13D1Ev();
extern void _ZN8S7276C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C13__7S7276C1[] = {
  ABISELECT(56,36),
  ABISELECT(-192,-128),
  ABISELECT(-156,-108),
  ABISELECT(-232,-152),
  ABISELECT(-168,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&_ZN8S7276C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C13D0Ev,
};
extern void _ZN8S7276C11D1Ev();
extern void _ZN8S7276C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C118S7276C13__A1__7S7276C1[] = {
  ABISELECT(-168,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&_ZN8S7276C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C118S7276C13__A1__7S7276C1[] = {
  ABISELECT(168,116),
  ABISELECT(168,116),
  (VTBL_ENTRY)&(_ZTI8S7276C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C13__7S7276C1[] = {
  ABISELECT(168,116),
  ABISELECT(168,116),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C13__7S7276C1[] = {
  ABISELECT(192,128),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(192,128),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D1Ev,_ZTv0_n24_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C13D0Ev,_ZTv0_n24_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C14__8S7276C13__7S7276C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C58S7276C14__A2__8S7276C13__7S7276C1[] = {
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7276C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D1Ev,_ZTvn24_n12_N8S7276C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7276C13D0Ev,_ZTvn24_n12_N8S7276C13D0Ev),
};
extern void _ZN8S7276C16D1Ev();
extern void _ZN8S7276C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7276C16__A1__7S7276C1[] = {
  ABISELECT(-336,-224),
  ABISELECT(-260,-180),
  ABISELECT(-272,-188),
  ABISELECT(-296,-200),
  ABISELECT(-336,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&_ZN8S7276C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7276C16D0Ev,
};
extern void _ZN7S7276C3D1Ev();
extern void _ZN7S7276C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C38S7276C16__A2__7S7276C1[] = {
  ABISELECT(-260,-180),
  ABISELECT(-272,-188),
  ABISELECT(-296,-200),
  ABISELECT(-336,-224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&_ZN7S7276C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C38S7276C16__A2__7S7276C1[] = {
  ABISELECT(296,200),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(296,200),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C38S7276C16__A2__7S7276C1[] = {
  ABISELECT(272,188),
  ABISELECT(272,188),
  (VTBL_ENTRY)&(_ZTI7S7276C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C16__A1__7S7276C1[] = {
  ABISELECT(296,200),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(296,200),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D1Ev,_ZTv0_n24_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C16D0Ev,_ZTv0_n24_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__8S7276C16__A1__7S7276C1[] = {
  ABISELECT(272,188),
  ABISELECT(272,188),
  (VTBL_ENTRY)&(_ZTI8S7276C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D1Ev,_ZTv0_n12_N8S7276C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C16D0Ev,_ZTv0_n12_N8S7276C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7276C20D1Ev,_ZTv0_n32_N8S7276C20D1Ev)();
extern void _ZN8S7276C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7276C20D0Ev,_ZTv0_n32_N8S7276C20D0Ev)();
extern void _ZN8S7276C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7276C20__7S7276C1[] = {
  0,
  0,
  ABISELECT(-300,-212),
  ABISELECT(-312,-220),
  ABISELECT(-336,-232),
  ABISELECT(-376,-256),
  ABISELECT(-352,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C20D1Ev,_ZTv0_n32_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7276C20D0Ev,_ZTv0_n32_N8S7276C20D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S7276C20D1Ev,_ZTv0_n28_N8S7276C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7276C20D0Ev,_ZTv0_n28_N8S7276C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C3__8S7276C20__7S7276C1[] = {
  ABISELECT(352,240),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(352,240),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7276C20D1Ev,_ZTv0_n28_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7276C20D0Ev,_ZTv0_n28_N8S7276C20D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7276C20D1Ev,_ZTv0_n24_N8S7276C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7276C20D0Ev,_ZTv0_n24_N8S7276C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__8S7276C20__7S7276C1[] = {
  ABISELECT(336,232),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(336,232),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C20D1Ev,_ZTv0_n24_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7276C20D0Ev,_ZTv0_n24_N8S7276C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7276C20D1Ev,_ZTv0_n12_N8S7276C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7276C20D0Ev,_ZTv0_n12_N8S7276C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__8S7276C20__7S7276C1[] = {
  ABISELECT(312,220),
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI8S7276C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C20D1Ev,_ZTv0_n12_N8S7276C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7276C20D0Ev,_ZTv0_n12_N8S7276C20D0Ev),
};
extern void _ZN7S7276C2D1Ev();
extern void _ZN7S7276C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7276C2__A1__7S7276C1[] = {
  ABISELECT(-300,-212),
  ABISELECT(-312,-220),
  ABISELECT(-336,-232),
  ABISELECT(-376,-256),
  ABISELECT(-352,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&_ZN7S7276C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7276C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C3__7S7276C2__A1__7S7276C1[] = {
  ABISELECT(352,240),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(352,240),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C7__7S7276C2__A1__7S7276C1[] = {
  ABISELECT(336,232),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(336,232),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7276C5__A1__7S7276C2__A1__7S7276C1[] = {
  ABISELECT(312,220),
  ABISELECT(312,220),
  (VTBL_ENTRY)&(_ZTI7S7276C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev),
};
static  VTT_ENTRY vtt_S7276C1[] = {
  {&(_ZTV7S7276C1[16]),  16,127},
  {&(_tg__ZTV7S7276C2__A__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C3__7S7276C2__A__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C7__7S7276C2__A__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C2__A__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C18__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C118S7276C18__A2__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C118S7276C18__A2__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C18__7S7276C1[3]),  3,5},
  {&(_ZTV7S7276C1[30]),  30,127},
  {&(_ZTV7S7276C1[38]),  38,127},
  {&(_ZTV7S7276C1[43]),  43,127},
  {&(_ZTV7S7276C1[57]),  57,127},
  {&(_ZTV7S7276C1[85]),  85,127},
  {&(_ZTV7S7276C1[95]),  95,127},
  {&(_ZTV7S7276C1[100]),  100,127},
  {&(_ZTV7S7276C1[104]),  104,127},
  {&(_ZTV7S7276C1[64]),  64,127},
  {&(_ZTV7S7276C1[71]),  71,127},
  {&(_ZTV7S7276C1[75]),  75,127},
  {&(_ZTV7S7276C1[79]),  79,127},
  {&(_ZTV7S7276C1[114]),  114,127},
  {&(_ZTV7S7276C1[21]),  21,127},
  {&(_ZTV7S7276C1[125]),  125,127},
  {&(_ZTV7S7276C1[125]),  125,127},
  {&(_tg__ZTV7S7276C3__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C3__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C3__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C7__7S7276C1[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C7__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C10__7S7276C1[11]),  11,13},
  {&(_tg__ZTV8S7276C128S7276C10__7S7276C1[10]),  10,12},
  {&(_tg__ZTV8S7276C168S7276C128S7276C10__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C38S7276C168S7276C128S7276C10__A1__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C168S7276C128S7276C10__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__8S7276C168S7276C128S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C178S7276C128S7276C10__7S7276C1[5]),  5,7},
  {&(_tg__ZTV8S7276C11__8S7276C178S7276C128S7276C10__7S7276C1[4]),  4,6},
  {&(_tg__ZTV7S7276C5__8S7276C178S7276C128S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C78S7276C128S7276C10__A1__7S7276C1[5]),  5,7},
  {&(_tg__ZTV7S7276C5__7S7276C78S7276C128S7276C10__A1__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C13__8S7276C128S7276C10__7S7276C1[8]),  8,10},
  {&(_tg__ZTV7S7276C5__8S7276C128S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C128S7276C10__7S7276C1[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C128S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C128S7276C10__7S7276C1[2]),  2,4},
  {&(_tg__ZTV8S7276C17__8S7276C128S7276C10__7S7276C1[5]),  5,7},
  {&(_tg__ZTV8S7276C11__A1__8S7276C128S7276C10__7S7276C1[4]),  4,6},
  {&(_tg__ZTV7S7276C7__A__8S7276C128S7276C10__7S7276C1[5]),  5,7},
  {&(_tg__ZTV8S7276C11__8S7276C10__7S7276C1[4]),  4,6},
  {&(_tg__ZTV7S7276C5__8S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C13__8S7276C10__7S7276C1[8]),  8,10},
  {&(_tg__ZTV7S7276C7__8S7276C10__7S7276C1[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C10__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C10__7S7276C1[2]),  2,4},
  {&(_tg__ZTV8S7276C178S7276C12__8S7276C10__7S7276C1[5]),  5,7},
  {&(_tg__ZTV7S7276C78S7276C12__A1__8S7276C10__7S7276C1[5]),  5,7},
  {&(_tg__ZTV8S7276C16__A1__8S7276C10__7S7276C1[8]),  8,10},
  {&(_tg__ZTV8S7276C11__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C11__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C13__7S7276C1[7]),  7,9},
  {&(_tg__ZTV8S7276C118S7276C13__A1__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C118S7276C13__A1__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C5__8S7276C13__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C13__7S7276C1[6]),  6,8},
  {&(_tg__ZTV8S7276C14__8S7276C13__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C58S7276C14__A2__8S7276C13__7S7276C1[2]),  2,4},
  {&(_tg__ZTV8S7276C16__A1__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C38S7276C16__A2__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C7__7S7276C38S7276C16__A2__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C38S7276C16__A2__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C7__8S7276C16__A1__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__8S7276C16__A1__7S7276C1[3]),  3,5},
  {&(_tg__ZTV8S7276C20__7S7276C1[9]),  9,11},
  {&(_tg__ZTV8S7276C20__7S7276C1[9]),  9,11},
  {&(_tg__ZTV7S7276C3__8S7276C20__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C7__8S7276C20__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__8S7276C20__7S7276C1[3]),  3,5},
  {&(_tg__ZTV7S7276C2__A1__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C3__7S7276C2__A1__7S7276C1[7]),  7,9},
  {&(_tg__ZTV7S7276C7__7S7276C2__A1__7S7276C1[6]),  6,8},
  {&(_tg__ZTV7S7276C5__A1__7S7276C2__A1__7S7276C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7276C1[];
extern  VTBL_ENTRY _ZTV7S7276C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7276C1[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C20D0Ev,_ZTv0_n32_N8S7276C20D0Ev), // 
  (VTBL_ENTRY)_ZN8S7276C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C20D1Ev,_ZTv0_n32_N8S7276C20D1Ev), // 
  (VTBL_ENTRY)_ZN8S7276C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D0Ev,_ZTv0_n12_N8S7276C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D0Ev,_ZThn36_N8S7276C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C13D1Ev,_ZTv0_n12_N8S7276C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C13D1Ev,_ZThn36_N8S7276C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C10D0Ev,_ZTv0_n12_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7276C10D0Ev,_ZThn140_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C10D1Ev,_ZTv0_n12_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7276C10D1Ev,_ZThn140_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C10D0Ev,_ZTv0_n32_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7276C10D0Ev,_ZThn176_N8S7276C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C10D0Ev,_ZThn104_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C10D1Ev,_ZTv0_n32_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7276C10D1Ev,_ZThn176_N8S7276C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C10D1Ev,_ZThn104_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C10D0Ev,_ZTv0_n16_N8S7276C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C10D0Ev,_ZThn92_N8S7276C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C10D1Ev,_ZTv0_n16_N8S7276C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C10D1Ev,_ZThn92_N8S7276C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D0Ev,_ZTv0_n16_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C12D0Ev,_ZThn92_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C12D1Ev,_ZTv0_n16_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7276C12D1Ev,_ZThn92_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D0Ev,_ZTv0_n12_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7276C12D0Ev,_ZThn140_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C12D1Ev,_ZTv0_n12_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7276C12D1Ev,_ZThn140_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D0Ev,_ZTv0_n32_N8S7276C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C12D0Ev,_ZThn104_N8S7276C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7276C12D1Ev,_ZTv0_n32_N8S7276C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7276C12D1Ev,_ZThn104_N8S7276C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D0Ev,_ZTv0_n16_N8S7276C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C17D0Ev,_ZThn60_N8S7276C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7276C17D1Ev,_ZTv0_n16_N8S7276C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7276C17D1Ev,_ZThn60_N8S7276C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D0Ev,_ZTv0_n12_N7S7276C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D0Ev,_ZThn12_N7S7276C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C7D1Ev,_ZTv0_n12_N7S7276C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C7D1Ev,_ZThn12_N7S7276C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D0Ev,_ZTv0_n12_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D0Ev,_ZThn20_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C3D1Ev,_ZTv0_n12_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C3D1Ev,_ZThn20_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D0Ev,_ZTv0_n24_N7S7276C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D0Ev,_ZThn8_N7S7276C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C3D1Ev,_ZTv0_n24_N7S7276C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7276C3D1Ev,_ZThn8_N7S7276C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C18D0Ev,_ZTv0_n12_N8S7276C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C18D0Ev,_ZThn32_N8S7276C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C18D1Ev,_ZTv0_n12_N8S7276C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C18D1Ev,_ZThn32_N8S7276C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D0Ev,_ZTv0_n12_N8S7276C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D0Ev,_ZThn32_N8S7276C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7276C11D1Ev,_ZTv0_n12_N8S7276C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7276C11D1Ev,_ZThn32_N8S7276C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D0Ev,_ZTv0_n12_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C2D0Ev,_ZThn36_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C2D1Ev,_ZTv0_n12_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C2D1Ev,_ZThn36_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D0Ev,_ZTv0_n24_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C2D0Ev,_ZThn24_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C2D1Ev,_ZTv0_n24_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C2D1Ev,_ZThn24_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D0Ev,_ZTv0_n28_N7S7276C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D0Ev,_ZThn16_N7S7276C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C2D1Ev,_ZTv0_n28_N7S7276C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C2D1Ev,_ZThn16_N7S7276C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7276C1D0Ev,_ZTv0_n32_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7276C1D0Ev,_ZThn256_N7S7276C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7276C1D0Ev,_ZThn224_N7S7276C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7276C1D0Ev,_ZThn152_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7276C1D1Ev,_ZTv0_n32_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7276C1D1Ev,_ZThn256_N7S7276C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7276C1D1Ev,_ZThn224_N7S7276C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7276C1D1Ev,_ZThn152_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7276C1D0Ev,_ZTv0_n16_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7276C1D0Ev,_ZThn140_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7276C1D1Ev,_ZTv0_n16_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7276C1D1Ev,_ZThn140_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7276C1D0Ev,_ZTv0_n48_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7276C1D0Ev,_ZThn48_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7276C1D1Ev,_ZTv0_n48_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7276C1D1Ev,_ZThn48_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C1D0Ev,_ZTv0_n12_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7276C1D0Ev,_ZThn188_N7S7276C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C1D0Ev,_ZThn36_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7276C1D1Ev,_ZTv0_n12_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7276C1D1Ev,_ZThn188_N7S7276C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7276C1D1Ev,_ZThn36_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C1D0Ev,_ZTv0_n24_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C1D0Ev,_ZThn24_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7276C1D1Ev,_ZTv0_n24_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7276C1D1Ev,_ZThn24_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C1D0Ev,_ZTv0_n28_N7S7276C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C1D0Ev,_ZThn16_N7S7276C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7276C1D1Ev,_ZTv0_n28_N7S7276C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7276C1D1Ev,_ZThn16_N7S7276C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7276C1 = {  "S7276C1", // class name
  bases_S7276C1, 52,
  &(vtc_S7276C1[0]), // expected_vtbl_contents
  &(vtt_S7276C1[0]), // expected_vtt_contents
  ABISELECT(384,260), // object size
  NSPAIRA(_ZTI7S7276C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7276C1),127, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7276C1),84, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C5  : S2014C38 {
  ::S2014C38 s7275c5f0;
  virtual  ~S7275C5(); // _ZN7S7275C5D1Ev
  S7275C5(); // tgen
};
//SIG(-1 S7275C5) C1{ BC2{ m} vd FC2}


 S7275C5 ::~S7275C5(){ note_dtor("S7275C5", this);}
S7275C5 ::S7275C5(){ note_ctor("S7275C5", this);} // tgen

static void Test_S7275C5()
{
  extern Class_Descriptor cd_S7275C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7275C5, buf);
    S7275C5 *dp, &lv = *(dp=new (buf) S7275C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7275C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C5)");
    check_base_class_offset(lv, (S2014C38*), 0, "S7275C5");
    check_field_offset(lv, s7275c5f0, ABISELECT(8,4), "S7275C5.s7275c5f0");
    test_class_info(&lv, &cd_S7275C5);
    dp->~S7275C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C5(Test_S7275C5, "S7275C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7275C5C1Ev();
extern void _ZN7S7275C5D1Ev();
Name_Map name_map_S7275C5[] = {
  NSPAIR(_ZN7S7275C5C1Ev),
  NSPAIR(_ZN7S7275C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S7275C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7275C5[];
extern void _ZN7S7275C5D1Ev();
extern void _ZN7S7275C5D0Ev();
static  VTBL_ENTRY vtc_S7275C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C5[0]),
  (VTBL_ENTRY)&_ZN7S7275C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
Class_Descriptor cd_S7275C5 = {  "S7275C5", // class name
  bases_S7275C5, 1,
  &(vtc_S7275C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7275C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7275C5),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  S7275C7  : virtual S2014C28 , virtual S7275C5 , virtual S3222C8_nt {
  void *s7275c7f0;
  ::S19762C18_nt s7275c7f1;
  virtual  ~S7275C7(); // _ZN7S7275C7D2Ev
  S7275C7(); // tgen
};
//SIG(-1 S7275C7) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S7275C7 ::~S7275C7(){ note_dtor("S7275C7", this);}
S7275C7 ::S7275C7(){ note_ctor("S7275C7", this);} // tgen

static void Test_S7275C7()
{
  extern Class_Descriptor cd_S7275C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7275C7, buf);
    S7275C7 *dp, &lv = *(dp=new (buf) S7275C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7275C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C7)");
    check_base_class_offset(lv, (S2014C28*), 0, "S7275C7");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(24,12), "S7275C7");
    check_base_class_offset(lv, (S7275C5*), ABISELECT(24,12), "S7275C7");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S7275C7");
    check_field_offset(lv, s7275c7f0, ABISELECT(8,4), "S7275C7.s7275c7f0");
    check_field_offset(lv, s7275c7f1, ABISELECT(16,8), "S7275C7.s7275c7f1");
    test_class_info(&lv, &cd_S7275C7);
    dp->~S7275C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C7(Test_S7275C7, "S7275C7", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7275C7C1Ev();
extern void _ZN7S7275C7D2Ev();
Name_Map name_map_S7275C7[] = {
  NSPAIR(_ZN7S7275C7C1Ev),
  NSPAIR(_ZN7S7275C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7275C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7275C7[];
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C7[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7275C7[];
static  VTT_ENTRY vtt_S7275C7[] = {
  {&(_ZTV7S7275C7[5]),  5,12},
  {&(_ZTV7S7275C7[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C7 = {  "S7275C7", // class name
  bases_S7275C7, 4,
  &(vtc_S7275C7[0]), // expected_vtbl_contents
  &(vtt_S7275C7[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7275C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7275C7),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7275C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C3  : S2014C38 , S7275C5 , virtual S2014C28 , virtual S7275C7 {
  virtual  ~S7275C3(); // _ZN7S7275C3D2Ev
  S7275C3(); // tgen
};
//SIG(-1 S7275C3) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S7275C3 ::~S7275C3(){ note_dtor("S7275C3", this);}
S7275C3 ::S7275C3(){ note_ctor("S7275C3", this);} // tgen

static void Test_S7275C3()
{
  extern Class_Descriptor cd_S7275C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7275C3, buf);
    S7275C3 *dp, &lv = *(dp=new (buf) S7275C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7275C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C3)");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S7275C3");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), 0, "S7275C3");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*), 0, "S7275C3");
    check_base_class_offset(lv, (S2014C28*), 0, "S7275C3");
    check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C3");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(40,20), "S7275C3");
    check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(40,20), "S7275C3");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(52,28), "S7275C3");
    check_base_class_offset(lv, (S7275C7*), ABISELECT(16,8), "S7275C3");
    test_class_info(&lv, &cd_S7275C3);
    dp->~S7275C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C3(Test_S7275C3, "S7275C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7275C3C1Ev();
extern void _ZN7S7275C3D2Ev();
Name_Map name_map_S7275C3[] = {
  NSPAIR(_ZN7S7275C3C1Ev),
  NSPAIR(_ZN7S7275C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
static Base_Class bases_S7275C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI7S7275C3[];
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C3[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7275C3[];
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C3[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__7S7275C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
static  VTT_ENTRY vtt_S7275C3[] = {
  {&(_ZTV7S7275C3[6]),  6,21},
  {&(_ZTV7S7275C3[14]),  14,21},
  {&(_ZTV7S7275C3[19]),  19,21},
  {&(_tg__ZTV7S7275C7__7S7275C3[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__7S7275C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C3 = {  "S7275C3", // class name
  bases_S7275C3, 8,
  &(vtc_S7275C3[0]), // expected_vtbl_contents
  &(vtt_S7275C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7275C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7275C3),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7275C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C2  : virtual S7275C3 {
  virtual  ~S7275C2(); // _ZN7S7275C2D2Ev
  S7275C2(); // tgen
};
//SIG(-1 S7275C2) C1{ VBC2{ BC3{ m} BC4{ BC3 vd FC3} VBC5{ m} VBC6{ VBC5 VBC4 VBC7{ m Fi} vd Fp FC8{}} vd} vd}


 S7275C2 ::~S7275C2(){ note_dtor("S7275C2", this);}
S7275C2 ::S7275C2(){ note_ctor("S7275C2", this);} // tgen

static void Test_S7275C2()
{
  extern Class_Descriptor cd_S7275C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7275C2, buf);
    S7275C2 *dp, &lv = *(dp=new (buf) S7275C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7275C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C2)");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*), ABISELECT(17,9), "S7275C2");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*), ABISELECT(8,4), "S7275C2");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*), ABISELECT(8,4), "S7275C2");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*), 0, "S7275C2");
    check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C2");
    /*is_ambiguous_... S7275C2::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(48,24), "S7275C2");
    check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(48,24), "S7275C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(60,32), "S7275C2");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*), ABISELECT(24,12), "S7275C2");
    check_base_class_offset(lv, (S7275C3*), ABISELECT(8,4), "S7275C2");
    test_class_info(&lv, &cd_S7275C2);
    dp->~S7275C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C2(Test_S7275C2, "S7275C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7275C2C1Ev();
extern void _ZN7S7275C2D2Ev();
Name_Map name_map_S7275C2[] = {
  NSPAIR(_ZN7S7275C2C1Ev),
  NSPAIR(_ZN7S7275C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
static Base_Class bases_S7275C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S7275C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(48,24), //bcp->offset
    26, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S7275C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //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 _ZTI7S7275C2[];
extern void _ZN7S7275C2D1Ev();
extern void _ZN7S7275C2D0Ev();
extern void ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7275C2D1Ev,_ZThn4_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7275C2D0Ev,_ZThn4_N7S7275C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn12_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn12_N7S7275C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C2[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&_ZN7S7275C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7275C2[];
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C3__7S7275C2[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C3__7S7275C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C3__7S7275C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C2[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__7S7275C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
static  VTT_ENTRY vtt_S7275C2[] = {
  {&(_ZTV7S7275C2[7]),  7,31},
  {&(_ZTV7S7275C2[16]),  16,31},
  {&(_ZTV7S7275C2[24]),  24,31},
  {&(_ZTV7S7275C2[29]),  29,31},
  {&(_tg__ZTV7S7275C3__7S7275C2[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C3__7S7275C2[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C3__7S7275C2[3]),  3,5},
  {&(_tg__ZTV7S7275C7__7S7275C2[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__7S7275C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7275C2[];
extern  VTBL_ENTRY _ZTV7S7275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C2[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn12_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn12_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7275C2D0Ev,_ZThn4_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7275C2D1Ev,_ZThn4_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C2 = {  "S7275C2", // class name
  bases_S7275C2, 9,
  &(vtc_S7275C2[0]), // expected_vtbl_contents
  &(vtt_S7275C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7275C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7275C2),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7275C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C11  : virtual S7275C5 {
  __tsi64 s7275c11f0;
  ~S7275C11(); // tgen
  S7275C11(); // tgen
};
//SIG(-1 S7275C11) C1{ VBC2{ BC3{ m} vd FC3} FL}


S7275C11 ::~S7275C11(){ note_dtor("S7275C11", this);} // tgen
S7275C11 ::S7275C11(){ note_ctor("S7275C11", this);} // tgen

static void Test_S7275C11()
{
  extern Class_Descriptor cd_S7275C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7275C11, buf);
    S7275C11 *dp, &lv = *(dp=new (buf) S7275C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7275C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C11)");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(16,12), "S7275C11");
    check_base_class_offset(lv, (S7275C5*), ABISELECT(16,12), "S7275C11");
    check_field_offset(lv, s7275c11f0, ABISELECT(8,4), "S7275C11.s7275c11f0");
    test_class_info(&lv, &cd_S7275C11);
    dp->~S7275C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C11(Test_S7275C11, "S7275C11", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7275C11C1Ev();
extern void _ZN8S7275C11D1Ev();
Name_Map name_map_S7275C11[] = {
  NSPAIR(_ZN8S7275C11C1Ev),
  NSPAIR(_ZN8S7275C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
static Base_Class bases_S7275C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S7275C5,    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 _ZTI8S7275C11[];
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C11[];
static  VTT_ENTRY vtt_S7275C11[] = {
  {&(_ZTV8S7275C11[3]),  3,10},
  {&(_ZTV8S7275C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C11 = {  "S7275C11", // class name
  bases_S7275C11, 2,
  &(vtc_S7275C11[0]), // expected_vtbl_contents
  &(vtt_S7275C11[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7275C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7275C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C15  : S2014C28 , S7275C5 , S2014C38 , S3222C8_nt {
  short s7275c15f0:16;
  long s7275c15f1;
  ~S7275C15(); // tgen
  S7275C15(); // tgen
};
//SIG(-1 S7275C15) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 Fl}


S7275C15 ::~S7275C15(){ note_dtor("S7275C15", this);} // tgen
S7275C15 ::S7275C15(){ note_ctor("S7275C15", this);} // tgen

static void Test_S7275C15()
{
  extern Class_Descriptor cd_S7275C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7275C15, buf);
    S7275C15 *dp, &lv = *(dp=new (buf) S7275C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7275C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C15)");
    check_base_class_offset(lv, (S2014C28*), 0, "S7275C15");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*), 0, "S7275C15");
    check_base_class_offset(lv, (S7275C5*), 0, "S7275C15");
    /*is_ambiguous_... S7275C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S7275C15");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S7275C15");
    set_bf_and_test(lv, s7275c15f0, ABISELECT(16,12), 0, 16, 1, "S7275C15");
    set_bf_and_test(lv, s7275c15f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S7275C15");
    check_field_offset(lv, s7275c15f1, ABISELECT(24,16), "S7275C15.s7275c15f1");
    test_class_info(&lv, &cd_S7275C15);
    dp->~S7275C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C15(Test_S7275C15, "S7275C15", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7275C15C1Ev();
extern void _ZN8S7275C15D1Ev();
Name_Map name_map_S7275C15[] = {
  NSPAIR(_ZN8S7275C15C1Ev),
  NSPAIR(_ZN8S7275C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7275C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S7275C15[];
extern void _ZN8S7275C15D1Ev();
extern void _ZN8S7275C15D0Ev();
static  VTBL_ENTRY vtc_S7275C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C15[0]),
  (VTBL_ENTRY)&_ZN8S7275C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C15D0Ev,
};
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
Class_Descriptor cd_S7275C15 = {  "S7275C15", // class name
  bases_S7275C15, 5,
  &(vtc_S7275C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7275C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7275C15),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  S7275C14  : S7275C15 , S7275C5 {
  int s7275c14f0;
  ~S7275C14(); // tgen
  S7275C14(); // tgen
};
//SIG(-1 S7275C14) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 Fl} BC4 Fi}


S7275C14 ::~S7275C14(){ note_dtor("S7275C14", this);} // tgen
S7275C14 ::S7275C14(){ note_ctor("S7275C14", this);} // tgen

static void Test_S7275C14()
{
  extern Class_Descriptor cd_S7275C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7275C14, buf);
    S7275C14 *dp, &lv = *(dp=new (buf) S7275C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7275C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C14)");
    check_base_class_offset(lv, (S2014C28*)(S7275C15*), 0, "S7275C14");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*), 0, "S7275C14");
    check_base_class_offset(lv, (S7275C5*)(S7275C15*), 0, "S7275C14");
    /*is_ambiguous_... S7275C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*), ABISELECT(9,5), "S7275C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*), ABISELECT(12,8), "S7275C14");
    check_base_class_offset(lv, (S7275C15*), 0, "S7275C14");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(32,20), "S7275C14");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*), ABISELECT(32,20), "S7275C14");
    check_field_offset(lv, s7275c14f0, ABISELECT(44,28), "S7275C14.s7275c14f0");
    test_class_info(&lv, &cd_S7275C14);
    dp->~S7275C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C14(Test_S7275C14, "S7275C14", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S7275C14C1Ev();
extern void _ZN8S7275C14D1Ev();
Name_Map name_map_S7275C14[] = {
  NSPAIR(_ZN8S7275C14C1Ev),
  NSPAIR(_ZN8S7275C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
static Base_Class bases_S7275C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S7275C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(32,20), //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 _ZTI8S7275C14[];
extern void _ZN8S7275C14D1Ev();
extern void _ZN8S7275C14D0Ev();
extern void ABISELECT(_ZThn32_N8S7275C14D1Ev,_ZThn20_N8S7275C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7275C14D0Ev,_ZThn20_N8S7275C14D0Ev)();
static  VTBL_ENTRY vtc_S7275C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C14[0]),
  (VTBL_ENTRY)&_ZN8S7275C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C14D0Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7275C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7275C14D1Ev,_ZThn20_N8S7275C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S7275C14D0Ev,_ZThn20_N8S7275C14D0Ev),
};
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
Class_Descriptor cd_S7275C14 = {  "S7275C14", // class name
  bases_S7275C14, 8,
  &(vtc_S7275C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S7275C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7275C14),8, //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  S7275C13  : S7275C11 , virtual S2014C28 , virtual S3222C8_nt , virtual S7275C7 , virtual S7275C14 {
  long s7275c13f0;
  ::S7275C11 s7275c13f1;
  virtual  ~S7275C13(); // _ZN8S7275C13D2Ev
  S7275C13(); // tgen
};
//SIG(-1 S7275C13) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 Fl} BC3 Fi} vd Fl FC2}


 S7275C13 ::~S7275C13(){ note_dtor("S7275C13", this);}
S7275C13 ::S7275C13(){ note_ctor("S7275C13", this);} // tgen

static void Test_S7275C13()
{
  extern Class_Descriptor cd_S7275C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S7275C13, buf);
    S7275C13 *dp, &lv = *(dp=new (buf) S7275C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S7275C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C13)");
    /*is_ambiguous_... S7275C13::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(56,36), "S7275C13");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(56,36), "S7275C13");
    check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(56,36), "S7275C13");
    check_base_class_offset(lv, (S7275C11*), 0, "S7275C13");
    /*is_ambiguous_... S7275C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S7275C13");
    check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C13");
    /*is_ambiguous_... S7275C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S7275C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(68,44), "S7275C13");
    check_base_class_offset(lv, (S7275C7*), ABISELECT(72,48), "S7275C13");
    check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*), ABISELECT(96,60), "S7275C13");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(96,60), "S7275C13");
    check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(96,60), "S7275C13");
    /*is_ambiguous_... S7275C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*), ABISELECT(105,65), "S7275C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*), ABISELECT(108,68), "S7275C13");
    check_base_class_offset(lv, (S7275C15*)(S7275C14*), ABISELECT(96,60), "S7275C13");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*), ABISELECT(128,80), "S7275C13");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*), ABISELECT(128,80), "S7275C13");
    check_base_class_offset(lv, (S7275C14*), ABISELECT(96,60), "S7275C13");
    check_field_offset(lv, s7275c13f0, ABISELECT(16,12), "S7275C13.s7275c13f0");
    check_field_offset(lv, s7275c13f1, ABISELECT(24,16), "S7275C13.s7275c13f1");
    test_class_info(&lv, &cd_S7275C13);
    dp->~S7275C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C13(Test_S7275C13, "S7275C13", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN8S7275C13C1Ev();
extern void _ZN8S7275C13D2Ev();
Name_Map name_map_S7275C13[] = {
  NSPAIR(_ZN8S7275C13C1Ev),
  NSPAIR(_ZN8S7275C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
static Base_Class bases_S7275C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S7275C11,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S7275C7,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7275C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S7275C15,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(128,80), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C13[];
extern void _ZN8S7275C13D1Ev();
extern void _ZN8S7275C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7275C13D1Ev,_ZThn48_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7275C13D0Ev,_ZThn48_N8S7275C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7275C13D1Ev,_ZThn60_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7275C13D0Ev,_ZThn60_N8S7275C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY vtc_S7275C13[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&_ZN8S7275C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C13D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C13[];
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C13[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn36_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn36_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__8S7275C13[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C13[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__8S7275C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
static  VTT_ENTRY vtt_S7275C13[] = {
  {&(_ZTV8S7275C13[7]),  7,31},
  {&(_tg__ZTV8S7275C11__8S7275C13[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__8S7275C13[3]),  3,5},
  {&(_ZTV8S7275C13[12]),  12,31},
  {&(_ZTV8S7275C13[20]),  20,31},
  {&(_ZTV8S7275C13[25]),  25,31},
  {&(_ZTV8S7275C13[29]),  29,31},
  {&(_tg__ZTV7S7275C7__8S7275C13[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__8S7275C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C13[];
extern  VTBL_ENTRY _ZTV8S7275C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C13[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn36_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn36_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7275C13D0Ev,_ZThn48_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7275C13D1Ev,_ZThn48_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C13D0Ev,_ZThn60_N8S7275C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C13D1Ev,_ZThn60_N8S7275C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C13 = {  "S7275C13", // class name
  bases_S7275C13, 15,
  &(vtc_S7275C13[0]), // expected_vtbl_contents
  &(vtt_S7275C13[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI8S7275C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7275C13),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C13),9, //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  S7275C16  : virtual S7275C7 , S7275C3 , virtual S2014C38 {
  ::S3222C8_nt s7275c16f0[6];
  virtual  ~S7275C16(); // _ZN8S7275C16D2Ev
  S7275C16(); // tgen
};
//SIG(-1 S7275C16) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S7275C16 ::~S7275C16(){ note_dtor("S7275C16", this);}
S7275C16 ::S7275C16(){ note_ctor("S7275C16", this);} // tgen

static void Test_S7275C16()
{
  extern Class_Descriptor cd_S7275C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S7275C16, buf);
    S7275C16 *dp, &lv = *(dp=new (buf) S7275C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S7275C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C16)");
    check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C16");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*), 0, "S7275C16");
    /*is_ambiguous_... S7275C16::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(64,44), "S7275C16");
    check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(64,44), "S7275C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(76,52), "S7275C16");
    check_base_class_offset(lv, (S7275C7*), ABISELECT(40,32), "S7275C16");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*), ABISELECT(40,32), "S7275C16");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*), ABISELECT(9,5), "S7275C16");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*), 0, "S7275C16");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*), 0, "S7275C16");
    check_base_class_offset(lv, (S7275C3*), 0, "S7275C16");
    /*is_ambiguous_... S7275C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S7275C16");
    check_field_offset(lv, s7275c16f0, ABISELECT(12,8), "S7275C16.s7275c16f0");
    test_class_info(&lv, &cd_S7275C16);
    dp->~S7275C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C16(Test_S7275C16, "S7275C16", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S7275C16C1Ev();
extern void _ZN8S7275C16D2Ev();
Name_Map name_map_S7275C16[] = {
  NSPAIR(_ZN8S7275C16C1Ev),
  NSPAIR(_ZN8S7275C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S7275C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C16[];
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C16D1Ev,_ZThn32_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S7275C16D0Ev,_ZThn32_N8S7275C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7275C16D1Ev,_ZThn44_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7275C16D0Ev,_ZThn44_N8S7275C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C16[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C16[];
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C3__8S7275C16[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn32_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn32_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C3__8S7275C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7275C3D1Ev,_ZThn44_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7275C3D0Ev,_ZThn44_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C3__8S7275C16[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C16[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__8S7275C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
static  VTT_ENTRY vtt_S7275C16[] = {
  {&(_ZTV8S7275C16[7]),  7,22},
  {&(_tg__ZTV7S7275C3__8S7275C16[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C3__8S7275C16[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C3__8S7275C16[3]),  3,5},
  {&(_ZTV8S7275C16[15]),  15,22},
  {&(_ZTV8S7275C16[20]),  20,22},
  {&(_tg__ZTV7S7275C7__8S7275C16[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__8S7275C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C3D0Ev,_ZThn44_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C3D1Ev,_ZThn44_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn32_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn32_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7275C16D0Ev,_ZThn44_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7275C16D1Ev,_ZThn44_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7275C16D0Ev,_ZThn32_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7275C16D1Ev,_ZThn32_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C16 = {  "S7275C16", // class name
  bases_S7275C16, 10,
  &(vtc_S7275C16[0]), // expected_vtbl_contents
  &(vtt_S7275C16[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S7275C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7275C16),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C16),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C17  : virtual S7275C11 , virtual S3222C8_nt {
  unsigned char s7275c17f0:1;
  ~S7275C17(); // tgen
  S7275C17(); // tgen
};
//SIG(-1 S7275C17) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S7275C17 ::~S7275C17(){ note_dtor("S7275C17", this);} // tgen
S7275C17 ::S7275C17(){ note_ctor("S7275C17", this);} // tgen

static void Test_S7275C17()
{
  extern Class_Descriptor cd_S7275C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7275C17, buf);
    S7275C17 *dp, &lv = *(dp=new (buf) S7275C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7275C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C17)");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(32,20), "S7275C17");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(32,20), "S7275C17");
    check_base_class_offset(lv, (S7275C11*), ABISELECT(16,8), "S7275C17");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S7275C17");
    set_bf_and_test(lv, s7275c17f0, ABISELECT(8,4), 0, 1, 1, "S7275C17");
    test_class_info(&lv, &cd_S7275C17);
    dp->~S7275C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C17(Test_S7275C17, "S7275C17", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S7275C17C1Ev();
extern void _ZN8S7275C17D1Ev();
Name_Map name_map_S7275C17[] = {
  NSPAIR(_ZN8S7275C17C1Ev),
  NSPAIR(_ZN8S7275C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S7275C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(32,20), //bcp->offset
    13, //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_S7275C11,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C17[];
extern void _ZN8S7275C17D1Ev();
extern void _ZN8S7275C17D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C17D1Ev,_ZThn8_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C17D0Ev,_ZThn8_N8S7275C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7275C17D1Ev,_ZThn20_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7275C17D0Ev,_ZThn20_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C17[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&_ZN8S7275C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C17D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C17[];
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C17[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__8S7275C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
static  VTT_ENTRY vtt_S7275C17[] = {
  {&(_ZTV8S7275C17[5]),  5,18},
  {&(_ZTV8S7275C17[11]),  11,18},
  {&(_ZTV8S7275C17[16]),  16,18},
  {&(_tg__ZTV8S7275C11__8S7275C17[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__8S7275C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C17[];
extern  VTBL_ENTRY _ZTV8S7275C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C17[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7275C17D0Ev,_ZThn20_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7275C17D1Ev,_ZThn20_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C17D0Ev,_ZThn8_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C17D1Ev,_ZThn8_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C17 = {  "S7275C17", // class name
  bases_S7275C17, 4,
  &(vtc_S7275C17[0]), // expected_vtbl_contents
  &(vtt_S7275C17[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S7275C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7275C17),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C17),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C12  : virtual S7275C13 , S7275C16 , S7275C17 , S7275C7 {
  ~S7275C12(); // tgen
  S7275C12(); // tgen
};
//SIG(-1 S7275C12) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S7275C12 ::~S7275C12(){ note_dtor("S7275C12", this);} // tgen
S7275C12 ::S7275C12(){ note_ctor("S7275C12", this);} // tgen

static void Test_S7275C12()
{
  extern Class_Descriptor cd_S7275C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,40)];
    init_test(&cd_S7275C12, buf);
    S7275C12 *dp, &lv = *(dp=new (buf) S7275C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S7275C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C12)");
    /*is_ambiguous_... S7275C12::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(136,88), "S7275C12");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*)(S7275C13*), ABISELECT(136,88), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(136,88), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C11 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(136,88), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(136,88), "S7275C12");
    check_base_class_offset(lv, (S7275C11*)(S7275C13*), ABISELECT(80,52), "S7275C12");
    /*is_ambiguous_... S7275C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C13*), 0, "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C12");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*)(S7275C16*), 0, "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C12");
    /*is_ambiguous_... S7275C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C13*), ABISELECT(148,96), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(148,96), "S7275C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C17*), ABISELECT(148,96), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(148,96), "S7275C12");
    check_base_class_offset(lv, (S7275C7*)(S7275C13*), ABISELECT(152,100), "S7275C12");
    check_base_class_offset(lv, (S7275C7*)(S7275C16*), ABISELECT(152,100), "S7275C12");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*)(S7275C16*), ABISELECT(152,100), "S7275C12");
    check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*), ABISELECT(176,112), "S7275C12");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(176,112), "S7275C12");
    check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(176,112), "S7275C12");
    /*is_ambiguous_... S7275C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*), ABISELECT(185,117), "S7275C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*), ABISELECT(188,120), "S7275C12");
    check_base_class_offset(lv, (S7275C15*)(S7275C14*), ABISELECT(176,112), "S7275C12");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*), ABISELECT(208,132), "S7275C12");
    /*is_ambiguous_... S7275C14::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*), ABISELECT(208,132), "S7275C12");
    check_base_class_offset(lv, (S7275C14*)(S7275C13*), ABISELECT(176,112), "S7275C12");
    check_base_class_offset(lv, (S7275C13*), ABISELECT(80,52), "S7275C12");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*)(S7275C16*), ABISELECT(9,5), "S7275C12");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*)(S7275C16*), 0, "S7275C12");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*)(S7275C16*), 0, "S7275C12");
    check_base_class_offset(lv, (S7275C3*)(S7275C16*), 0, "S7275C12");
    /*is_ambiguous_... S7275C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C16*), ABISELECT(224,144), "S7275C12");
    check_base_class_offset(lv, (S7275C16*), 0, "S7275C12");
    check_base_class_offset(lv, (S7275C11*)(S7275C17*), ABISELECT(224,144), "S7275C12");
    check_base_class_offset(lv, (S7275C17*), ABISELECT(40,32), "S7275C12");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C7*), ABISELECT(56,40), "S7275C12");
    test_class_info(&lv, &cd_S7275C12);
    dp->~S7275C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C12(Test_S7275C12, "S7275C12", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S7275C12C1Ev();
extern void _ZN8S7275C12D1Ev();
Name_Map name_map_S7275C12[] = {
  NSPAIR(_ZN8S7275C12C1Ev),
  NSPAIR(_ZN8S7275C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
extern Class_Descriptor cd_S7275C13;
extern VTBL_ENTRY _ZTI8S7275C13[];
extern  VTBL_ENTRY _ZTV8S7275C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C16;
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S7275C17;
extern VTBL_ENTRY _ZTI8S7275C17[];
extern  VTBL_ENTRY _ZTV8S7275C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C17[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
static Base_Class bases_S7275C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7275C11,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S7275C15,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    ABISELECT(208,132), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7275C13,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S7275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S7275C16,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7275C11,    ABISELECT(224,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7275C17,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7275C7,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C12[];
extern void _ZN8S7275C12D1Ev();
extern void _ZN8S7275C12D0Ev();
extern void ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S7275C12D1Ev,_ZThn52_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S7275C12D0Ev,_ZThn52_N8S7275C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7275C12D1Ev,_ZThn88_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7275C12D0Ev,_ZThn88_N8S7275C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7275C12D1Ev,_ZThn100_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7275C12D0Ev,_ZThn100_N8S7275C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7275C12D1Ev,_ZThn112_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7275C12D0Ev,_ZThn112_N8S7275C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7275C12D1Ev,_ZThn144_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7275C12D0Ev,_ZThn144_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C12[] = {
  ABISELECT(224,144),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&_ZN8S7275C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C12D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-88,-56),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C12[];
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C16__8S7275C12[] = {
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C38S7275C16__8S7275C12[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S7275C3D1Ev,_ZThn100_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S7275C3D0Ev,_ZThn100_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C38S7275C16__8S7275C12[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S7275C3D1Ev,_ZThn88_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S7275C3D0Ev,_ZThn88_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C38S7275C16__8S7275C12[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S7275C16D1Ev,_ZThn100_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S7275C16D0Ev,_ZThn100_N8S7275C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C16__8S7275C12[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn136_N8S7275C16D1Ev,_ZThn88_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn136_N8S7275C16D0Ev,_ZThn88_N8S7275C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C16__8S7275C12[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
extern void _ZN8S7275C17D1Ev();
extern void _ZN8S7275C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C17__8S7275C12[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&_ZN8S7275C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn184_N8S7275C17D1Ev,_ZThn112_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn184_N8S7275C17D0Ev,_ZThn112_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C17__8S7275C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-88,-56),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S7275C17D1Ev,_ZThn56_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S7275C17D0Ev,_ZThn56_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C17__8S7275C12[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__A__8S7275C12[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7275C7D1Ev,_ZThn48_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S7275C7D0Ev,_ZThn48_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__A__8S7275C12[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void _ZN8S7275C13D1Ev();
extern void _ZN8S7275C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C13__8S7275C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&_ZN8S7275C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C13D0Ev,
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C118S7275C13__8S7275C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn36_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn36_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C118S7275C13__8S7275C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C13__8S7275C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7275C13D1Ev,_ZThn48_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7275C13D0Ev,_ZThn48_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C13__8S7275C12[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7275C13D1Ev,_ZThn60_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7275C13D0Ev,_ZThn60_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C13__8S7275C12[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C13__8S7275C12[] = {
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__8S7275C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__A1__8S7275C12[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__A1__8S7275C12[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
static  VTT_ENTRY vtt_S7275C12[] = {
  {&(_ZTV8S7275C12[10]),  10,64},
  {&(_tg__ZTV8S7275C16__8S7275C12[7]),  7,9},
  {&(_tg__ZTV7S7275C38S7275C16__8S7275C12[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C38S7275C16__8S7275C12[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C38S7275C16__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C16__8S7275C12[6]),  6,8},
  {&(_tg__ZTV7S7275C5__8S7275C16__8S7275C12[3]),  3,5},
  {&(_tg__ZTV8S7275C17__8S7275C12[5]),  5,7},
  {&(_tg__ZTV8S7275C11__8S7275C17__8S7275C12[4]),  4,6},
  {&(_tg__ZTV7S7275C5__8S7275C17__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C7__A__8S7275C12[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__A__8S7275C12[3]),  3,5},
  {&(_ZTV8S7275C12[34]),  34,64},
  {&(_ZTV8S7275C12[39]),  39,64},
  {&(_ZTV8S7275C12[47]),  47,64},
  {&(_ZTV8S7275C12[52]),  52,64},
  {&(_ZTV8S7275C12[56]),  56,64},
  {&(_ZTV8S7275C12[17]),  17,64},
  {&(_ZTV8S7275C12[62]),  62,64},
  {&(_ZTV8S7275C12[24]),  24,64},
  {&(_tg__ZTV8S7275C13__8S7275C12[7]),  7,9},
  {&(_tg__ZTV8S7275C118S7275C13__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C118S7275C13__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C13__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C13__8S7275C12[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C13__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C13__8S7275C12[2]),  2,4},
  {&(_tg__ZTV7S7275C7__8S7275C12[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__8S7275C12[3]),  3,5},
  {&(_tg__ZTV8S7275C11__A1__8S7275C12[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__A1__8S7275C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C12[];
extern  VTBL_ENTRY _ZTV8S7275C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C12[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7275C13D0Ev,_ZThn48_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7275C13D1Ev,_ZThn48_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C13D0Ev,_ZThn60_N8S7275C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C13D1Ev,_ZThn60_N8S7275C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn36_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn36_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7275C7D0Ev,_ZThn48_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7275C7D1Ev,_ZThn48_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C17D0Ev,_ZThn56_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C17D1Ev,_ZThn56_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7275C17D0Ev,_ZThn112_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7275C17D1Ev,_ZThn112_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C16D0Ev,_ZThn88_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C16D1Ev,_ZThn88_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C16D0Ev,_ZThn100_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C16D1Ev,_ZThn100_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7275C3D0Ev,_ZThn88_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7275C3D1Ev,_ZThn88_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7275C3D0Ev,_ZThn100_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7275C3D1Ev,_ZThn100_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C12D0Ev,_ZThn144_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C12D1Ev,_ZThn144_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C12D0Ev,_ZThn100_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C12D1Ev,_ZThn100_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7275C12D0Ev,_ZThn112_N8S7275C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C12D0Ev,_ZThn88_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7275C12D1Ev,_ZThn112_N8S7275C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C12D1Ev,_ZThn88_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7275C12D0Ev,_ZThn52_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7275C12D1Ev,_ZThn52_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C12 = {  "S7275C12", // class name
  bases_S7275C12, 25,
  &(vtc_S7275C12[0]), // expected_vtbl_contents
  &(vtt_S7275C12[0]), // expected_vtt_contents
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S7275C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7275C12),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C12),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C10  : virtual S7275C11 , S7275C12 , S7275C14 , S2014C38 , virtual S7275C16 {
  virtual  ~S7275C10(); // _ZN8S7275C10D2Ev
  S7275C10(); // tgen
};
//SIG(-1 S7275C10) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} BC5{ VBC6{ BC2 VBC7{ m} VBC8{ m Fi} VBC9{ VBC7 VBC3 VBC8 vd Fp FC10{}} VBC11{ BC12{ BC7 BC3 BC4 BC8 Fs:16 Fl} BC3 Fi} vd Fl FC2} BC13{ VBC9 BC14{ BC4 BC3 VBC7 VBC9 vd} VBC4 vd FC8[6]} BC15{ VBC2 VBC8 Fc:1} BC9} BC11 BC4 VBC13 vd}


 S7275C10 ::~S7275C10(){ note_dtor("S7275C10", this);}
S7275C10 ::S7275C10(){ note_ctor("S7275C10", this);} // tgen

static void Test_S7275C10()
{
  extern Class_Descriptor cd_S7275C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,57)];
    init_test(&cd_S7275C10, buf);
    S7275C10 *dp, &lv = *(dp=new (buf) S7275C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,224), "sizeof(S7275C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C10)");
    /*is_ambiguous_... S7275C10::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(144,96), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C11 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(144,96), "S7275C10");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*)(S7275C13*), ABISELECT(144,96), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(144,96), "S7275C10");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*)(S7275C12*), ABISELECT(144,96), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C11 */ AMB_check_base_class_offset(lv, (S7275C11*), ABISELECT(128,84), "S7275C10");
    check_base_class_offset(lv, (S7275C11*)(S7275C17*)(S7275C12*), ABISELECT(128,84), "S7275C10");
    check_base_class_offset(lv, (S7275C11*)(S7275C13*), ABISELECT(160,104), "S7275C10");
    /*is_ambiguous_... S7275C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C13*), 0, "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C10");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*)(S7275C16*)(S7275C12*), 0, "S7275C10");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*)(S7275C12*), 0, "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C3*)(S7275C16*), 0, "S7275C10");
    /*is_ambiguous_... S7275C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C13*), ABISELECT(216,140), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(216,140), "S7275C10");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C17*)(S7275C12*), ABISELECT(216,140), "S7275C10");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*)(S7275C12*), ABISELECT(216,140), "S7275C10");
    check_base_class_offset(lv, (S7275C7*)(S7275C13*), ABISELECT(224,144), "S7275C10");
    check_base_class_offset(lv, (S7275C7*)(S7275C16*)(S7275C12*), ABISELECT(224,144), "S7275C10");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*)(S7275C16*)(S7275C12*), ABISELECT(224,144), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C16*), ABISELECT(224,144), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C3*)(S7275C16*), ABISELECT(224,144), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*), ABISELECT(248,156), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(248,156), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(248,156), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*), ABISELECT(257,161), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*), ABISELECT(260,164), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C15*)(S7275C14*), ABISELECT(248,156), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*), ABISELECT(280,176), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*), ABISELECT(280,176), "S7275C10");
    check_base_class_offset(lv, (S7275C14*)(S7275C13*), ABISELECT(248,156), "S7275C10");
    check_base_class_offset(lv, (S7275C13*)(S7275C12*), ABISELECT(160,104), "S7275C10");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*)(S7275C16*)(S7275C12*), ABISELECT(9,5), "S7275C10");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*)(S7275C16*)(S7275C12*), 0, "S7275C10");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*)(S7275C16*)(S7275C12*), 0, "S7275C10");
    check_base_class_offset(lv, (S7275C3*)(S7275C16*)(S7275C12*), 0, "S7275C10");
    /*is_ambiguous_... S7275C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C16*)(S7275C12*), ABISELECT(296,188), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C16*), ABISELECT(296,188), "S7275C10");
    check_base_class_offset(lv, (S7275C16*)(S7275C12*), 0, "S7275C10");
    check_base_class_offset(lv, (S7275C17*)(S7275C12*), ABISELECT(40,32), "S7275C10");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C12*), ABISELECT(56,40), "S7275C10");
    check_base_class_offset(lv, (S7275C12*), 0, "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*), ABISELECT(80,52), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(80,52), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(80,52), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*), ABISELECT(89,57), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*), ABISELECT(92,60), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C15*)(S7275C14*), ABISELECT(80,52), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*), ABISELECT(112,72), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*), ABISELECT(112,72), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C14*), ABISELECT(80,52), "S7275C10");
    /*is_ambiguous_... S7275C10::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(128,84), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*)(S7275C16*), ABISELECT(313,197), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*)(S7275C16*), ABISELECT(304,192), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*)(S7275C16*), ABISELECT(304,192), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C3*)(S7275C16*), ABISELECT(304,192), "S7275C10");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C16*), ABISELECT(304,192), "S7275C10");
    test_class_info(&lv, &cd_S7275C10);
    dp->~S7275C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C10(Test_S7275C10, "S7275C10", ABISELECT(344,224));

#else // __cplusplus

extern void _ZN8S7275C10C1Ev();
extern void _ZN8S7275C10D2Ev();
Name_Map name_map_S7275C10[] = {
  NSPAIR(_ZN8S7275C10C1Ev),
  NSPAIR(_ZN8S7275C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
extern Class_Descriptor cd_S7275C13;
extern VTBL_ENTRY _ZTI8S7275C13[];
extern  VTBL_ENTRY _ZTV8S7275C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C16;
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
extern Class_Descriptor cd_S7275C17;
extern VTBL_ENTRY _ZTI8S7275C17[];
extern  VTBL_ENTRY _ZTV8S7275C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C17[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S7275C12;
extern VTBL_ENTRY _ZTI8S7275C12[];
extern  VTBL_ENTRY _ZTV8S7275C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S7275C16;
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
static Base_Class bases_S7275C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(144,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
    1, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(144,96), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7275C11,    ABISELECT(128,84), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7275C11,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(216,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
    6, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(224,144), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(248,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
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(248,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
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(248,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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(257,161), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(260,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
    12, //immediately_derived
  0, 0},
  {&cd_S7275C15,    ABISELECT(248,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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(280,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
    14, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(280,176), //bcp->offset
    69, //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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(248,156), //bcp->offset
    64, //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
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7275C13,    ABISELECT(160,104), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S2014C38,    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
    20, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7275C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(296,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
    22, //immediately_derived
  0, 1},
  {&cd_S7275C16,    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
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7275C17,    ABISELECT(40,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7275C7,    ABISELECT(56,40), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7275C12,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    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
    31, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7275C5,    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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    31, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(92,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
    31, //immediately_derived
  0, 0},
  {&cd_S7275C15,    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
    20, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(112,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
    33, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(112,72), //bcp->offset
    31, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(80,52), //bcp->offset
    27, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C38,    ABISELECT(128,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
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C38,    ABISELECT(313,197), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(304,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
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(304,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
    10, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7275C3,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7275C16,    ABISELECT(304,192), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C10[];
extern void _ZN8S7275C10D1Ev();
extern void _ZN8S7275C10D0Ev();
extern void ABISELECT(_ZThn40_N8S7275C10D1Ev,_ZThn32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C10D0Ev,_ZThn32_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C10D1Ev,_ZThn40_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C10D0Ev,_ZThn40_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7275C10D1Ev,_ZThn52_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7275C10D0Ev,_ZThn52_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn112_N8S7275C10D1Ev,_ZThn72_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn112_N8S7275C10D0Ev,_ZThn72_N8S7275C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S7275C10D1Ev,_ZThn84_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S7275C10D0Ev,_ZThn84_N8S7275C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7275C10D1Ev,_ZThn96_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7275C10D0Ev,_ZThn96_N8S7275C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S7275C10D1Ev,_ZThn104_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S7275C10D0Ev,_ZThn104_N8S7275C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C10D1Ev,_ZTv0_n24_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn224_N8S7275C10D1Ev,_ZThn144_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C10D0Ev,_ZTv0_n24_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn224_N8S7275C10D0Ev,_ZThn144_N8S7275C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn248_N8S7275C10D1Ev,_ZThn156_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn248_N8S7275C10D0Ev,_ZThn156_N8S7275C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S7275C10D1Ev,_ZTvn20_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C10D0Ev,_ZTvn20_n12_N8S7275C10D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn304_N8S7275C10D1Ev,_ZThn192_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn304_N8S7275C10D0Ev,_ZThn192_N8S7275C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C10[] = {
  ABISELECT(304,192),
  ABISELECT(128,84),
  ABISELECT(248,156),
  ABISELECT(160,104),
  ABISELECT(296,188),
  ABISELECT(216,140),
  ABISELECT(144,96),
  ABISELECT(224,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&_ZN8S7275C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C10D0Ev,
  ABISELECT(176,108),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C10D1Ev,_ZThn32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C10D0Ev,_ZThn32_N8S7275C10D0Ev),
  ABISELECT(160,100),
  ABISELECT(88,56),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C10D1Ev,_ZThn40_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C10D0Ev,_ZThn40_N8S7275C10D0Ev),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7275C10D1Ev,_ZThn52_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S7275C10D0Ev,_ZThn52_N8S7275C10D0Ev),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7275C10D1Ev,_ZThn72_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S7275C10D0Ev,_ZThn72_N8S7275C10D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(16,12),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev),
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-104),
  ABISELECT(-16,-8),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C10D1Ev,_ZTv0_n24_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C10D0Ev,_ZTv0_n24_N8S7275C10D0Ev),
  ABISELECT(-248,-156),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C10D1Ev,_ZTvn20_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C10D0Ev,_ZTvn20_n12_N8S7275C10D0Ev),
  ABISELECT(-304,-192),
  ABISELECT(-8,-4),
  ABISELECT(-88,-52),
  ABISELECT(-160,-96),
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C10[];
extern void _ZN8S7275C12D1Ev();
extern void _ZN8S7275C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C12__8S7275C10[] = {
  ABISELECT(128,84),
  ABISELECT(248,156),
  ABISELECT(160,104),
  ABISELECT(296,188),
  ABISELECT(216,140),
  ABISELECT(144,96),
  ABISELECT(224,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&_ZN8S7275C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C12D0Ev,
};
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(296,188),
  ABISELECT(216,140),
  ABISELECT(144,96),
  ABISELECT(224,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C38S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(216,140),
  ABISELECT(144,96),
  ABISELECT(224,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn224_N7S7275C3D1Ev,_ZThn144_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn224_N7S7275C3D0Ev,_ZThn144_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C38S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(-224,-144),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S7275C3D1Ev,_ZThn96_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S7275C3D0Ev,_ZThn96_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C38S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7275C16D1Ev,_ZThn144_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7275C16D0Ev,_ZThn144_N8S7275C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(-224,-144),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7275C16D1Ev,_ZThn96_N8S7275C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7275C16D0Ev,_ZThn96_N8S7275C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C168S7275C12__8S7275C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
extern void _ZN8S7275C17D1Ev();
extern void _ZN8S7275C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C178S7275C12__8S7275C10[] = {
  ABISELECT(176,108),
  ABISELECT(104,64),
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&_ZN8S7275C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn88_N8S7275C17D1Ev,_ZThn52_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn88_N8S7275C17D0Ev,_ZThn52_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C178S7275C12__8S7275C10[] = {
  ABISELECT(-88,-52),
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S7275C17D1Ev,_ZThn64_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S7275C17D0Ev,_ZThn64_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C178S7275C12__8S7275C10[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C78S7275C12__A1__8S7275C10[] = {
  ABISELECT(160,100),
  ABISELECT(88,56),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S7275C7D1Ev,_ZThn56_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S7275C7D0Ev,_ZThn56_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C78S7275C12__A1__8S7275C10[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7275C12D1Ev,_ZThn104_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7275C12D0Ev,_ZThn104_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C13__8S7275C12__8S7275C10[] = {
  ABISELECT(-160,-104),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-104),
  ABISELECT(-16,-8),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S7275C12D1Ev,_ZThn96_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S7275C12D0Ev,_ZThn96_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C12__8S7275C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn224_N8S7275C12D1Ev,_ZThn144_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn224_N8S7275C12D0Ev,_ZThn144_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C12__8S7275C10[] = {
  ABISELECT(-224,-144),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn248_N8S7275C12D1Ev,_ZThn156_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn248_N8S7275C12D0Ev,_ZThn156_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C12__8S7275C10[] = {
  ABISELECT(-248,-156),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C12__8S7275C10[] = {
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7275C17__8S7275C12__8S7275C10[] = {
  ABISELECT(176,108),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7275C12D1Ev,_ZThn84_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7275C12D0Ev,_ZThn84_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__A1__8S7275C12__8S7275C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(16,12),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__A__8S7275C12__8S7275C10[] = {
  ABISELECT(160,100),
  ABISELECT(88,56),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev),
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__8S7275C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void _ZN8S7275C13D1Ev();
extern void _ZN8S7275C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C13__8S7275C10[] = {
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-160,-104),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&_ZN8S7275C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C13D0Ev,
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C118S7275C13__A1__8S7275C10[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C118S7275C13__A1__8S7275C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C13__8S7275C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7275C13D1Ev,_ZThn40_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7275C13D0Ev,_ZThn40_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C13__8S7275C10[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn88_N8S7275C13D1Ev,_ZThn52_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn88_N8S7275C13D0Ev,_ZThn52_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C13__8S7275C10[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C13__8S7275C10[] = {
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__8S7275C10[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C16__A1__8S7275C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-88,-52),
  ABISELECT(-160,-96),
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C38S7275C16__A1__8S7275C10[] = {
  ABISELECT(-88,-52),
  ABISELECT(-160,-96),
  ABISELECT(-80,-48),
  ABISELECT(-304,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C38S7275C16__A1__8S7275C10[] = {
  ABISELECT(80,48),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C38S7275C16__A1__8S7275C10[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C16__A1__8S7275C10[] = {
  ABISELECT(80,48),
  ABISELECT(-8,-4),
  ABISELECT(-80,-48),
  ABISELECT(-224,-144),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C16__A1__8S7275C10[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
static  VTT_ENTRY vtt_S7275C10[] = {
  {&(_ZTV8S7275C10[11]),  11,83},
  {&(_tg__ZTV8S7275C12__8S7275C10[10]),  10,12},
  {&(_tg__ZTV8S7275C168S7275C12__8S7275C10[7]),  7,9},
  {&(_tg__ZTV7S7275C38S7275C168S7275C12__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C38S7275C168S7275C12__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C38S7275C168S7275C12__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C168S7275C12__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C5__8S7275C168S7275C12__8S7275C10[3]),  3,5},
  {&(_tg__ZTV8S7275C178S7275C12__8S7275C10[5]),  5,7},
  {&(_tg__ZTV8S7275C11__8S7275C178S7275C12__8S7275C10[4]),  4,6},
  {&(_tg__ZTV7S7275C5__8S7275C178S7275C12__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C78S7275C12__A1__8S7275C10[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C78S7275C12__A1__8S7275C10[3]),  3,5},
  {&(_tg__ZTV8S7275C13__8S7275C12__8S7275C10[8]),  8,10},
  {&(_tg__ZTV7S7275C5__8S7275C12__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C12__8S7275C10[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C12__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C12__8S7275C10[2]),  2,4},
  {&(_tg__ZTV8S7275C17__8S7275C12__8S7275C10[5]),  5,7},
  {&(_tg__ZTV8S7275C11__A1__8S7275C12__8S7275C10[4]),  4,6},
  {&(_tg__ZTV7S7275C7__A__8S7275C12__8S7275C10[5]),  5,7},
  {&(_ZTV8S7275C10[39]),  39,83},
  {&(_ZTV8S7275C10[44]),  44,83},
  {&(_ZTV8S7275C10[54]),  54,83},
  {&(_ZTV8S7275C10[62]),  62,83},
  {&(_ZTV8S7275C10[67]),  67,83},
  {&(_ZTV8S7275C10[71]),  71,83},
  {&(_ZTV8S7275C10[18]),  18,83},
  {&(_ZTV8S7275C10[25]),  25,83},
  {&(_ZTV8S7275C10[81]),  81,83},
  {&(_tg__ZTV8S7275C11__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__8S7275C10[3]),  3,5},
  {&(_tg__ZTV8S7275C13__8S7275C10[7]),  7,9},
  {&(_tg__ZTV8S7275C118S7275C13__A1__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C118S7275C13__A1__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C13__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C13__8S7275C10[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C13__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C13__8S7275C10[2]),  2,4},
  {&(_tg__ZTV7S7275C7__8S7275C10[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__8S7275C10[3]),  3,5},
  {&(_tg__ZTV8S7275C16__A1__8S7275C10[7]),  7,9},
  {&(_tg__ZTV7S7275C38S7275C16__A1__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C38S7275C16__A1__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C38S7275C16__A1__8S7275C10[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C16__A1__8S7275C10[6]),  6,8},
  {&(_tg__ZTV7S7275C5__8S7275C16__A1__8S7275C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C10[];
extern  VTBL_ENTRY _ZTV8S7275C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C10[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7275C13D0Ev,_ZThn52_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7275C13D1Ev,_ZThn52_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7275C13D0Ev,_ZThn40_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7275C13D1Ev,_ZThn40_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7275C12D0Ev,_ZThn84_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7275C12D1Ev,_ZThn84_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C12D0Ev,_ZThn144_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C12D1Ev,_ZThn144_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7275C12D0Ev,_ZThn156_N8S7275C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C12D0Ev,_ZThn96_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7275C12D1Ev,_ZThn156_N8S7275C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C12D1Ev,_ZThn96_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7275C12D0Ev,_ZThn104_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7275C12D1Ev,_ZThn104_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7275C7D0Ev,_ZThn56_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7275C7D1Ev,_ZThn56_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7275C17D0Ev,_ZThn64_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7275C17D1Ev,_ZThn64_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7275C17D0Ev,_ZThn52_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7275C17D1Ev,_ZThn52_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C16D0Ev,_ZThn96_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C16D1Ev,_ZThn96_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C16D0Ev,_ZThn144_N8S7275C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C16D1Ev,_ZThn144_N8S7275C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7275C3D0Ev,_ZThn96_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7275C3D1Ev,_ZThn96_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7275C3D0Ev,_ZThn144_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7275C3D1Ev,_ZThn144_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C10D0Ev,_ZTv0_n24_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C10D0Ev,_ZThn144_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C10D1Ev,_ZTv0_n24_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7275C10D1Ev,_ZThn144_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7275C10D0Ev,_ZThn192_N8S7275C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7275C10D0Ev,_ZThn104_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7275C10D1Ev,_ZThn192_N8S7275C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7275C10D1Ev,_ZThn104_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7275C10D0Ev,_ZThn156_N8S7275C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C10D0Ev,_ZThn96_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7275C10D1Ev,_ZThn156_N8S7275C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7275C10D1Ev,_ZThn96_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7275C10D0Ev,_ZThn84_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7275C10D1Ev,_ZThn84_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C10 = {  "S7275C10", // class name
  bases_S7275C10, 41,
  &(vtc_S7275C10[0]), // expected_vtbl_contents
  &(vtt_S7275C10[0]), // expected_vtt_contents
  ABISELECT(344,224), // object size
  NSPAIRA(_ZTI8S7275C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7275C10),83, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C10),47, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C18  : S7275C11 {
  virtual  ~S7275C18(); // _ZN8S7275C18D2Ev
  S7275C18(); // tgen
};
//SIG(-1 S7275C18) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} vd}


 S7275C18 ::~S7275C18(){ note_dtor("S7275C18", this);}
S7275C18 ::S7275C18(){ note_ctor("S7275C18", this);} // tgen

static void Test_S7275C18()
{
  extern Class_Descriptor cd_S7275C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7275C18, buf);
    S7275C18 *dp, &lv = *(dp=new (buf) S7275C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7275C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C18)");
    check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(16,12), "S7275C18");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(16,12), "S7275C18");
    check_base_class_offset(lv, (S7275C11*), 0, "S7275C18");
    test_class_info(&lv, &cd_S7275C18);
    dp->~S7275C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C18(Test_S7275C18, "S7275C18", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7275C18C1Ev();
extern void _ZN8S7275C18D2Ev();
Name_Map name_map_S7275C18[] = {
  NSPAIR(_ZN8S7275C18C1Ev),
  NSPAIR(_ZN8S7275C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
static Base_Class bases_S7275C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S7275C5,    ABISELECT(16,12), //bcp->offset
    5, //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_S7275C11,    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 _ZTI8S7275C18[];
extern void _ZN8S7275C18D1Ev();
extern void _ZN8S7275C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C18D1Ev,_ZThn12_N8S7275C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C18D0Ev,_ZThn12_N8S7275C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C18[0]),
  (VTBL_ENTRY)&_ZN8S7275C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C18D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C18[];
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__8S7275C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
static  VTT_ENTRY vtt_S7275C18[] = {
  {&(_ZTV8S7275C18[3]),  3,10},
  {&(_tg__ZTV8S7275C11__8S7275C18[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__8S7275C18[3]),  3,5},
  {&(_ZTV8S7275C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S7275C18[];
extern  VTBL_ENTRY _ZTV8S7275C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C18[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D0Ev,_ZThn12_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C11D1Ev,_ZThn12_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C18D0Ev,_ZThn12_N8S7275C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7275C18D1Ev,_ZThn12_N8S7275C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C18 = {  "S7275C18", // class name
  bases_S7275C18, 3,
  &(vtc_S7275C18[0]), // expected_vtbl_contents
  &(vtt_S7275C18[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7275C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7275C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C18),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C20  : virtual S7275C2 {
  ~S7275C20(); // tgen
  S7275C20(); // tgen
};
//SIG(-1 S7275C20) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd}}


S7275C20 ::~S7275C20(){ note_dtor("S7275C20", this);} // tgen
S7275C20 ::S7275C20(){ note_ctor("S7275C20", this);} // tgen

static void Test_S7275C20()
{
  extern Class_Descriptor cd_S7275C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7275C20, buf);
    S7275C20 *dp, &lv = *(dp=new (buf) S7275C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7275C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C20)");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*), ABISELECT(17,9), "S7275C20");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*), ABISELECT(8,4), "S7275C20");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*), ABISELECT(8,4), "S7275C20");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*), 0, "S7275C20");
    check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C20");
    /*is_ambiguous_... S7275C20::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(48,24), "S7275C20");
    check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(48,24), "S7275C20");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(60,32), "S7275C20");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*), ABISELECT(24,12), "S7275C20");
    check_base_class_offset(lv, (S7275C3*)(S7275C2*), ABISELECT(8,4), "S7275C20");
    check_base_class_offset(lv, (S7275C2*), 0, "S7275C20");
    test_class_info(&lv, &cd_S7275C20);
    dp->~S7275C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C20(Test_S7275C20, "S7275C20", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7275C20C1Ev();
extern void _ZN8S7275C20D1Ev();
Name_Map name_map_S7275C20[] = {
  NSPAIR(_ZN8S7275C20C1Ev),
  NSPAIR(_ZN8S7275C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S7275C2;
extern VTBL_ENTRY _ZTI7S7275C2[];
extern  VTBL_ENTRY _ZTV7S7275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C2[];
static Base_Class bases_S7275C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S7275C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(48,24), //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
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7275C3,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7275C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7275C20[];
extern void _ZN8S7275C20D1Ev();
extern void _ZN8S7275C20D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7275C20D1Ev,_ZTv0_n28_N8S7275C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7275C20D1Ev,_ZThn4_N8S7275C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7275C20D0Ev,_ZTv0_n28_N8S7275C20D0Ev)();
extern void ABISELECT(_ZThn8_N8S7275C20D0Ev,_ZThn4_N8S7275C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C20D1Ev,_ZTv0_n24_N8S7275C20D1Ev)();
extern void ABISELECT(_ZThn24_N8S7275C20D1Ev,_ZThn12_N8S7275C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7275C20D0Ev,_ZTv0_n24_N8S7275C20D0Ev)();
extern void ABISELECT(_ZThn24_N8S7275C20D0Ev,_ZThn12_N8S7275C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C20D1Ev,_ZTv0_n12_N8S7275C20D1Ev)();
extern void ABISELECT(_ZThn48_N8S7275C20D1Ev,_ZThn24_N8S7275C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C20D0Ev,_ZTv0_n12_N8S7275C20D0Ev)();
extern void ABISELECT(_ZThn48_N8S7275C20D0Ev,_ZThn24_N8S7275C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C20[] = {
  0,
  0,
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&_ZN8S7275C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C20D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7275C20D1Ev,_ZTv0_n28_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7275C20D0Ev,_ZTv0_n28_N8S7275C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C20D1Ev,_ZTv0_n24_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C20D0Ev,_ZTv0_n24_N8S7275C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C20D1Ev,_ZTv0_n12_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C20D0Ev,_ZTv0_n12_N8S7275C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7275C20[];
extern void _ZN7S7275C2D1Ev();
extern void _ZN7S7275C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C2__8S7275C20[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&_ZN7S7275C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7275C2D1Ev,_ZThn4_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7275C2D0Ev,_ZThn4_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C3__7S7275C2__8S7275C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn12_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn12_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C2__8S7275C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C2__8S7275C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev),
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C3__8S7275C20[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C3__8S7275C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C3__8S7275C20[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C20[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__8S7275C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
static  VTT_ENTRY vtt_S7275C20[] = {
  {&(_ZTV8S7275C20[9]),  9,33},
  {&(_ZTV8S7275C20[9]),  9,33},
  {&(_ZTV8S7275C20[18]),  18,33},
  {&(_ZTV8S7275C20[26]),  26,33},
  {&(_ZTV8S7275C20[31]),  31,33},
  {&(_tg__ZTV7S7275C2__8S7275C20[7]),  7,9},
  {&(_tg__ZTV7S7275C3__7S7275C2__8S7275C20[7]),  7,9},
  {&(_tg__ZTV7S7275C7__7S7275C2__8S7275C20[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C2__8S7275C20[3]),  3,5},
  {&(_tg__ZTV7S7275C3__8S7275C20[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C3__8S7275C20[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C3__8S7275C20[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C20[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__8S7275C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7275C20[];
extern  VTBL_ENTRY _ZTV8S7275C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C20[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn12_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn12_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7275C2D0Ev,_ZThn4_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7275C2D1Ev,_ZThn4_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C20D0Ev,_ZTv0_n12_N8S7275C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7275C20D0Ev,_ZThn24_N8S7275C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C20D1Ev,_ZTv0_n12_N8S7275C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7275C20D1Ev,_ZThn24_N8S7275C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C20D0Ev,_ZTv0_n24_N8S7275C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7275C20D0Ev,_ZThn12_N8S7275C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7275C20D1Ev,_ZTv0_n24_N8S7275C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7275C20D1Ev,_ZThn12_N8S7275C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7275C20D0Ev,_ZTv0_n28_N8S7275C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7275C20D0Ev,_ZThn4_N8S7275C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7275C20D1Ev,_ZTv0_n28_N8S7275C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7275C20D1Ev,_ZThn4_N8S7275C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C20 = {  "S7275C20", // class name
  bases_S7275C20, 10,
  &(vtc_S7275C20[0]), // expected_vtbl_contents
  &(vtt_S7275C20[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7275C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7275C20),33, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7275C20),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7275C1  : S7275C2 , virtual S7275C10 , S7275C18 , virtual S2014C24 , virtual S7275C20 {
  ~S7275C1(); // tgen
  S7275C1(); // tgen
};
//SIG(1 S7275C1) C1{ BC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd} VBC10{ VBC11{ VBC5 FL} BC12{ VBC13{ BC11 VBC6 VBC8 VBC7 VBC14{ BC15{ BC6 BC5 BC4 BC8 Fs:16 Fl} BC5 Fi} vd Fl FC11} BC16{ VBC7 BC3 VBC4 vd FC8[6]} BC17{ VBC11 VBC8 Fc:1} BC7} BC14 BC4 VBC16 vd} BC18{ BC11 vd} VBC19{ m} VBC20{ VBC2}}


S7275C1 ::~S7275C1(){ note_dtor("S7275C1", this);} // tgen
S7275C1 ::S7275C1(){ note_ctor("S7275C1", this);} // tgen

static void Test_S7275C1()
{
  extern Class_Descriptor cd_S7275C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,64)];
    init_test(&cd_S7275C1, buf);
    S7275C1 *dp, &lv = *(dp=new (buf) S7275C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,252), "sizeof(S7275C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7275C1)");
    /*is_ambiguous_... S7275C1::S7275C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*), ABISELECT(33,21), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*), ABISELECT(24,16), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C3 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*), ABISELECT(24,16), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C3 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C3*), 0, "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*), 0, "S7275C1");
    /*is_ambiguous_... S7275C13::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C13*), 0, "S7275C1");
    check_base_class_offset(lv, (S2014C28*)(S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), 0, "S7275C1");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C7*)(S7275C12*)(S7275C10*), 0, "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C3*)(S7275C16*), 0, "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*), ABISELECT(64,36), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*), ABISELECT(64,36), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C11 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C11*), ABISELECT(64,36), "S7275C1");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*)(S7275C13*), ABISELECT(64,36), "S7275C1");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C7*)(S7275C12*)(S7275C10*), ABISELECT(64,36), "S7275C1");
    check_base_class_offset(lv, (S7275C5*)(S7275C11*)(S7275C18*), ABISELECT(64,36), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*), ABISELECT(76,44), "S7275C1");
    /*is_ambiguous_... S7275C13::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C13*), ABISELECT(76,44), "S7275C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S7275C17*)(S7275C12*)(S7275C10*), ABISELECT(76,44), "S7275C1");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C7*)(S7275C12*)(S7275C10*), ABISELECT(76,44), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C3 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C3*), ABISELECT(40,24), "S7275C1");
    check_base_class_offset(lv, (S7275C7*)(S7275C13*), ABISELECT(40,24), "S7275C1");
    check_base_class_offset(lv, (S7275C7*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(40,24), "S7275C1");
    check_base_class_offset(lv, (S7275C7*)(S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(40,24), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C16*), ABISELECT(40,24), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C3*)(S7275C16*), ABISELECT(40,24), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C2 */ AMB_check_base_class_offset(lv, (S7275C3*)(S7275C2*), ABISELECT(24,16), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C2 */ AMB_check_base_class_offset(lv, (S7275C3*)(S7275C2*), ABISELECT(24,16), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C2 */ AMB_check_base_class_offset(lv, (S7275C2*), 0, "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C11 */ AMB_check_base_class_offset(lv, (S7275C11*)(S7275C10*), ABISELECT(216,136), "S7275C1");
    check_base_class_offset(lv, (S7275C11*)(S7275C17*)(S7275C12*)(S7275C10*), ABISELECT(216,136), "S7275C1");
    check_base_class_offset(lv, (S7275C11*)(S7275C13*), ABISELECT(232,148), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*), ABISELECT(288,184), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(288,184), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*), ABISELECT(288,184), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*), ABISELECT(297,189), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*), ABISELECT(300,192), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C15*)(S7275C14*), ABISELECT(288,184), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*), ABISELECT(320,204), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*), ABISELECT(320,204), "S7275C1");
    check_base_class_offset(lv, (S7275C14*)(S7275C13*), ABISELECT(288,184), "S7275C1");
    check_base_class_offset(lv, (S7275C13*)(S7275C12*)(S7275C10*), ABISELECT(232,148), "S7275C1");
    /*is_ambiguous_... S7275C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(89,53), "S7275C1");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(80,48), "S7275C1");
    /*is_ambiguous_... S7275C3::S7275C5 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(80,48), "S7275C1");
    check_base_class_offset(lv, (S7275C3*)(S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(80,48), "S7275C1");
    /*is_ambiguous_... S7275C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C16*)(S7275C12*)(S7275C10*), 0, "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C16*), 0, "S7275C1");
    check_base_class_offset(lv, (S7275C16*)(S7275C12*)(S7275C10*), ABISELECT(80,48), "S7275C1");
    check_base_class_offset(lv, (S7275C17*)(S7275C12*)(S7275C10*), ABISELECT(120,80), "S7275C1");
    /*is_ambiguous_... S7275C12::S7275C7 */ AMB_check_base_class_offset(lv, (S7275C7*)(S7275C12*)(S7275C10*), ABISELECT(136,88), "S7275C1");
    check_base_class_offset(lv, (S7275C12*)(S7275C10*), ABISELECT(80,48), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C28*)(S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(160,100), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(160,100), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(160,100), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(169,105), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(172,108), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C15*)(S7275C14*)(S7275C10*), ABISELECT(160,100), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C14*)(S7275C10*), ABISELECT(192,120), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C14*)(S7275C10*), ABISELECT(192,120), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C14 */ AMB_check_base_class_offset(lv, (S7275C14*)(S7275C10*), ABISELECT(160,100), "S7275C1");
    /*is_ambiguous_... S7275C10::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C10*), ABISELECT(208,132), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C3*)(S7275C16*), ABISELECT(345,221), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S2014C38*)(S7275C5*)(S7275C3*)(S7275C16*), ABISELECT(336,216), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C5*)(S7275C3*)(S7275C16*), ABISELECT(336,216), "S7275C1");
    /*is_ambiguous_... S7275C1::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C3*)(S7275C16*), ABISELECT(336,216), "S7275C1");
    /*is_ambiguous_... S7275C10::S7275C16 */ AMB_check_base_class_offset(lv, (S7275C16*)(S7275C10*), ABISELECT(336,216), "S7275C1");
    check_base_class_offset(lv, (S7275C10*), ABISELECT(80,48), "S7275C1");
    check_base_class_offset(lv, (S7275C11*)(S7275C18*), ABISELECT(8,4), "S7275C1");
    check_base_class_offset(lv, (S7275C18*), ABISELECT(8,4), "S7275C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S7275C1");
    check_base_class_offset(lv, (S7275C2*)(S7275C20*), ABISELECT(376,248), "S7275C1");
    check_base_class_offset(lv, (S7275C20*), ABISELECT(376,248), "S7275C1");
    test_class_info(&lv, &cd_S7275C1);
    dp->~S7275C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7275C1(Test_S7275C1, "S7275C1", ABISELECT(384,252));

#else // __cplusplus

extern void _ZN7S7275C1C1Ev();
extern void _ZN7S7275C1D1Ev();
Name_Map name_map_S7275C1[] = {
  NSPAIR(_ZN7S7275C1C1Ev),
  NSPAIR(_ZN7S7275C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S7275C2;
extern VTBL_ENTRY _ZTI7S7275C2[];
extern  VTBL_ENTRY _ZTV7S7275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C2[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
extern Class_Descriptor cd_S7275C13;
extern VTBL_ENTRY _ZTI8S7275C13[];
extern  VTBL_ENTRY _ZTV8S7275C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C16;
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
extern Class_Descriptor cd_S7275C17;
extern VTBL_ENTRY _ZTI8S7275C17[];
extern  VTBL_ENTRY _ZTV8S7275C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C17[];
extern Class_Descriptor cd_S7275C7;
extern VTBL_ENTRY _ZTI7S7275C7[];
extern  VTBL_ENTRY _ZTV7S7275C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C7[];
extern Class_Descriptor cd_S7275C12;
extern VTBL_ENTRY _ZTI8S7275C12[];
extern  VTBL_ENTRY _ZTV8S7275C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C12[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S7275C15;
extern VTBL_ENTRY _ZTI8S7275C15[];
extern  VTBL_ENTRY _ZTV8S7275C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C14;
extern VTBL_ENTRY _ZTI8S7275C14[];
extern  VTBL_ENTRY _ZTV8S7275C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7275C5;
extern VTBL_ENTRY _ZTI7S7275C5[];
extern  VTBL_ENTRY _ZTV7S7275C5[];
extern Class_Descriptor cd_S7275C3;
extern VTBL_ENTRY _ZTI7S7275C3[];
extern  VTBL_ENTRY _ZTV7S7275C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C3[];
extern Class_Descriptor cd_S7275C16;
extern VTBL_ENTRY _ZTI8S7275C16[];
extern  VTBL_ENTRY _ZTV8S7275C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C16[];
extern Class_Descriptor cd_S7275C10;
extern VTBL_ENTRY _ZTI8S7275C10[];
extern  VTBL_ENTRY _ZTV8S7275C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C10[];
extern Class_Descriptor cd_S7275C11;
extern VTBL_ENTRY _ZTI8S7275C11[];
extern  VTBL_ENTRY _ZTV8S7275C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C11[];
extern Class_Descriptor cd_S7275C18;
extern VTBL_ENTRY _ZTI8S7275C18[];
extern  VTBL_ENTRY _ZTV8S7275C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C18[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S7275C2;
extern VTBL_ENTRY _ZTI7S7275C2[];
extern  VTBL_ENTRY _ZTV7S7275C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C2[];
extern Class_Descriptor cd_S7275C20;
extern VTBL_ENTRY _ZTI8S7275C20[];
extern  VTBL_ENTRY _ZTV8S7275C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7275C20[];
static Base_Class bases_S7275C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(33,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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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_S7275C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(64,36), //bcp->offset
    40, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    7, //immediately_derived
  0, 1},
  {&cd_S7275C7,    ABISELECT(40,24), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7275C3,    ABISELECT(24,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7275C2,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7275C11,    ABISELECT(216,136), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7275C11,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(288,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
    17, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(288,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
    14, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(288,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
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(297,189), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(300,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
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7275C15,    ABISELECT(288,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
    7, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(320,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
    19, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(320,204), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(288,184), //bcp->offset
    97, //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
    9, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7275C13,    ABISELECT(232,148), //bcp->offset
    87, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S2014C38,    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
    25, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    24, //immediately_derived
  0, 0},
  {&cd_S7275C5,    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
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7275C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7275C16,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7275C17,    ABISELECT(120,80), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7275C7,    ABISELECT(136,88), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7275C12,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    36, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7275C5,    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
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    36, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(172,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_S7275C15,    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
    22, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    38, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(192,120), //bcp->offset
    77, //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
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7275C14,    ABISELECT(160,100), //bcp->offset
    73, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(345,221), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(336,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
    43, //immediately_derived
  0, 0},
  {&cd_S7275C5,    ABISELECT(336,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
    12, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7275C3,    ABISELECT(336,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7275C16,    ABISELECT(336,216), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S7275C10,    ABISELECT(80,48), //bcp->offset
    45, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7275C11,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7275C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7275C2,    ABISELECT(376,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S7275C20,    ABISELECT(376,248), //bcp->offset
    116, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7275C1[];
extern void _ZN7S7275C1D1Ev();
extern void _ZN7S7275C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7275C1D1Ev,_ZThn4_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7275C1D0Ev,_ZThn4_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7275C1D1Ev,_ZTv0_n28_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C1D1Ev,_ZThn16_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7275C1D0Ev,_ZTv0_n28_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C1D0Ev,_ZThn16_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C1D1Ev,_ZTv0_n24_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C1D1Ev,_ZThn24_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C1D0Ev,_ZTv0_n24_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C1D0Ev,_ZThn24_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C1D1Ev,_ZTv0_n12_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7275C1D1Ev,_ZThn36_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C1D0Ev,_ZTv0_n12_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7275C1D0Ev,_ZThn36_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7275C1D1Ev,_ZTv0_n48_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7275C1D1Ev,_ZThn48_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7275C1D0Ev,_ZTv0_n48_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7275C1D0Ev,_ZThn48_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn40_n96_N7S7275C1D1Ev,_ZTvn32_n48_N7S7275C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N7S7275C1D0Ev,_ZTvn32_n48_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTvn56_n96_N7S7275C1D1Ev,_ZTvn40_n48_N7S7275C1D1Ev)();
extern void ABISELECT(_ZTvn56_n96_N7S7275C1D0Ev,_ZTvn40_n48_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTvn80_n96_N7S7275C1D1Ev,_ZTvn52_n48_N7S7275C1D1Ev)();
extern void ABISELECT(_ZTvn80_n96_N7S7275C1D0Ev,_ZTvn52_n48_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTvn112_n96_N7S7275C1D1Ev,_ZTvn72_n48_N7S7275C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N7S7275C1D0Ev,_ZTvn72_n48_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7275C1D1Ev,_ZTv0_n16_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S7275C1D1Ev,_ZThn136_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7275C1D0Ev,_ZTv0_n16_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S7275C1D0Ev,_ZThn136_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S7275C1D1Ev,_ZThn148_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S7275C1D0Ev,_ZThn148_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C1D1Ev,_ZTv0_n12_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7275C1D1Ev,_ZThn184_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C1D0Ev,_ZTv0_n12_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7275C1D0Ev,_ZThn184_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N7S7275C1D1Ev,_ZTvn20_n12_N7S7275C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N7S7275C1D0Ev,_ZTvn20_n12_N7S7275C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S7275C1D1Ev,_ZThn216_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S7275C1D0Ev,_ZThn216_N7S7275C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev)();
extern void ABISELECT(_ZThn376_N7S7275C1D1Ev,_ZThn248_N7S7275C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev)();
extern void ABISELECT(_ZThn376_N7S7275C1D0Ev,_ZThn248_N7S7275C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7275C1[] = {
  ABISELECT(376,248),
  ABISELECT(376,248),
  0,
  ABISELECT(336,216),
  0,
  ABISELECT(288,184),
  ABISELECT(232,148),
  ABISELECT(216,136),
  ABISELECT(80,48),
  ABISELECT(76,44),
  ABISELECT(64,36),
  ABISELECT(40,24),
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&_ZN7S7275C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C1D0Ev,
  ABISELECT(56,32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7275C1D1Ev,_ZThn4_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7275C1D0Ev,_ZThn4_N7S7275C1D0Ev),
  ABISELECT(-24,-16),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C1D1Ev,_ZTv0_n28_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C1D0Ev,_ZTv0_n28_N7S7275C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C1D1Ev,_ZTv0_n24_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C1D0Ev,_ZTv0_n24_N7S7275C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C1D1Ev,_ZTv0_n12_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C1D0Ev,_ZTv0_n12_N7S7275C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(256,168),
  ABISELECT(136,88),
  ABISELECT(208,136),
  ABISELECT(152,100),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7275C1D1Ev,_ZTv0_n48_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7275C1D0Ev,_ZTv0_n48_N7S7275C1D0Ev),
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,56),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N7S7275C1D1Ev,_ZTvn32_n48_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N7S7275C1D0Ev,_ZTvn32_n48_N7S7275C1D0Ev),
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N7S7275C1D1Ev,_ZTvn40_n48_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n96_N7S7275C1D0Ev,_ZTvn40_n48_N7S7275C1D0Ev),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n96_N7S7275C1D1Ev,_ZTvn52_n48_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n96_N7S7275C1D0Ev,_ZTvn52_n48_N7S7275C1D0Ev),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N7S7275C1D1Ev,_ZTvn72_n48_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N7S7275C1D0Ev,_ZTvn72_n48_N7S7275C1D0Ev),
  ABISELECT(-216,-136),
  ABISELECT(-152,-100),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7275C1D1Ev,_ZTv0_n16_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7275C1D0Ev,_ZTv0_n16_N7S7275C1D0Ev),
  ABISELECT(-232,-148),
  ABISELECT(56,36),
  ABISELECT(-192,-124),
  ABISELECT(-156,-104),
  ABISELECT(-232,-148),
  ABISELECT(-168,-112),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev),
  ABISELECT(-288,-184),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C1D1Ev,_ZTv0_n12_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C1D0Ev,_ZTv0_n12_N7S7275C1D0Ev),
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N7S7275C1D1Ev,_ZTvn20_n12_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N7S7275C1D0Ev,_ZTvn20_n12_N7S7275C1D0Ev),
  ABISELECT(-336,-216),
  ABISELECT(-336,-216),
  ABISELECT(-260,-172),
  ABISELECT(-272,-180),
  ABISELECT(-296,-192),
  ABISELECT(-336,-216),
  ABISELECT(-336,-216),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev),
  0,
  ABISELECT(-376,-248),
  ABISELECT(-300,-204),
  ABISELECT(-312,-212),
  ABISELECT(-336,-224),
  ABISELECT(-376,-248),
  ABISELECT(-352,-232),
  ABISELECT(-376,-248),
  (VTBL_ENTRY)&(_ZTI7S7275C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7275C1[];
extern void _ZN7S7275C2D1Ev();
extern void _ZN7S7275C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C2__A__7S7275C1[] = {
  ABISELECT(76,44),
  ABISELECT(64,36),
  ABISELECT(40,24),
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&_ZN7S7275C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn16_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn16_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C3__7S7275C2__A__7S7275C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C2__A__7S7275C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7275C2D1Ev,_ZThn36_N7S7275C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7275C2D0Ev,_ZThn36_N7S7275C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C2__A__7S7275C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev),
};
extern void _ZN8S7275C18D1Ev();
extern void _ZN8S7275C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C18__7S7275C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C18[0]),
  (VTBL_ENTRY)&_ZN8S7275C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C18D0Ev,
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C118S7275C18__A2__7S7275C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn32_N8S7275C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn32_N8S7275C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C118S7275C18__A2__7S7275C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C18D1Ev,_ZThn32_N8S7275C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C18D0Ev,_ZThn32_N8S7275C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C18__7S7275C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev),
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C3__7S7275C1[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C3__7S7275C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C3__7S7275C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C1[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C7__7S7275C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void _ZN8S7275C10D1Ev();
extern void _ZN8S7275C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C10__7S7275C1[] = {
  ABISELECT(256,168),
  ABISELECT(136,88),
  ABISELECT(208,136),
  ABISELECT(152,100),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&_ZN8S7275C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C10D0Ev,
};
extern void _ZN8S7275C12D1Ev();
extern void _ZN8S7275C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(136,88),
  ABISELECT(208,136),
  ABISELECT(152,100),
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&_ZN8S7275C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C12D0Ev,
};
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C168S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-80,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C168S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C168S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
extern void _ZN8S7275C17D1Ev();
extern void _ZN8S7275C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C178S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&_ZN8S7275C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S7275C17D1Ev,_ZThn56_N8S7275C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S7275C17D0Ev,_ZThn56_N8S7275C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C178S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-152,-100),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C178S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S7275C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D1Ev,_ZTv0_n12_N8S7275C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C17D0Ev,_ZTv0_n12_N8S7275C17D0Ev),
};
extern void _ZN7S7275C7D1Ev();
extern void _ZN7S7275C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C78S7275C128S7275C10__A1__7S7275C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&_ZN7S7275C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__7S7275C78S7275C128S7275C10__A1__7S7275C1[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI7S7275C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn152_N8S7275C12D1Ev,_ZThn100_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn152_N8S7275C12D0Ev,_ZThn100_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C13__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(56,36),
  ABISELECT(-192,-124),
  ABISELECT(-156,-104),
  ABISELECT(-232,-148),
  ABISELECT(-168,-112),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D1Ev,_ZTv0_n24_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C12D0Ev,_ZTv0_n24_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7275C12D1Ev,_ZThn136_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S7275C12D0Ev,_ZThn136_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D1Ev,_ZTvn20_n12_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C12D0Ev,_ZTvn20_n12_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7275C17__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,56),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D1Ev,_ZThn32_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C12D0Ev,_ZThn32_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7275C12D1Ev,_ZThn88_N8S7275C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7275C12D0Ev,_ZThn88_N8S7275C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__A1__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(-152,-100),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__A__8S7275C128S7275C10__7S7275C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D1Ev,_ZThn40_N8S7275C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C12D0Ev,_ZThn40_N8S7275C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S7275C10D1Ev,_ZThn88_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S7275C10D0Ev,_ZThn88_N8S7275C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C11__8S7275C10__7S7275C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(-152,-100),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C10__7S7275C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S7275C10D1Ev,_ZThn100_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S7275C10D0Ev,_ZThn100_N8S7275C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C13__8S7275C10__7S7275C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(56,36),
  ABISELECT(-192,-124),
  ABISELECT(-156,-104),
  ABISELECT(-232,-148),
  ABISELECT(-168,-112),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C10D1Ev,_ZTv0_n24_N8S7275C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C10D0Ev,_ZTv0_n24_N8S7275C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C10__7S7275C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C10D1Ev,_ZTv0_n24_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C10D0Ev,_ZTv0_n24_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7275C10D1Ev,_ZThn136_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7275C10D0Ev,_ZThn136_N8S7275C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C10__7S7275C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C10D1Ev,_ZTvn20_n12_N8S7275C10D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C10D0Ev,_ZTvn20_n12_N8S7275C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C10__7S7275C1[] = {
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C10D1Ev,_ZTvn20_n12_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C10D0Ev,_ZTvn20_n12_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7275C10D1Ev,_ZThn32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S7275C10D0Ev,_ZThn32_N8S7275C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7275C178S7275C12__8S7275C10__7S7275C1[] = {
  ABISELECT(-44,-36),
  ABISELECT(-56,-44),
  ABISELECT(96,56),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C10D1Ev,_ZThn32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7275C10D0Ev,_ZThn32_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7275C10D1Ev,_ZThn40_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C10D0Ev,_ZThn40_N8S7275C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C78S7275C12__A1__8S7275C10__7S7275C1[] = {
  ABISELECT(-60,-44),
  ABISELECT(-72,-52),
  ABISELECT(-136,-88),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C10D1Ev,_ZThn40_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7275C10D0Ev,_ZThn40_N8S7275C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7275C10D1Ev,_ZThn168_N8S7275C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S7275C10D0Ev,_ZThn168_N8S7275C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C16__A1__8S7275C10__7S7275C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-336,-216),
  ABISELECT(-260,-172),
  ABISELECT(-272,-180),
  ABISELECT(-296,-192),
  ABISELECT(-336,-216),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S7275C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev),
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C11__7S7275C1[] = {
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C11__7S7275C1[] = {
  ABISELECT(152,100),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void _ZN8S7275C13D1Ev();
extern void _ZN8S7275C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C13__7S7275C1[] = {
  ABISELECT(56,36),
  ABISELECT(-192,-124),
  ABISELECT(-156,-104),
  ABISELECT(-232,-148),
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&_ZN8S7275C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C13D0Ev,
};
extern void _ZN8S7275C11D1Ev();
extern void _ZN8S7275C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C118S7275C13__A1__7S7275C1[] = {
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&_ZN8S7275C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C118S7275C13__A1__7S7275C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S7275C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C13__7S7275C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C13__7S7275C1[] = {
  ABISELECT(192,124),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(192,124),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D1Ev,_ZTv0_n24_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C13D0Ev,_ZTv0_n24_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C14__8S7275C13__7S7275C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C58S7275C14__A2__8S7275C13__7S7275C1[] = {
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S7275C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D1Ev,_ZTvn20_n12_N8S7275C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S7275C13D0Ev,_ZTvn20_n12_N8S7275C13D0Ev),
};
extern void _ZN8S7275C16D1Ev();
extern void _ZN8S7275C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7275C16__A1__7S7275C1[] = {
  ABISELECT(-336,-216),
  ABISELECT(-260,-172),
  ABISELECT(-272,-180),
  ABISELECT(-296,-192),
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&_ZN8S7275C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7275C16D0Ev,
};
extern void _ZN7S7275C3D1Ev();
extern void _ZN7S7275C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C38S7275C16__A2__7S7275C1[] = {
  ABISELECT(-260,-172),
  ABISELECT(-272,-180),
  ABISELECT(-296,-192),
  ABISELECT(-336,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&_ZN7S7275C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C38S7275C16__A2__7S7275C1[] = {
  ABISELECT(296,192),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C38S7275C16__A2__7S7275C1[] = {
  ABISELECT(272,180),
  ABISELECT(272,180),
  (VTBL_ENTRY)&(_ZTI7S7275C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C16__A1__7S7275C1[] = {
  ABISELECT(296,192),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D1Ev,_ZTv0_n24_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C16D0Ev,_ZTv0_n24_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__8S7275C16__A1__7S7275C1[] = {
  ABISELECT(272,180),
  ABISELECT(272,180),
  (VTBL_ENTRY)&(_ZTI8S7275C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D1Ev,_ZTv0_n12_N8S7275C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C16D0Ev,_ZTv0_n12_N8S7275C16D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7275C20D1Ev,_ZTv0_n32_N8S7275C20D1Ev)();
extern void _ZN8S7275C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7275C20D0Ev,_ZTv0_n32_N8S7275C20D0Ev)();
extern void _ZN8S7275C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7275C20__7S7275C1[] = {
  0,
  0,
  ABISELECT(-300,-204),
  ABISELECT(-312,-212),
  ABISELECT(-336,-224),
  ABISELECT(-376,-248),
  ABISELECT(-352,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C20D1Ev,_ZTv0_n32_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7275C20D0Ev,_ZTv0_n32_N8S7275C20D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S7275C20D1Ev,_ZTv0_n28_N8S7275C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7275C20D0Ev,_ZTv0_n28_N8S7275C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C3__8S7275C20__7S7275C1[] = {
  ABISELECT(352,232),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(352,232),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7275C20D1Ev,_ZTv0_n28_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7275C20D0Ev,_ZTv0_n28_N8S7275C20D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7275C20D1Ev,_ZTv0_n24_N8S7275C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7275C20D0Ev,_ZTv0_n24_N8S7275C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__8S7275C20__7S7275C1[] = {
  ABISELECT(336,224),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(336,224),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C20D1Ev,_ZTv0_n24_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7275C20D0Ev,_ZTv0_n24_N8S7275C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7275C20D1Ev,_ZTv0_n12_N8S7275C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7275C20D0Ev,_ZTv0_n12_N8S7275C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__8S7275C20__7S7275C1[] = {
  ABISELECT(312,212),
  ABISELECT(312,212),
  (VTBL_ENTRY)&(_ZTI8S7275C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C20D1Ev,_ZTv0_n12_N8S7275C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7275C20D0Ev,_ZTv0_n12_N8S7275C20D0Ev),
};
extern void _ZN7S7275C2D1Ev();
extern void _ZN7S7275C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7275C2__A1__7S7275C1[] = {
  ABISELECT(-300,-204),
  ABISELECT(-312,-212),
  ABISELECT(-336,-224),
  ABISELECT(-376,-248),
  ABISELECT(-352,-232),
  0,
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&_ZN7S7275C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7275C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C3__7S7275C2__A1__7S7275C1[] = {
  ABISELECT(352,232),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(352,232),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C7__7S7275C2__A1__7S7275C1[] = {
  ABISELECT(336,224),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-24),
  ABISELECT(336,224),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7275C5__A1__7S7275C2__A1__7S7275C1[] = {
  ABISELECT(312,212),
  ABISELECT(312,212),
  (VTBL_ENTRY)&(_ZTI7S7275C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev),
};
static  VTT_ENTRY vtt_S7275C1[] = {
  {&(_ZTV7S7275C1[16]),  16,127},
  {&(_tg__ZTV7S7275C2__A__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C3__7S7275C2__A__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C7__7S7275C2__A__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C2__A__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C18__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C118S7275C18__A2__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C118S7275C18__A2__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C18__7S7275C1[3]),  3,5},
  {&(_ZTV7S7275C1[30]),  30,127},
  {&(_ZTV7S7275C1[38]),  38,127},
  {&(_ZTV7S7275C1[43]),  43,127},
  {&(_ZTV7S7275C1[57]),  57,127},
  {&(_ZTV7S7275C1[85]),  85,127},
  {&(_ZTV7S7275C1[95]),  95,127},
  {&(_ZTV7S7275C1[100]),  100,127},
  {&(_ZTV7S7275C1[104]),  104,127},
  {&(_ZTV7S7275C1[64]),  64,127},
  {&(_ZTV7S7275C1[71]),  71,127},
  {&(_ZTV7S7275C1[75]),  75,127},
  {&(_ZTV7S7275C1[79]),  79,127},
  {&(_ZTV7S7275C1[114]),  114,127},
  {&(_ZTV7S7275C1[21]),  21,127},
  {&(_ZTV7S7275C1[125]),  125,127},
  {&(_ZTV7S7275C1[125]),  125,127},
  {&(_tg__ZTV7S7275C3__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C3__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C3__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C7__7S7275C1[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C7__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C10__7S7275C1[11]),  11,13},
  {&(_tg__ZTV8S7275C128S7275C10__7S7275C1[10]),  10,12},
  {&(_tg__ZTV8S7275C168S7275C128S7275C10__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C38S7275C168S7275C128S7275C10__A1__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C168S7275C128S7275C10__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__8S7275C168S7275C128S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C178S7275C128S7275C10__7S7275C1[5]),  5,7},
  {&(_tg__ZTV8S7275C11__8S7275C178S7275C128S7275C10__7S7275C1[4]),  4,6},
  {&(_tg__ZTV7S7275C5__8S7275C178S7275C128S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C78S7275C128S7275C10__A1__7S7275C1[5]),  5,7},
  {&(_tg__ZTV7S7275C5__7S7275C78S7275C128S7275C10__A1__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C13__8S7275C128S7275C10__7S7275C1[8]),  8,10},
  {&(_tg__ZTV7S7275C5__8S7275C128S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C128S7275C10__7S7275C1[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C128S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C128S7275C10__7S7275C1[2]),  2,4},
  {&(_tg__ZTV8S7275C17__8S7275C128S7275C10__7S7275C1[5]),  5,7},
  {&(_tg__ZTV8S7275C11__A1__8S7275C128S7275C10__7S7275C1[4]),  4,6},
  {&(_tg__ZTV7S7275C7__A__8S7275C128S7275C10__7S7275C1[5]),  5,7},
  {&(_tg__ZTV8S7275C11__8S7275C10__7S7275C1[4]),  4,6},
  {&(_tg__ZTV7S7275C5__8S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C13__8S7275C10__7S7275C1[8]),  8,10},
  {&(_tg__ZTV7S7275C7__8S7275C10__7S7275C1[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C10__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C10__7S7275C1[2]),  2,4},
  {&(_tg__ZTV8S7275C178S7275C12__8S7275C10__7S7275C1[5]),  5,7},
  {&(_tg__ZTV7S7275C78S7275C12__A1__8S7275C10__7S7275C1[5]),  5,7},
  {&(_tg__ZTV8S7275C16__A1__8S7275C10__7S7275C1[8]),  8,10},
  {&(_tg__ZTV8S7275C11__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C11__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C13__7S7275C1[7]),  7,9},
  {&(_tg__ZTV8S7275C118S7275C13__A1__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C118S7275C13__A1__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C5__8S7275C13__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C13__7S7275C1[6]),  6,8},
  {&(_tg__ZTV8S7275C14__8S7275C13__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C58S7275C14__A2__8S7275C13__7S7275C1[2]),  2,4},
  {&(_tg__ZTV8S7275C16__A1__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C38S7275C16__A2__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C7__7S7275C38S7275C16__A2__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C38S7275C16__A2__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C7__8S7275C16__A1__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__8S7275C16__A1__7S7275C1[3]),  3,5},
  {&(_tg__ZTV8S7275C20__7S7275C1[9]),  9,11},
  {&(_tg__ZTV8S7275C20__7S7275C1[9]),  9,11},
  {&(_tg__ZTV7S7275C3__8S7275C20__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C7__8S7275C20__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__8S7275C20__7S7275C1[3]),  3,5},
  {&(_tg__ZTV7S7275C2__A1__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C3__7S7275C2__A1__7S7275C1[7]),  7,9},
  {&(_tg__ZTV7S7275C7__7S7275C2__A1__7S7275C1[6]),  6,8},
  {&(_tg__ZTV7S7275C5__A1__7S7275C2__A1__7S7275C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7275C1[];
extern  VTBL_ENTRY _ZTV7S7275C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7275C1[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C20D0Ev,_ZTv0_n32_N8S7275C20D0Ev), // 
  (VTBL_ENTRY)_ZN8S7275C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C20D1Ev,_ZTv0_n32_N8S7275C20D1Ev), // 
  (VTBL_ENTRY)_ZN8S7275C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D0Ev,_ZTv0_n12_N8S7275C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D0Ev,_ZThn36_N8S7275C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C13D1Ev,_ZTv0_n12_N8S7275C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C13D1Ev,_ZThn36_N8S7275C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C10D0Ev,_ZTv0_n12_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7275C10D0Ev,_ZThn136_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C10D1Ev,_ZTv0_n12_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7275C10D1Ev,_ZThn136_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C10D0Ev,_ZTv0_n32_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7275C10D0Ev,_ZThn168_N8S7275C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C10D0Ev,_ZThn100_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C10D1Ev,_ZTv0_n32_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7275C10D1Ev,_ZThn168_N8S7275C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C10D1Ev,_ZThn100_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C10D0Ev,_ZTv0_n16_N8S7275C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C10D0Ev,_ZThn88_N8S7275C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C10D1Ev,_ZTv0_n16_N8S7275C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C10D1Ev,_ZThn88_N8S7275C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D0Ev,_ZTv0_n16_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C12D0Ev,_ZThn88_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C12D1Ev,_ZTv0_n16_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7275C12D1Ev,_ZThn88_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D0Ev,_ZTv0_n12_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7275C12D0Ev,_ZThn136_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C12D1Ev,_ZTv0_n12_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7275C12D1Ev,_ZThn136_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D0Ev,_ZTv0_n32_N8S7275C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C12D0Ev,_ZThn100_N8S7275C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7275C12D1Ev,_ZTv0_n32_N8S7275C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7275C12D1Ev,_ZThn100_N8S7275C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D0Ev,_ZTv0_n16_N8S7275C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C17D0Ev,_ZThn56_N8S7275C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7275C17D1Ev,_ZTv0_n16_N8S7275C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7275C17D1Ev,_ZThn56_N8S7275C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D0Ev,_ZTv0_n12_N7S7275C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D0Ev,_ZThn12_N7S7275C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C7D1Ev,_ZTv0_n12_N7S7275C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C7D1Ev,_ZThn12_N7S7275C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D0Ev,_ZTv0_n12_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D0Ev,_ZThn20_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C3D1Ev,_ZTv0_n12_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C3D1Ev,_ZThn20_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D0Ev,_ZTv0_n24_N7S7275C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D0Ev,_ZThn8_N7S7275C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C3D1Ev,_ZTv0_n24_N7S7275C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7275C3D1Ev,_ZThn8_N7S7275C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C18D0Ev,_ZTv0_n12_N8S7275C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C18D0Ev,_ZThn32_N8S7275C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C18D1Ev,_ZTv0_n12_N8S7275C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C18D1Ev,_ZThn32_N8S7275C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D0Ev,_ZTv0_n12_N8S7275C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D0Ev,_ZThn32_N8S7275C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7275C11D1Ev,_ZTv0_n12_N8S7275C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7275C11D1Ev,_ZThn32_N8S7275C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D0Ev,_ZTv0_n12_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C2D0Ev,_ZThn36_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C2D1Ev,_ZTv0_n12_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C2D1Ev,_ZThn36_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D0Ev,_ZTv0_n24_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C2D0Ev,_ZThn24_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C2D1Ev,_ZTv0_n24_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C2D1Ev,_ZThn24_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D0Ev,_ZTv0_n28_N7S7275C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D0Ev,_ZThn16_N7S7275C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C2D1Ev,_ZTv0_n28_N7S7275C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C2D1Ev,_ZThn16_N7S7275C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7275C1D0Ev,_ZTv0_n32_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7275C1D0Ev,_ZThn248_N7S7275C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7275C1D0Ev,_ZThn216_N7S7275C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7275C1D0Ev,_ZThn148_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7275C1D1Ev,_ZTv0_n32_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N7S7275C1D1Ev,_ZThn248_N7S7275C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7275C1D1Ev,_ZThn216_N7S7275C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7275C1D1Ev,_ZThn148_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7275C1D0Ev,_ZTv0_n16_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7275C1D0Ev,_ZThn136_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7275C1D1Ev,_ZTv0_n16_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7275C1D1Ev,_ZThn136_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7275C1D0Ev,_ZTv0_n48_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7275C1D0Ev,_ZThn48_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7275C1D1Ev,_ZTv0_n48_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7275C1D1Ev,_ZThn48_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C1D0Ev,_ZTv0_n12_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7275C1D0Ev,_ZThn184_N7S7275C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C1D0Ev,_ZThn36_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7275C1D1Ev,_ZTv0_n12_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7275C1D1Ev,_ZThn184_N7S7275C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7275C1D1Ev,_ZThn36_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C1D0Ev,_ZTv0_n24_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C1D0Ev,_ZThn24_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7275C1D1Ev,_ZTv0_n24_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7275C1D1Ev,_ZThn24_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C1D0Ev,_ZTv0_n28_N7S7275C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C1D0Ev,_ZThn16_N7S7275C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7275C1D1Ev,_ZTv0_n28_N7S7275C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7275C1D1Ev,_ZThn16_N7S7275C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7275C1 = {  "S7275C1", // class name
  bases_S7275C1, 52,
  &(vtc_S7275C1[0]), // expected_vtbl_contents
  &(vtt_S7275C1[0]), // expected_vtt_contents
  ABISELECT(384,252), // object size
  NSPAIRA(_ZTI7S7275C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7275C1),127, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7275C1),84, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C3_nt  {
  long s19169c3f0[10];
  void  mf19169c3(); // _ZN11S19169C3_nt9mf19169c3Ev
};
//SIG(-1 S19169C3_nt) C1{ m Fl[10]}


void  S19169C3_nt ::mf19169c3(){}

//skip512 S19169C3_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19169C3_nt[];
VTBL_ENTRY *P__ZTI11S19169C3_nt = _ZTI11S19169C3_nt; 
Class_Descriptor cd_S19169C3_nt = {  "S19169C3_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI11S19169C3_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  S19169C6_nt  {
  void *s19169c6f0[6];
  void  mf19169c6(); // _ZN11S19169C6_nt9mf19169c6Ev
};
//SIG(-1 S19169C6_nt) C1{ m Fp[6]}


void  S19169C6_nt ::mf19169c6(){}

//skip512 S19169C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19169C6_nt[];
VTBL_ENTRY *P__ZTI11S19169C6_nt = _ZTI11S19169C6_nt; 
Class_Descriptor cd_S19169C6_nt = {  "S19169C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI11S19169C6_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  S19169C5_nt  : virtual S19169C6_nt {
  __tsi64 s19169c5f0;
  ~S19169C5_nt(); // tgen
  S19169C5_nt(); // tgen
};
//SIG(-1 S19169C5_nt) C1{ VBC2{ m Fp[6]} FL}


S19169C5_nt ::~S19169C5_nt(){ note_dtor("S19169C5_nt", this);} // tgen
S19169C5_nt ::S19169C5_nt(){ note_ctor("S19169C5_nt", this);} // tgen

//skip512 S19169C5_nt

#else // __cplusplus

extern void _ZN11S19169C5_ntC1Ev();
extern void _ZN11S19169C5_ntD1Ev();
Name_Map name_map_S19169C5_nt[] = {
  NSPAIR(_ZN11S19169C5_ntC1Ev),
  NSPAIR(_ZN11S19169C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19169C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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},
  {0}};
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
static  VTBL_ENTRY vtc_S19169C5_nt[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C5_nt[];
static  VTT_ENTRY vtt_S19169C5_nt[] = {
  {&(_ZTV11S19169C5_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
VTBL_ENTRY *P__ZTI11S19169C5_nt = _ZTI11S19169C5_nt; 
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
Class_Descriptor cd_S19169C5_nt = {  "S19169C5_nt", // class name
  bases_S19169C5_nt, 1,
  &(vtc_S19169C5_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C5_nt[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI11S19169C5_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19169C5_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C5_nt),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  S19169C7_nt  : virtual S19169C6_nt {
  ~S19169C7_nt(); // tgen
  S19169C7_nt(); // tgen
};
//SIG(-1 S19169C7_nt) C1{ VBC2{ m Fp[6]}}


S19169C7_nt ::~S19169C7_nt(){ note_dtor("S19169C7_nt", this);} // tgen
S19169C7_nt ::S19169C7_nt(){ note_ctor("S19169C7_nt", this);} // tgen

//skip512 S19169C7_nt

#else // __cplusplus

extern void _ZN11S19169C7_ntC1Ev();
extern void _ZN11S19169C7_ntD1Ev();
Name_Map name_map_S19169C7_nt[] = {
  NSPAIR(_ZN11S19169C7_ntC1Ev),
  NSPAIR(_ZN11S19169C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19169C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
static  VTBL_ENTRY vtc_S19169C7_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C7_nt[];
static  VTT_ENTRY vtt_S19169C7_nt[] = {
  {&(_ZTV11S19169C7_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
VTBL_ENTRY *P__ZTI11S19169C7_nt = _ZTI11S19169C7_nt; 
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
Class_Descriptor cd_S19169C7_nt = {  "S19169C7_nt", // class name
  bases_S19169C7_nt, 1,
  &(vtc_S19169C7_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C7_nt[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI11S19169C7_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19169C7_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C7_nt),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  S19169C8_nt  : S19169C6_nt , S19169C5_nt , virtual S19169C7_nt {
  ~S19169C8_nt(); // tgen
  S19169C8_nt(); // tgen
};
//SIG(-1 S19169C8_nt) C1{ BC2{ m Fp[6]} BC3{ VBC2 FL} VBC4{ VBC2}}


S19169C8_nt ::~S19169C8_nt(){ note_dtor("S19169C8_nt", this);} // tgen
S19169C8_nt ::S19169C8_nt(){ note_ctor("S19169C8_nt", this);} // tgen

//skip512 S19169C8_nt

#else // __cplusplus

extern void _ZN11S19169C8_ntC1Ev();
extern void _ZN11S19169C8_ntD1Ev();
Name_Map name_map_S19169C8_nt[] = {
  NSPAIR(_ZN11S19169C8_ntC1Ev),
  NSPAIR(_ZN11S19169C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
static Base_Class bases_S19169C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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_S19169C6_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
    2, //immediately_derived
  0, 1},
  {&cd_S19169C5_nt,    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_S19169C7_nt,    ABISELECT(112,60), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
static  VTBL_ENTRY vtc_S19169C8_nt[] = {
  ABISELECT(112,60),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C8_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__11S19169C8_nt[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTT_ENTRY vtt_S19169C8_nt[] = {
  {&(_ZTV11S19169C8_nt[4]),  4,7},
  {&(_tg__ZTV11S19169C5_nt__11S19169C8_nt[3]),  3,3},
  {&(_ZTV11S19169C8_nt[7]),  7,7},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
VTBL_ENTRY *P__ZTI11S19169C8_nt = _ZTI11S19169C8_nt; 
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
Class_Descriptor cd_S19169C8_nt = {  "S19169C8_nt", // class name
  bases_S19169C8_nt, 4,
  &(vtc_S19169C8_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C8_nt[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI11S19169C8_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S19169C8_nt),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C8_nt),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  S19169C4_nt  : S19169C5_nt , S19169C3_nt , S19169C7_nt , S19169C8_nt {
  ::S19169C5_nt s19169c4f0;
  virtual  ~S19169C4_nt(); // _ZN11S19169C4_ntD2Ev
  S19169C4_nt(); // tgen
};
//SIG(-1 S19169C4_nt) C1{ BC2{ VBC3{ m Fp[6]} FL} BC4{ m Fl[10]} BC5{ VBC3} BC6{ BC3 BC2 VBC5} vd FC2}


 S19169C4_nt ::~S19169C4_nt(){ note_dtor("S19169C4_nt", this);}
S19169C4_nt ::S19169C4_nt(){ note_ctor("S19169C4_nt", this);} // tgen

//skip512 S19169C4_nt

#else // __cplusplus

extern void _ZN11S19169C4_ntC1Ev();
extern void _ZN11S19169C4_ntD2Ev();
Name_Map name_map_S19169C4_nt[] = {
  NSPAIR(_ZN11S19169C4_ntC1Ev),
  NSPAIR(_ZN11S19169C4_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
static Base_Class bases_S19169C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_nt,    ABISELECT(232,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
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19169C5_nt,    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_S19169C3_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_S19169C7_nt,    ABISELECT(96,52), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(104,56), //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(280,152), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19169C8_nt,    ABISELECT(104,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //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 _ZTI11S19169C4_nt[];
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY vtc_S19169C4_nt[] = {
  ABISELECT(280,152),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C4_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__11S19169C4_nt[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt__A1__11S19169C4_nt[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt__11S19169C4_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTT_ENTRY vtt_S19169C4_nt[] = {
  {&(_ZTV11S19169C4_nt[4]),  4,16},
  {&(_tg__ZTV11S19169C5_nt__11S19169C4_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt__A1__11S19169C4_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt__11S19169C4_nt[3]),  3,3},
  {&(_ZTV11S19169C4_nt[9]),  9,16},
  {&(_ZTV11S19169C4_nt[13]),  13,16},
  {&(_ZTV11S19169C4_nt[16]),  16,16},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
VTBL_ENTRY *P__ZTI11S19169C4_nt = _ZTI11S19169C4_nt; 
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
Class_Descriptor cd_S19169C4_nt = {  "S19169C4_nt", // class name
  bases_S19169C4_nt, 8,
  &(vtc_S19169C4_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C4_nt[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI11S19169C4_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S19169C4_nt),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C4_nt),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  S19169C9_nt  : S19169C3_nt , S19169C6_nt , S19169C7_nt , virtual S19169C4_nt {
  virtual  ~S19169C9_nt(); // _ZN11S19169C9_ntD2Ev
  S19169C9_nt(); // tgen
};
//SIG(-1 S19169C9_nt) C1{ BC2{ m Fl[10]} BC3{ m Fp[6]} BC4{ VBC3} VBC5{ BC6{ VBC3 FL} BC2 BC4 BC7{ BC3 BC6 VBC4} vd FC6} vd}


 S19169C9_nt ::~S19169C9_nt(){ note_dtor("S19169C9_nt", this);}
S19169C9_nt ::S19169C9_nt(){ note_ctor("S19169C9_nt", this);} // tgen

//skip512 S19169C9_nt

#else // __cplusplus

extern void _ZN11S19169C9_ntC1Ev();
extern void _ZN11S19169C9_ntD2Ev();
Name_Map name_map_S19169C9_nt[] = {
  NSPAIR(_ZN11S19169C9_ntC1Ev),
  NSPAIR(_ZN11S19169C9_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C4_nt;
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
static Base_Class bases_S19169C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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_S19169C6_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_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
    3, //immediately_derived
  0, 1},
  {&cd_S19169C7_nt,    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_S19169C5_nt,    ABISELECT(184,92), //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
    11, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(200,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
    11, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(280,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(304,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_S19169C5_nt,    ABISELECT(288,148), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(416,220), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19169C8_nt,    ABISELECT(288,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19169C4_nt,    ABISELECT(184,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19169C9_nt[];
extern void _ZN11S19169C9_ntD1Ev();
extern void _ZN11S19169C9_ntD0Ev();
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev)();
extern void ABISELECT(_ZThn184_N11S19169C9_ntD1Ev,_ZThn92_N11S19169C9_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev)();
extern void ABISELECT(_ZThn184_N11S19169C9_ntD0Ev,_ZThn92_N11S19169C9_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19169C9_nt[] = {
  ABISELECT(416,220),
  ABISELECT(184,92),
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C9_ntD0Ev,
  ABISELECT(-184,-92),
  ABISELECT(232,128),
  ABISELECT(-48,-24),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev),
  ABISELECT(-144,-76),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  ABISELECT(-280,-152),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C9_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C9_nt[] = {
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(232,128),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__11S19169C9_nt[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(-280,-152),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__11S19169C9_nt[] = {
  ABISELECT(-280,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A2__11S19169C9_nt[] = {
  ABISELECT(-280,-152),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTT_ENTRY vtt_S19169C9_nt[] = {
  {&(_ZTV11S19169C9_nt[5]),  5,24},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C9_nt[3]),  3,3},
  {&(_ZTV11S19169C9_nt[12]),  12,24},
  {&(_ZTV11S19169C9_nt[17]),  17,24},
  {&(_ZTV11S19169C9_nt[21]),  21,24},
  {&(_ZTV11S19169C9_nt[24]),  24,24},
  {&(_tg__ZTV11S19169C4_nt__11S19169C9_nt[4]),  4,6},
  {&(_tg__ZTV11S19169C5_nt11S19169C4_nt__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt__11S19169C9_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__11S19169C9_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A2__11S19169C9_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C9_nt[];
VTBL_ENTRY *P__ZTI11S19169C9_nt = _ZTI11S19169C9_nt; 
extern  VTBL_ENTRY _ZTV11S19169C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C9_nt[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N11S19169C9_ntD0Ev,_ZThn92_N11S19169C9_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N11S19169C9_ntD1Ev,_ZThn92_N11S19169C9_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19169C9_nt = {  "S19169C9_nt", // class name
  bases_S19169C9_nt, 12,
  &(vtc_S19169C9_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C9_nt[0]), // expected_vtt_contents
  ABISELECT(424,224), // object size
  NSPAIRA(_ZTI11S19169C9_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S19169C9_nt),24, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C9_nt),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C11_nt  {
  void  mf19169c11(); // _ZN12S19169C11_nt10mf19169c11Ev
  virtual  ~S19169C11_nt(); // _ZN12S19169C11_ntD1Ev
  S19169C11_nt(); // tgen
};
//SIG(-1 S19169C11_nt) C1{ vd m}


void  S19169C11_nt ::mf19169c11(){}
 S19169C11_nt ::~S19169C11_nt(){ note_dtor("S19169C11_nt", this);}
S19169C11_nt ::S19169C11_nt(){ note_ctor("S19169C11_nt", this);} // tgen

//skip512 S19169C11_nt

#else // __cplusplus

extern void _ZN12S19169C11_ntC1Ev();
extern void _ZN12S19169C11_ntD1Ev();
Name_Map name_map_S19169C11_nt[] = {
  NSPAIR(_ZN12S19169C11_ntC1Ev),
  NSPAIR(_ZN12S19169C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern void _ZN12S19169C11_ntD1Ev();
extern void _ZN12S19169C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19169C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
VTBL_ENTRY *P__ZTI12S19169C11_nt = _ZTI12S19169C11_nt; 
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
Class_Descriptor cd_S19169C11_nt = {  "S19169C11_nt", // class name
  0,0,//no base classes
  &(vtc_S19169C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19169C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19169C11_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  S19169C2_nt  : S19169C3_nt , virtual S19169C4_nt , S19169C9_nt , virtual S3222C8_nt , S19169C11_nt {
  __tsi64 s19169c2f0;
  void *s19169c2f1;
  virtual  ~S19169C2_nt(); // _ZN11S19169C2_ntD2Ev
  S19169C2_nt(); // tgen
};
//SIG(-1 S19169C2_nt) C1{ BC2{ m Fl[10]} VBC3{ BC4{ VBC5{ m Fp[6]} FL} BC2 BC6{ VBC5} BC7{ BC5 BC4 VBC6} vd FC4} BC8{ BC2 BC5 BC6 VBC3 vd} VBC9{ m Fi} BC10{ vd m} vd FL Fp}


 S19169C2_nt ::~S19169C2_nt(){ note_dtor("S19169C2_nt", this);}
S19169C2_nt ::S19169C2_nt(){ note_ctor("S19169C2_nt", this);} // tgen

//skip512 S19169C2_nt

#else // __cplusplus

extern void _ZN11S19169C2_ntC1Ev();
extern void _ZN11S19169C2_ntD2Ev();
Name_Map name_map_S19169C2_nt[] = {
  NSPAIR(_ZN11S19169C2_ntC1Ev),
  NSPAIR(_ZN11S19169C2_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C4_nt;
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C9_nt;
extern VTBL_ENTRY _ZTI11S19169C9_nt[];
extern  VTBL_ENTRY _ZTV11S19169C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C9_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
static Base_Class bases_S19169C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    ABISELECT(472,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19169C5_nt,    ABISELECT(240,124), //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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C7_nt,    ABISELECT(336,176), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(360,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
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(344,180), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(520,276), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19169C8_nt,    ABISELECT(344,180), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C4_nt,    ABISELECT(240,124), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C3_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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C6_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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C9_nt,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3222C8_nt,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19169C11_nt,    ABISELECT(216,108), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S19169C2_nt[];
extern void _ZN11S19169C2_ntD1Ev();
extern void _ZN11S19169C2_ntD0Ev();
extern void ABISELECT(_ZThn216_N11S19169C2_ntD1Ev,_ZThn108_N11S19169C2_ntD1Ev)();
extern void ABISELECT(_ZThn216_N11S19169C2_ntD0Ev,_ZThn108_N11S19169C2_ntD0Ev)();
extern void ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev)();
extern void ABISELECT(_ZThn240_N11S19169C2_ntD1Ev,_ZThn124_N11S19169C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev)();
extern void ABISELECT(_ZThn240_N11S19169C2_ntD0Ev,_ZThn124_N11S19169C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19169C2_nt[] = {
  ABISELECT(528,280),
  ABISELECT(520,276),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C2_ntD0Ev,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N11S19169C2_ntD1Ev,_ZThn108_N11S19169C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N11S19169C2_ntD0Ev,_ZThn108_N11S19169C2_ntD0Ev),
  ABISELECT(-240,-124),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev),
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  ABISELECT(-48,-24),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19169C2_nt[];
extern void _ZN11S19169C9_ntD1Ev();
extern void _ZN11S19169C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C9_nt__11S19169C2_nt[] = {
  ABISELECT(520,276),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C9_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C9_nt__A2__11S19169C2_nt[] = {
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev)();
extern void ABISELECT(_ZThn240_N11S19169C9_ntD1Ev,_ZThn124_N11S19169C9_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev)();
extern void ABISELECT(_ZThn240_N11S19169C9_ntD0Ev,_ZThn124_N11S19169C9_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__11S19169C9_nt__11S19169C2_nt[] = {
  ABISELECT(-240,-124),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt__11S19169C2_nt[] = {
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt__11S19169C2_nt[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A2__11S19169C9_nt__11S19169C2_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(280,152),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__11S19169C2_nt[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__11S19169C2_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C2_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTT_ENTRY vtt_S19169C2_nt[] = {
  {&(_ZTV11S19169C2_nt[6]),  6,29},
  {&(_tg__ZTV11S19169C9_nt__11S19169C2_nt[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C9_nt__A2__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__11S19169C9_nt__11S19169C2_nt[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt__11S19169C2_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A2__11S19169C9_nt__11S19169C2_nt[3]),  3,3},
  {&(_ZTV11S19169C2_nt[17]),  17,29},
  {&(_ZTV11S19169C2_nt[22]),  22,29},
  {&(_ZTV11S19169C2_nt[26]),  26,29},
  {&(_ZTV11S19169C2_nt[29]),  29,29},
  {&(_tg__ZTV11S19169C4_nt__11S19169C2_nt[4]),  4,6},
  {&(_tg__ZTV11S19169C5_nt11S19169C4_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C2_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt__11S19169C2_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__11S19169C2_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C2_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19169C2_nt[];
VTBL_ENTRY *P__ZTI11S19169C2_nt = _ZTI11S19169C2_nt; 
extern  VTBL_ENTRY _ZTV11S19169C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C2_nt[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C9_ntD0Ev,_ZThn124_N11S19169C9_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C9_ntD1Ev,_ZThn124_N11S19169C9_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C2_ntD0Ev,_ZThn124_N11S19169C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C2_ntD1Ev,_ZThn124_N11S19169C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19169C2_nt = {  "S19169C2_nt", // class name
  bases_S19169C2_nt, 16,
  &(vtc_S19169C2_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C2_nt[0]), // expected_vtt_contents
  ABISELECT(536,284), // object size
  NSPAIRA(_ZTI11S19169C2_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S19169C2_nt),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19169C2_nt),21, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C14_nt  : S3222C8_nt , S19169C6_nt , S19169C7_nt , S19169C5_nt , virtual S19169C3_nt {
  int s19169c14f0;
  ~S19169C14_nt(); // tgen
  S19169C14_nt(); // tgen
};
//SIG(-1 S19169C14_nt) C1{ BC2{ m Fi} BC3{ m Fp[6]} BC4{ VBC3} BC5{ VBC3 FL} VBC6{ m Fl[10]} Fi}


S19169C14_nt ::~S19169C14_nt(){ note_dtor("S19169C14_nt", this);} // tgen
S19169C14_nt ::S19169C14_nt(){ note_ctor("S19169C14_nt", this);} // tgen

//skip512 S19169C14_nt

#else // __cplusplus

extern void _ZN12S19169C14_ntC1Ev();
extern void _ZN12S19169C14_ntD1Ev();
Name_Map name_map_S19169C14_nt[] = {
  NSPAIR(_ZN12S19169C14_ntC1Ev),
  NSPAIR(_ZN12S19169C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
static Base_Class bases_S19169C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C8_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_S19169C6_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},
  {&cd_S19169C6_nt,    ABISELECT(88,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, 1},
  {&cd_S19169C7_nt,    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},
  {&cd_S19169C5_nt,    ABISELECT(64,32), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C3_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
static  VTBL_ENTRY vtc_S19169C14_nt[] = {
  ABISELECT(136,72),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
  ABISELECT(24,16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19169C14_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__12S19169C14_nt[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C14_nt[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTT_ENTRY vtt_S19169C14_nt[] = {
  {&(_ZTV12S19169C14_nt[4]),  4,7},
  {&(_tg__ZTV11S19169C7_nt__12S19169C14_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt__12S19169C14_nt[3]),  3,3},
  {&(_ZTV12S19169C14_nt[7]),  7,7},
};
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
VTBL_ENTRY *P__ZTI12S19169C14_nt = _ZTI12S19169C14_nt; 
extern  VTBL_ENTRY _ZTV12S19169C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C14_nt[];
Class_Descriptor cd_S19169C14_nt = {  "S19169C14_nt", // class name
  bases_S19169C14_nt, 6,
  &(vtc_S19169C14_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C14_nt[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI12S19169C14_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV12S19169C14_nt),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19169C14_nt),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  S19169C13_nt  : virtual S19169C3_nt , virtual S19169C14_nt , virtual S3222C8_nt {
  ~S19169C13_nt(); // tgen
  S19169C13_nt(); // tgen
};
//SIG(-1 S19169C13_nt) C1{ VBC2{ m Fl[10]} VBC3{ BC4{ m Fi} BC5{ m Fp[6]} BC6{ VBC5} BC7{ VBC5 FL} VBC2 Fi} VBC4}


S19169C13_nt ::~S19169C13_nt(){ note_dtor("S19169C13_nt", this);} // tgen
S19169C13_nt ::S19169C13_nt(){ note_ctor("S19169C13_nt", this);} // tgen

//skip512 S19169C13_nt

#else // __cplusplus

extern void _ZN12S19169C13_ntC1Ev();
extern void _ZN12S19169C13_ntD1Ev();
Name_Map name_map_S19169C13_nt[] = {
  NSPAIR(_ZN12S19169C13_ntC1Ev),
  NSPAIR(_ZN12S19169C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C14_nt;
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
extern  VTBL_ENTRY _ZTV12S19169C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C14_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19169C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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, 1},
  {&cd_S3222C8_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
    6, //immediately_derived
  0, 0},
  {&cd_S19169C6_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
    6, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(176,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
    4, //immediately_derived
  0, 1},
  {&cd_S19169C7_nt,    ABISELECT(88,44), //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
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(152,76), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19169C14_nt,    ABISELECT(88,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
static  VTBL_ENTRY vtc_S19169C13_nt[] = {
  ABISELECT(224,116),
  ABISELECT(176,92),
  ABISELECT(88,44),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
  ABISELECT(24,16),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19169C13_nt[];
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt12S19169C14_nt__12S19169C13_nt[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C13_nt[] = {
  ABISELECT(24,16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTT_ENTRY vtt_S19169C13_nt[] = {
  {&(_ZTV12S19169C13_nt[6]),  6,13},
  {&(_ZTV12S19169C13_nt[10]),  10,13},
  {&(_ZTV12S19169C13_nt[13]),  13,13},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt12S19169C14_nt__12S19169C13_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C13_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
VTBL_ENTRY *P__ZTI12S19169C13_nt = _ZTI12S19169C13_nt; 
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
Class_Descriptor cd_S19169C13_nt = {  "S19169C13_nt", // class name
  bases_S19169C13_nt, 8,
  &(vtc_S19169C13_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C13_nt[0]), // expected_vtt_contents
  ABISELECT(232,120), // object size
  NSPAIRA(_ZTI12S19169C13_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV12S19169C13_nt),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19169C13_nt),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  S19169C16_nt  {
  ::S19169C5_nt s19169c16f0;
  void  mf19169c16(); // _ZN12S19169C16_nt10mf19169c16Ev
};
//SIG(-1 S19169C16_nt) C1{ m FC2{ VBC3{ m Fp[6]} FL}}


void  S19169C16_nt ::mf19169c16(){}

//skip512 S19169C16_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19169C16_nt[];
VTBL_ENTRY *P__ZTI12S19169C16_nt = _ZTI12S19169C16_nt; 
Class_Descriptor cd_S19169C16_nt = {  "S19169C16_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI12S19169C16_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C15_nt  : S19169C8_nt , virtual S19169C13_nt , virtual S19169C4_nt , S19169C16_nt , S19169C6_nt {
  virtual  ~S19169C15_nt(); // _ZN12S19169C15_ntD2Ev
  S19169C15_nt(); // tgen
};
//SIG(-1 S19169C15_nt) C1{ BC2{ BC3{ m Fp[6]} BC4{ VBC3 FL} VBC5{ VBC3}} VBC6{ VBC7{ m Fl[10]} VBC8{ BC9{ m Fi} BC3 BC5 BC4 VBC7 Fi} VBC9} VBC10{ BC4 BC7 BC5 BC2 vd FC4} BC11{ m FC4} BC3 vd}


 S19169C15_nt ::~S19169C15_nt(){ note_dtor("S19169C15_nt", this);}
S19169C15_nt ::S19169C15_nt(){ note_ctor("S19169C15_nt", this);} // tgen

//skip512 S19169C15_nt

#else // __cplusplus

extern void _ZN12S19169C15_ntC1Ev();
extern void _ZN12S19169C15_ntD2Ev();
Name_Map name_map_S19169C15_nt[] = {
  NSPAIR(_ZN12S19169C15_ntC1Ev),
  NSPAIR(_ZN12S19169C15_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C14_nt;
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
extern  VTBL_ENTRY _ZTV12S19169C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C14_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C13_nt;
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C4_nt;
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19169C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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
    4, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19169C5_nt,    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
    11, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(224,120), //bcp->offset
    11, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19169C8_nt,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C3_nt,    ABISELECT(240,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
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(328,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
    10, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(336,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
    10, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(320,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    10, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(384,200), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19169C14_nt,    ABISELECT(320,168), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(404,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
    12, //immediately_derived
  0, 1},
  {&cd_S19169C13_nt,    ABISELECT(232,124), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C5_nt,    ABISELECT(408,220), //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
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(424,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
    19, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(504,272), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(528,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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(512,276), //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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19169C8_nt,    ABISELECT(512,276), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19169C4_nt,    ABISELECT(408,220), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C16_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    ABISELECT(128,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
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S19169C15_nt[];
extern void _ZN12S19169C15_ntD1Ev();
extern void _ZN12S19169C15_ntD0Ev();
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev)();
extern void ABISELECT(_ZThn408_N12S19169C15_ntD1Ev,_ZThn220_N12S19169C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev)();
extern void ABISELECT(_ZThn408_N12S19169C15_ntD0Ev,_ZThn220_N12S19169C15_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19169C15_nt[] = {
  ABISELECT(408,220),
  ABISELECT(404,216),
  ABISELECT(320,168),
  ABISELECT(240,128),
  ABISELECT(232,124),
  ABISELECT(224,120),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C15_ntD0Ev,
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  ABISELECT(172,92),
  ABISELECT(-56,-28),
  ABISELECT(88,44),
  ABISELECT(8,4),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  ABISELECT(-80,-40),
  ABISELECT(-144,-72),
  ABISELECT(-320,-168),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  ABISELECT(-208,-104),
  ABISELECT(-384,-200),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  ABISELECT(-408,-220),
  ABISELECT(-184,-100),
  ABISELECT(-232,-124),
  ABISELECT(-408,-220),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev),
  ABISELECT(-328,-176),
  ABISELECT(-504,-272),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  ABISELECT(-288,-156),
  ABISELECT(-336,-180),
  ABISELECT(-512,-276),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19169C15_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__12S19169C15_nt[] = {
  ABISELECT(224,120),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt__12S19169C15_nt[] = {
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt__12S19169C15_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__12S19169C15_nt[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__12S19169C15_nt[] = {
  ABISELECT(172,92),
  ABISELECT(-56,-28),
  ABISELECT(88,44),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt__12S19169C15_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-144,-72),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__12S19169C15_nt[] = {
  ABISELECT(-208,-104),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C15_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt12S19169C14_nt__A1__12S19169C15_nt[] = {
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt[] = {
  ABISELECT(-208,-104),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C15_nt[] = {
  ABISELECT(-208,-104),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__12S19169C15_nt[] = {
  ABISELECT(-184,-100),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C4_nt__A2__12S19169C15_nt[] = {
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt[] = {
  ABISELECT(-328,-176),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt[] = {
  ABISELECT(-288,-156),
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A3__12S19169C15_nt[] = {
  ABISELECT(-336,-180),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt__12S19169C15_nt[] = {
  ABISELECT(-328,-176),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt__12S19169C15_nt[] = {
  ABISELECT(-288,-156),
  ABISELECT(-336,-180),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__12S19169C15_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(184,100),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTT_ENTRY vtt_S19169C15_nt[] = {
  {&(_ZTV12S19169C15_nt[9]),  9,41},
  {&(_tg__ZTV11S19169C8_nt__12S19169C15_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt__12S19169C15_nt[3]),  3,3},
  {&(_ZTV12S19169C15_nt[14]),  14,41},
  {&(_ZTV12S19169C15_nt[20]),  20,41},
  {&(_ZTV12S19169C15_nt[24]),  24,41},
  {&(_ZTV12S19169C15_nt[27]),  27,41},
  {&(_ZTV12S19169C15_nt[32]),  32,41},
  {&(_ZTV12S19169C15_nt[37]),  37,41},
  {&(_ZTV12S19169C15_nt[41]),  41,41},
  {&(_tg__ZTV11S19169C7_nt__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV12S19169C13_nt__12S19169C15_nt[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt__12S19169C15_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV12S19169C14_nt__12S19169C15_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt12S19169C14_nt__A1__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__12S19169C15_nt[4]),  4,6},
  {&(_tg__ZTV11S19169C5_nt11S19169C4_nt__A2__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A3__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt__12S19169C15_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt__12S19169C15_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__12S19169C15_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19169C15_nt[];
VTBL_ENTRY *P__ZTI12S19169C15_nt = _ZTI12S19169C15_nt; 
extern  VTBL_ENTRY _ZTV12S19169C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C15_nt[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N12S19169C15_ntD0Ev,_ZThn220_N12S19169C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N12S19169C15_ntD1Ev,_ZThn220_N12S19169C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19169C15_nt = {  "S19169C15_nt", // class name
  bases_S19169C15_nt, 22,
  &(vtc_S19169C15_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C15_nt[0]), // expected_vtt_contents
  ABISELECT(640,348), // object size
  NSPAIRA(_ZTI12S19169C15_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV12S19169C15_nt),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19169C15_nt),28, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C12_nt  : S19169C13_nt , virtual S19169C7_nt , S19169C6_nt , virtual S19169C15_nt {
  ~S19169C12_nt(); // tgen
  S19169C12_nt(); // tgen
};
//SIG(-1 S19169C12_nt) C1{ BC2{ VBC3{ m Fl[10]} VBC4{ BC5{ m Fi} BC6{ m Fp[6]} BC7{ VBC6} BC8{ VBC6 FL} VBC3 Fi} VBC5} VBC7 BC6 VBC9{ BC10{ BC6 BC8 VBC7} VBC2 VBC11{ BC8 BC3 BC7 BC10 vd FC8} BC12{ m FC8} BC6 vd}}


S19169C12_nt ::~S19169C12_nt(){ note_dtor("S19169C12_nt", this);} // tgen
S19169C12_nt ::S19169C12_nt(){ note_ctor("S19169C12_nt", this);} // tgen

//skip512 S19169C12_nt

#else // __cplusplus

extern void _ZN12S19169C12_ntC1Ev();
extern void _ZN12S19169C12_ntD1Ev();
Name_Map name_map_S19169C12_nt[] = {
  NSPAIR(_ZN12S19169C12_ntC1Ev),
  NSPAIR(_ZN12S19169C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C14_nt;
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
extern  VTBL_ENTRY _ZTV12S19169C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C14_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C13_nt;
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C13_nt;
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C4_nt;
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C15_nt;
extern VTBL_ENTRY _ZTI12S19169C15_nt[];
extern  VTBL_ENTRY _ZTV12S19169C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C15_nt[];
static Base_Class bases_S19169C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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
    6, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(144,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
    6, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(152,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_S19169C6_nt,    ABISELECT(224,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
    4, //immediately_derived
  0, 1},
  {&cd_S19169C7_nt,    ABISELECT(136,68), //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
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(200,100), //bcp->offset
    16, //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19169C14_nt,    ABISELECT(136,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(272,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
    8, //immediately_derived
  0, 1},
  {&cd_S19169C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S19169C7_nt,    ABISELECT(280,144), //bcp->offset
    19, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C6_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_S19169C6_nt,    ABISELECT(304,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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(288,148), //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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19169C8_nt,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19169C13_nt,    ABISELECT(464,244), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19169C5_nt,    ABISELECT(472,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(488,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
    21, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(568,300), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(592,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
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(576,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19169C8_nt,    ABISELECT(576,304), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19169C4_nt,    ABISELECT(472,248), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19169C16_nt,    ABISELECT(352,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
    24, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(416,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
    24, //immediately_derived
  0, 0},
  {&cd_S19169C15_nt,    ABISELECT(288,148), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19169C12_nt[];
extern void _ZN12S19169C12_ntD1Ev();
extern void _ZN12S19169C12_ntD0Ev();
extern void ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev)();
extern void ABISELECT(_ZThn288_N12S19169C12_ntD1Ev,_ZThn148_N12S19169C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev)();
extern void ABISELECT(_ZThn288_N12S19169C12_ntD0Ev,_ZThn148_N12S19169C12_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N12S19169C12_ntD1Ev,_ZTv0_n20_N12S19169C12_ntD1Ev)();
extern void ABISELECT(_ZThn472_N12S19169C12_ntD1Ev,_ZThn248_N12S19169C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N12S19169C12_ntD0Ev,_ZTv0_n20_N12S19169C12_ntD0Ev)();
extern void ABISELECT(_ZThn472_N12S19169C12_ntD0Ev,_ZThn248_N12S19169C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19169C12_nt[] = {
  ABISELECT(472,248),
  ABISELECT(464,244),
  ABISELECT(288,148),
  ABISELECT(280,144),
  ABISELECT(272,140),
  ABISELECT(224,116),
  ABISELECT(136,68),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C12_ntD0Ev,
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  ABISELECT(24,16),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  ABISELECT(-56,-28),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  ABISELECT(-288,-148),
  ABISELECT(184,100),
  ABISELECT(-16,-8),
  ABISELECT(-152,-80),
  ABISELECT(-232,-120),
  ABISELECT(176,96),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev),
  ABISELECT(-192,-104),
  ABISELECT(-240,-128),
  ABISELECT(-328,-176),
  ABISELECT(-408,-216),
  ABISELECT(-464,-244),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  ABISELECT(-472,-248),
  ABISELECT(-192,-104),
  ABISELECT(-248,-132),
  ABISELECT(-472,-248),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C12_ntD1Ev,_ZTv0_n20_N12S19169C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C12_ntD0Ev,_ZTv0_n20_N12S19169C12_ntD0Ev),
  ABISELECT(-344,-184),
  ABISELECT(-568,-300),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  ABISELECT(-296,-160),
  ABISELECT(-352,-188),
  ABISELECT(-576,-304),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19169C12_nt[];
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__A__12S19169C12_nt[] = {
  ABISELECT(272,140),
  ABISELECT(224,116),
  ABISELECT(136,68),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt__A__12S19169C12_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A__12S19169C12_nt[] = {
  ABISELECT(24,16),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C12_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt12S19169C14_nt__12S19169C12_nt[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C12_nt[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C12_nt[] = {
  ABISELECT(24,16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern void _ZN12S19169C15_ntD1Ev();
extern void _ZN12S19169C15_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(184,100),
  ABISELECT(-16,-8),
  ABISELECT(-152,-80),
  ABISELECT(-232,-120),
  ABISELECT(176,96),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C15_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt12S19169C15_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-56,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-56,-28),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-192,-104),
  ABISELECT(-240,-128),
  ABISELECT(-328,-176),
  ABISELECT(-408,-216),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(24,16),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev)();
extern void ABISELECT(_ZThn184_N12S19169C15_ntD1Ev,_ZThn100_N12S19169C15_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev)();
extern void ABISELECT(_ZThn184_N12S19169C15_ntD0Ev,_ZThn100_N12S19169C15_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-184,-100),
  ABISELECT(-192,-104),
  ABISELECT(-248,-132),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-344,-184),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt__12S19169C12_nt[] = {
  ABISELECT(-296,-160),
  ABISELECT(-352,-188),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-192,-104),
  ABISELECT(-240,-128),
  ABISELECT(-328,-176),
  ABISELECT(-408,-216),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(88,48),
  ABISELECT(328,176),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A1__12S19169C12_nt[] = {
  ABISELECT(24,16),
  ABISELECT(264,144),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__12S19169C12_nt[] = {
  ABISELECT(-192,-104),
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C4_nt__A2__12S19169C12_nt[] = {
  ABISELECT(-248,-132),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C12_nt[] = {
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-296,-160),
  ABISELECT(-352,-188),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A3__12S19169C12_nt[] = {
  ABISELECT(-352,-188),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt[] = {
  ABISELECT(-56,-28),
  ABISELECT(296,160),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt__12S19169C12_nt[] = {
  ABISELECT(-344,-184),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt__12S19169C12_nt[] = {
  ABISELECT(-296,-160),
  ABISELECT(-352,-188),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__12S19169C12_nt[] = {
  ABISELECT(-56,-28),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTT_ENTRY vtt_S19169C12_nt[] = {
  {&(_ZTV12S19169C12_nt[10]),  10,54},
  {&(_tg__ZTV12S19169C13_nt__A__12S19169C12_nt[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt__A__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A__12S19169C12_nt[3]),  3,3},
  {&(_ZTV12S19169C12_nt[16]),  16,54},
  {&(_ZTV12S19169C12_nt[19]),  19,54},
  {&(_ZTV12S19169C12_nt[22]),  22,54},
  {&(_ZTV12S19169C12_nt[32]),  32,54},
  {&(_ZTV12S19169C12_nt[40]),  40,54},
  {&(_ZTV12S19169C12_nt[45]),  45,54},
  {&(_ZTV12S19169C12_nt[50]),  50,54},
  {&(_ZTV12S19169C12_nt[54]),  54,54},
  {&(_tg__ZTV12S19169C14_nt__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt12S19169C14_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt__12S19169C14_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A1__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV12S19169C15_nt__12S19169C12_nt[9]),  9,11},
  {&(_tg__ZTV11S19169C8_nt12S19169C15_nt__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt12S19169C15_nt__A1__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt12S19169C15_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__12S19169C15_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV12S19169C13_nt__12S19169C15_nt__12S19169C12_nt[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C15_nt__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__12S19169C15_nt__12S19169C12_nt[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV12S19169C13_nt__A1__12S19169C12_nt[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt__A1__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A1__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__12S19169C12_nt[4]),  4,6},
  {&(_tg__ZTV11S19169C5_nt11S19169C4_nt__A2__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A3__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt__12S19169C12_nt[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt__12S19169C12_nt[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__12S19169C12_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19169C12_nt[];
VTBL_ENTRY *P__ZTI12S19169C12_nt = _ZTI12S19169C12_nt; 
extern  VTBL_ENTRY _ZTV12S19169C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C12_nt[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N12S19169C15_ntD0Ev,_ZThn100_N12S19169C15_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N12S19169C15_ntD1Ev,_ZThn100_N12S19169C15_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C12_ntD0Ev,_ZTv0_n20_N12S19169C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S19169C12_ntD0Ev,_ZThn248_N12S19169C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N12S19169C12_ntD1Ev,_ZTv0_n20_N12S19169C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N12S19169C12_ntD1Ev,_ZThn248_N12S19169C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N12S19169C12_ntD0Ev,_ZThn148_N12S19169C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N12S19169C12_ntD1Ev,_ZThn148_N12S19169C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19169C12_nt = {  "S19169C12_nt", // class name
  bases_S19169C12_nt, 25,
  &(vtc_S19169C12_nt[0]), // expected_vtbl_contents
  &(vtt_S19169C12_nt[0]), // expected_vtt_contents
  ABISELECT(704,376), // object size
  NSPAIRA(_ZTI12S19169C12_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S19169C12_nt),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19169C12_nt),40, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C17_nt  : S19169C16_nt , S19169C6_nt , virtual S19169C5_nt , virtual S19169C3_nt {
  int s19169c17f0;
  ~S19169C17_nt(); // tgen
  S19169C17_nt(); // tgen
};
//SIG(1 S19169C17_nt) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC4 VBC3 VBC5{ m Fl[10]} Fi}


S19169C17_nt ::~S19169C17_nt(){ note_dtor("S19169C17_nt", this);} // tgen
S19169C17_nt ::S19169C17_nt(){ note_ctor("S19169C17_nt", this);} // tgen

//skip512 S19169C17_nt

#else // __cplusplus

extern void _ZN12S19169C17_ntC1Ev();
extern void _ZN12S19169C17_ntD1Ev();
Name_Map name_map_S19169C17_nt[] = {
  NSPAIR(_ZN12S19169C17_ntC1Ev),
  NSPAIR(_ZN12S19169C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
static Base_Class bases_S19169C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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_S19169C6_nt,    ABISELECT(72,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19169C5_nt,    ABISELECT(128,68), //bcp->offset
    5, //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},
  {&cd_S19169C3_nt,    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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19169C17_nt[];
static  VTBL_ENTRY vtc_S19169C17_nt[] = {
  ABISELECT(192,104),
  ABISELECT(144,80),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C17_nt[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI12S19169C17_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19169C17_nt[];
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C17_nt[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTT_ENTRY vtt_S19169C17_nt[] = {
  {&(_ZTV12S19169C17_nt[5]),  5,8},
  {&(_ZTV12S19169C17_nt[8]),  8,8},
  {&(_tg__ZTV11S19169C5_nt__12S19169C17_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19169C17_nt[];
VTBL_ENTRY *P__ZTI12S19169C17_nt = _ZTI12S19169C17_nt; 
extern  VTBL_ENTRY _ZTV12S19169C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C17_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19169C1  : virtual S19169C2_nt , virtual S19169C12_nt {
  ::S19169C17_nt s19169c1f0[3];
  ~S19169C1(); // tgen
  S19169C1(); // tgen
};
//SIG(1 S19169C1) C1{ VBC2{ BC3{ m Fl[10]} VBC4{ BC5{ VBC6{ m Fp[6]} FL} BC3 BC7{ VBC6} BC8{ BC6 BC5 VBC7} vd FC5} BC9{ BC3 BC6 BC7 VBC4 vd} VBC10{ m Fi} BC11{ vd m} vd FL Fp} VBC12{ BC13{ VBC3 VBC14{ BC10 BC6 BC7 BC5 VBC3 Fi} VBC10} VBC7 BC6 VBC15{ BC8 VBC13 VBC4 BC16{ m FC5} BC6 vd}} FC17{ BC16 BC6 VBC5 VBC3 Fi}[3]}


S19169C1 ::~S19169C1(){ note_dtor("S19169C1", this);} // tgen
S19169C1 ::S19169C1(){ note_ctor("S19169C1", this);} // tgen

static void Test_S19169C1()
{
  extern Class_Descriptor cd_S19169C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(221,234)];
    init_test(&cd_S19169C1, buf);
    S19169C1 *dp, &lv = *(dp=new (buf) S19169C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1760,932), "sizeof(S19169C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19169C1)");
    /*is_ambiguous_... S19169C2_nt::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S19169C2_nt*), ABISELECT(960,504), "S19169C1");
    /*is_ambiguous_... S19169C4_nt::S19169C5_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C5_nt*)(S19169C4_nt*), ABISELECT(1296,688), "S19169C1");
    /*is_ambiguous_... S19169C4_nt::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C7_nt*)(S19169C4_nt*), ABISELECT(1296,688), "S19169C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19169C5_nt*)(S19169C8_nt*)(S19169C4_nt*), ABISELECT(1296,688), "S19169C1");
    /*is_ambiguous_... S19169C1::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C7_nt*), ABISELECT(1296,688), "S19169C1");
    /*is_ambiguous_... S19169C9_nt::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C7_nt*)(S19169C9_nt*)(S19169C2_nt*), ABISELECT(1296,688), "S19169C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19169C7_nt*)(S19169C14_nt*), ABISELECT(1296,688), "S19169C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19169C5_nt*)(S19169C14_nt*), ABISELECT(1296,688), "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C8_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C5_nt*)(S19169C8_nt*)(S19169C15_nt*), ABISELECT(1296,688), "S19169C1");
    /*is_ambiguous_... S19169C4_nt::S19169C5_nt */ AMB_check_base_class_offset(lv, (S19169C5_nt*)(S19169C4_nt*), ABISELECT(1064,560), "S19169C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S19169C4_nt*), ABISELECT(1080,572), "S19169C1");
    /*is_ambiguous_... S19169C4_nt::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C7_nt*)(S19169C4_nt*), ABISELECT(1160,612), "S19169C1");
    /*is_ambiguous_... S19169C8_nt::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C8_nt*)(S19169C4_nt*), ABISELECT(1184,628), "S19169C1");
    check_base_class_offset(lv, (S19169C5_nt*)(S19169C8_nt*)(S19169C4_nt*), ABISELECT(1168,616), "S19169C1");
    check_base_class_offset(lv, (S19169C7_nt*)(S19169C8_nt*)(S19169C4_nt*), 0, "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C7_nt*)(S19169C12_nt*), 0, "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C8_nt */ AMB_check_base_class_offset(lv, (S19169C7_nt*)(S19169C8_nt*)(S19169C15_nt*), 0, "S19169C1");
    check_base_class_offset(lv, (S19169C8_nt*)(S19169C4_nt*), ABISELECT(1168,616), "S19169C1");
    check_base_class_offset(lv, (S19169C4_nt*)(S19169C2_nt*), ABISELECT(1064,560), "S19169C1");
    check_base_class_offset(lv, (S19169C4_nt*)(S19169C9_nt*)(S19169C2_nt*), ABISELECT(1064,560), "S19169C1");
    check_base_class_offset(lv, (S19169C4_nt*)(S19169C15_nt*), ABISELECT(1064,560), "S19169C1");
    /*is_ambiguous_... S19169C9_nt::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S19169C9_nt*)(S19169C2_nt*), ABISELECT(832,440), "S19169C1");
    /*is_ambiguous_... S19169C9_nt::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C9_nt*)(S19169C2_nt*), ABISELECT(912,480), "S19169C1");
    /*is_ambiguous_... S19169C9_nt::S19169C7_nt */ AMB_check_base_class_offset(lv, (S19169C7_nt*)(S19169C9_nt*)(S19169C2_nt*), ABISELECT(824,436), "S19169C1");
    check_base_class_offset(lv, (S19169C9_nt*)(S19169C2_nt*), ABISELECT(824,436), "S19169C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19169C2_nt*), ABISELECT(1344,712), "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C13_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19169C13_nt*)(S19169C12_nt*), ABISELECT(1344,712), "S19169C1");
    /*is_ambiguous_... S19169C1::S19169C13_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19169C13_nt*), ABISELECT(1344,712), "S19169C1");
    check_base_class_offset(lv, (S19169C11_nt*)(S19169C2_nt*), ABISELECT(1040,544), "S19169C1");
    check_base_class_offset(lv, (S19169C2_nt*), ABISELECT(824,436), "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C13_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S19169C13_nt*)(S19169C12_nt*), ABISELECT(1408,744), "S19169C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S19169C14_nt*), ABISELECT(1408,744), "S19169C1");
    /*is_ambiguous_... S19169C1::S19169C13_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S19169C13_nt*), ABISELECT(1408,744), "S19169C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19169C14_nt*), ABISELECT(1496,788), "S19169C1");
    /*is_ambiguous_... S19169C14_nt::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C14_nt*), ABISELECT(1504,792), "S19169C1");
    check_base_class_offset(lv, (S19169C7_nt*)(S19169C14_nt*), ABISELECT(1488,784), "S19169C1");
    check_base_class_offset(lv, (S19169C5_nt*)(S19169C14_nt*), ABISELECT(1552,816), "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C13_nt */ AMB_check_base_class_offset(lv, (S19169C14_nt*)(S19169C13_nt*)(S19169C12_nt*), ABISELECT(1488,784), "S19169C1");
    /*is_ambiguous_... S19169C1::S19169C13_nt */ AMB_check_base_class_offset(lv, (S19169C14_nt*)(S19169C13_nt*), ABISELECT(1488,784), "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C13_nt */ AMB_check_base_class_offset(lv, (S19169C13_nt*)(S19169C12_nt*), ABISELECT(1352,716), "S19169C1");
    /*is_ambiguous_... S19169C12_nt::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C12_nt*), ABISELECT(1360,720), "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C8_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C8_nt*)(S19169C15_nt*), ABISELECT(1592,844), "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C8_nt */ AMB_check_base_class_offset(lv, (S19169C5_nt*)(S19169C8_nt*)(S19169C15_nt*), ABISELECT(1576,832), "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C8_nt */ AMB_check_base_class_offset(lv, (S19169C8_nt*)(S19169C15_nt*), ABISELECT(1576,832), "S19169C1");
    check_base_class_offset(lv, (S19169C13_nt*)(S19169C15_nt*), ABISELECT(1752,928), "S19169C1");
    check_base_class_offset(lv, (S19169C16_nt*)(S19169C15_nt*), ABISELECT(1640,868), "S19169C1");
    /*is_ambiguous_... S19169C15_nt::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19169C15_nt*), ABISELECT(1704,904), "S19169C1");
    check_base_class_offset(lv, (S19169C15_nt*)(S19169C12_nt*), ABISELECT(1576,832), "S19169C1");
    check_base_class_offset(lv, (S19169C12_nt*), ABISELECT(1352,716), "S19169C1");
    check_field_offset(lv, s19169c1f0, ABISELECT(8,4), "S19169C1.s19169c1f0");
    test_class_info(&lv, &cd_S19169C1);
    dp->~S19169C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19169C1(Test_S19169C1, "S19169C1", ABISELECT(1760,932));

#else // __cplusplus

extern void _ZN8S19169C1C1Ev();
extern void _ZN8S19169C1D1Ev();
Name_Map name_map_S19169C1[] = {
  NSPAIR(_ZN8S19169C1C1Ev),
  NSPAIR(_ZN8S19169C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C4_nt;
extern VTBL_ENTRY _ZTI11S19169C4_nt[];
extern  VTBL_ENTRY _ZTV11S19169C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C4_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C9_nt;
extern VTBL_ENTRY _ZTI11S19169C9_nt[];
extern  VTBL_ENTRY _ZTV11S19169C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C9_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C2_nt;
extern VTBL_ENTRY _ZTI11S19169C2_nt[];
extern  VTBL_ENTRY _ZTV11S19169C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C2_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C7_nt;
extern VTBL_ENTRY _ZTI11S19169C7_nt[];
extern  VTBL_ENTRY _ZTV11S19169C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C7_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C14_nt;
extern VTBL_ENTRY _ZTI12S19169C14_nt[];
extern  VTBL_ENTRY _ZTV12S19169C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C14_nt[];
extern Class_Descriptor cd_S19169C13_nt;
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C5_nt;
extern VTBL_ENTRY _ZTI11S19169C5_nt[];
extern  VTBL_ENTRY _ZTV11S19169C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C5_nt[];
extern Class_Descriptor cd_S19169C8_nt;
extern VTBL_ENTRY _ZTI11S19169C8_nt[];
extern  VTBL_ENTRY _ZTV11S19169C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19169C8_nt[];
extern Class_Descriptor cd_S19169C13_nt;
extern VTBL_ENTRY _ZTI12S19169C13_nt[];
extern  VTBL_ENTRY _ZTV12S19169C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C13_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C15_nt;
extern VTBL_ENTRY _ZTI12S19169C15_nt[];
extern  VTBL_ENTRY _ZTV12S19169C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C15_nt[];
extern Class_Descriptor cd_S19169C12_nt;
extern VTBL_ENTRY _ZTI12S19169C12_nt[];
extern  VTBL_ENTRY _ZTV12S19169C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19169C12_nt[];
static Base_Class bases_S19169C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_nt,    ABISELECT(960,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C6_nt,    ABISELECT(1296,688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19169C5_nt,    ABISELECT(1064,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(1080,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C7_nt,    ABISELECT(1160,612), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(1184,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C5_nt,    ABISELECT(1168,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19169C8_nt,    ABISELECT(1168,616), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C4_nt,    ABISELECT(1064,560), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19169C3_nt,    ABISELECT(832,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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(912,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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C7_nt,    ABISELECT(824,436), //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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19169C9_nt,    ABISELECT(824,436), //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
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(1344,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C11_nt,    ABISELECT(1040,544), //bcp->offset
    23, //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
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19169C2_nt,    ABISELECT(824,436), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C3_nt,    ABISELECT(1408,744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(1496,788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C6_nt,    ABISELECT(1504,792), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C7_nt,    ABISELECT(1488,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    22, //immediately_derived
  0, 0},
  {&cd_S19169C5_nt,    ABISELECT(1552,816), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19169C14_nt,    ABISELECT(1488,784), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19169C13_nt,    ABISELECT(1352,716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(1360,720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C6_nt,    ABISELECT(1592,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C5_nt,    ABISELECT(1576,832), //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
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19169C8_nt,    ABISELECT(1576,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19169C13_nt,    ABISELECT(1752,928), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19169C16_nt,    ABISELECT(1640,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C6_nt,    ABISELECT(1704,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C15_nt,    ABISELECT(1576,832), //bcp->offset
    61, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19169C12_nt,    ABISELECT(1352,716), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19169C1[];
extern void _ZN8S19169C1D1Ev();
extern void _ZN8S19169C1D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S19169C1D1Ev,_ZTv0_n28_N8S19169C1D1Ev)();
extern void ABISELECT(_ZThn824_N8S19169C1D1Ev,_ZThn436_N8S19169C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19169C1D0Ev,_ZTv0_n28_N8S19169C1D0Ev)();
extern void ABISELECT(_ZThn824_N8S19169C1D0Ev,_ZThn436_N8S19169C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn216_n56_N8S19169C1D1Ev,_ZTvn108_n28_N8S19169C1D1Ev)();
extern void ABISELECT(_ZTvn216_n56_N8S19169C1D0Ev,_ZTvn108_n28_N8S19169C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19169C1D1Ev,_ZTv0_n20_N8S19169C1D1Ev)();
extern void ABISELECT(_ZThn1064_N8S19169C1D1Ev,_ZThn560_N8S19169C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19169C1D0Ev,_ZTv0_n20_N8S19169C1D0Ev)();
extern void ABISELECT(_ZThn1064_N8S19169C1D0Ev,_ZThn560_N8S19169C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19169C1D1Ev,_ZTv0_n44_N8S19169C1D1Ev)();
extern void ABISELECT(_ZThn1352_N8S19169C1D1Ev,_ZThn716_N8S19169C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19169C1D0Ev,_ZTv0_n44_N8S19169C1D0Ev)();
extern void ABISELECT(_ZThn1352_N8S19169C1D0Ev,_ZThn716_N8S19169C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19169C1D1Ev,_ZTv0_n40_N8S19169C1D1Ev)();
extern void ABISELECT(_ZThn1576_N8S19169C1D1Ev,_ZThn832_N8S19169C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19169C1D0Ev,_ZTv0_n40_N8S19169C1D0Ev)();
extern void ABISELECT(_ZThn1576_N8S19169C1D0Ev,_ZThn832_N8S19169C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19169C1[] = {
  ABISELECT(1752,928),
  ABISELECT(1576,832),
  ABISELECT(1488,784),
  ABISELECT(1408,744),
  ABISELECT(1352,716),
  ABISELECT(1344,712),
  0,
  ABISELECT(1064,560),
  ABISELECT(824,436),
  ABISELECT(1296,688),
  0,
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&_ZN8S19169C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19169C1D0Ev,
  ABISELECT(-824,-436),
  ABISELECT(520,276),
  ABISELECT(-824,-436),
  ABISELECT(240,124),
  ABISELECT(472,252),
  ABISELECT(-824,-436),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19169C1D1Ev,_ZTv0_n28_N8S19169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19169C1D0Ev,_ZTv0_n28_N8S19169C1D0Ev),
  ABISELECT(-1040,-544),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn216_n56_N8S19169C1D1Ev,_ZTvn108_n28_N8S19169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn216_n56_N8S19169C1D0Ev,_ZTvn108_n28_N8S19169C1D0Ev),
  ABISELECT(-1064,-560),
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  ABISELECT(-1064,-560),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19169C1D1Ev,_ZTv0_n20_N8S19169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19169C1D0Ev,_ZTv0_n20_N8S19169C1D0Ev),
  ABISELECT(136,76),
  ABISELECT(-1160,-612),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(-1168,-616),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  ABISELECT(-1352,-716),
  ABISELECT(-288,-156),
  ABISELECT(400,212),
  ABISELECT(224,116),
  ABISELECT(-1352,-716),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(136,68),
  ABISELECT(56,28),
  ABISELECT(-1352,-716),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19169C1D1Ev,_ZTv0_n44_N8S19169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19169C1D0Ev,_ZTv0_n44_N8S19169C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  ABISELECT(-1488,-784),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  ABISELECT(-256,-128),
  ABISELECT(-1552,-816),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  ABISELECT(-1576,-832),
  ABISELECT(-512,-272),
  ABISELECT(-232,-120),
  ABISELECT(-88,-48),
  ABISELECT(-168,-88),
  ABISELECT(176,96),
  ABISELECT(-1576,-832),
  ABISELECT(-280,-144),
  ABISELECT(-1576,-832),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19169C1D1Ev,_ZTv0_n40_N8S19169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19169C1D0Ev,_ZTv0_n40_N8S19169C1D0Ev),
  ABISELECT(-408,-216),
  ABISELECT(-456,-240),
  ABISELECT(-264,-144),
  ABISELECT(-344,-184),
  ABISELECT(-1752,-928),
  (VTBL_ENTRY)&(_ZTI8S19169C1[0]),
};
extern VTBL_ENTRY _ZTV8S19169C1[];
extern void _ZN11S19169C2_ntD1Ev();
extern void _ZN11S19169C2_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C2_nt__8S19169C1[] = {
  ABISELECT(520,276),
  ABISELECT(-824,-436),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C2_ntD0Ev,
};
extern void _ZN11S19169C9_ntD1Ev();
extern void _ZN11S19169C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C9_nt11S19169C2_nt__8S19169C1[] = {
  ABISELECT(-824,-436),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C9_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C9_nt11S19169C2_nt__A2__8S19169C1[] = {
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev)();
extern void ABISELECT(_ZThn240_N11S19169C9_ntD1Ev,_ZThn124_N11S19169C9_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev)();
extern void ABISELECT(_ZThn240_N11S19169C9_ntD0Ev,_ZThn124_N11S19169C9_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__11S19169C9_nt11S19169C2_nt__8S19169C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt11S19169C2_nt__8S19169C1[] = {
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt11S19169C2_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A2__11S19169C9_nt11S19169C2_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(824,436),
  (VTBL_ENTRY)&(_ZTI11S19169C9_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev)();
extern void ABISELECT(_ZThn240_N11S19169C2_ntD1Ev,_ZThn124_N11S19169C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev)();
extern void ABISELECT(_ZThn240_N11S19169C2_ntD0Ev,_ZThn124_N11S19169C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__11S19169C2_nt__8S19169C1[] = {
  ABISELECT(-240,-124),
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__11S19169C2_nt__8S19169C1[] = {
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C2_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C2_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(824,436),
  (VTBL_ENTRY)&(_ZTI11S19169C2_nt[0]),
};
extern void _ZN11S19169C4_ntD1Ev();
extern void _ZN11S19169C4_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__8S19169C1[] = {
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19169C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19169C4_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C4_nt__8S19169C1[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__8S19169C1[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__8S19169C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(1168,616),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A__11S19169C4_nt__8S19169C1[] = {
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt__11S19169C4_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(1064,560),
  (VTBL_ENTRY)&(_ZTI11S19169C4_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__8S19169C1[] = {
  ABISELECT(1296,688),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
extern void _ZN12S19169C12_ntD1Ev();
extern void _ZN12S19169C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-288,-156),
  ABISELECT(400,212),
  ABISELECT(224,116),
  ABISELECT(-1352,-716),
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(136,68),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C12_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(136,68),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__A1__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(1352,716),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
extern void ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev)();
extern void ABISELECT(_ZThn224_N12S19169C12_ntD1Ev,_ZThn116_N12S19169C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev)();
extern void ABISELECT(_ZThn224_N12S19169C12_ntD0Ev,_ZThn116_N12S19169C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19169C15_nt__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-224,-116),
  ABISELECT(-512,-272),
  ABISELECT(-232,-120),
  ABISELECT(-88,-48),
  ABISELECT(-168,-88),
  ABISELECT(176,96),
  ABISELECT(-1576,-832),
  ABISELECT(-280,-144),
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__A1__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-408,-216),
  ABISELECT(-456,-240),
  ABISELECT(-264,-144),
  ABISELECT(-344,-184),
  ABISELECT(-400,-212),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N12S19169C12_ntD1Ev,_ZTv0_n20_N12S19169C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n40_N12S19169C12_ntD0Ev,_ZTv0_n20_N12S19169C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(288,156),
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C12_ntD1Ev,_ZTv0_n20_N12S19169C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C12_ntD0Ev,_ZTv0_n20_N12S19169C12_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(136,76),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(184,100),
  (VTBL_ENTRY)&(_ZTI12S19169C12_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__8S19169C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt12S19169C14_nt__A3__8S19169C1[] = {
  ABISELECT(-192,-96),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__A2__8S19169C1[] = {
  ABISELECT(-256,-128),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt__12S19169C14_nt__8S19169C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI12S19169C14_nt[0]),
};
extern void _ZN12S19169C15_ntD1Ev();
extern void _ZN12S19169C15_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19169C15_nt__8S19169C1[] = {
  ABISELECT(-512,-272),
  ABISELECT(-232,-120),
  ABISELECT(-88,-48),
  ABISELECT(-168,-88),
  ABISELECT(176,96),
  ABISELECT(-1576,-832),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&_ZN12S19169C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19169C15_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt12S19169C15_nt__A1__8S19169C1[] = {
  ABISELECT(-1576,-832),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt11S19169C8_nt12S19169C15_nt__A3__8S19169C1[] = {
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI11S19169C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__11S19169C8_nt12S19169C15_nt__A1__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(1576,832),
  (VTBL_ENTRY)&(_ZTI11S19169C8_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(1296,688),
  ABISELECT(1576,832),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(-408,-216),
  ABISELECT(-456,-240),
  ABISELECT(-264,-144),
  ABISELECT(-344,-184),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev)();
extern void ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19169C4_nt__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(512,272),
  ABISELECT(-1064,-560),
  ABISELECT(232,128),
  ABISELECT(512,272),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD1Ev,_ZTv0_n20_N12S19169C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N12S19169C15_ntD0Ev,_ZTv0_n20_N12S19169C15_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(136,76),
  ABISELECT(416,220),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt__8S19169C1[] = {
  ABISELECT(-1168,-616),
  ABISELECT(128,72),
  ABISELECT(408,216),
  (VTBL_ENTRY)&(_ZTI12S19169C15_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C13_nt__A1__8S19169C1[] = {
  ABISELECT(-408,-216),
  ABISELECT(-456,-240),
  ABISELECT(-264,-144),
  ABISELECT(-344,-184),
  0,
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV12S19169C14_nt__12S19169C13_nt__A1__8S19169C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-96),
  ABISELECT(264,144),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A1__8S19169C1[] = {
  ABISELECT(-256,-128),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI12S19169C13_nt[0]),
};
static  VTT_ENTRY vtt_S19169C1[] = {
  {&(_ZTV8S19169C1[12]),  12,79},
  {&(_ZTV8S19169C1[21]),  21,79},
  {&(_ZTV8S19169C1[32]),  32,79},
  {&(_ZTV8S19169C1[37]),  37,79},
  {&(_ZTV8S19169C1[41]),  41,79},
  {&(_ZTV8S19169C1[12]),  12,79},
  {&(_ZTV8S19169C1[25]),  25,79},
  {&(_ZTV8S19169C1[52]),  52,79},
  {&(_ZTV8S19169C1[58]),  58,79},
  {&(_ZTV8S19169C1[61]),  61,79},
  {&(_ZTV8S19169C1[71]),  71,79},
  {&(_ZTV8S19169C1[79]),  79,79},
  {&(_tg__ZTV11S19169C2_nt__8S19169C1[6]),  6,8},
  {&(_tg__ZTV11S19169C9_nt11S19169C2_nt__8S19169C1[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C9_nt11S19169C2_nt__A2__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__11S19169C9_nt11S19169C2_nt__8S19169C1[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A1__11S19169C9_nt11S19169C2_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C9_nt11S19169C2_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A2__11S19169C9_nt11S19169C2_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__11S19169C2_nt__8S19169C1[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__11S19169C2_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__11S19169C2_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C2_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__8S19169C1[4]),  4,6},
  {&(_tg__ZTV11S19169C5_nt11S19169C4_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt11S19169C4_nt__A1__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt11S19169C4_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A__11S19169C4_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt__11S19169C4_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt__A1__11S19169C4_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A1__8S19169C1[3]),  3,3},
  {&(_tg__ZTV12S19169C12_nt__8S19169C1[10]),  10,12},
  {&(_tg__ZTV12S19169C13_nt12S19169C12_nt__8S19169C1[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt12S19169C12_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt12S19169C12_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV12S19169C14_nt__12S19169C12_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C12_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__A1__12S19169C12_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV12S19169C15_nt__12S19169C12_nt__8S19169C1[10]),  10,12},
  {&(_tg__ZTV12S19169C13_nt__A1__12S19169C12_nt__8S19169C1[6]),  6,6},
  {&(_tg__ZTV11S19169C4_nt__12S19169C12_nt__8S19169C1[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C12_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C12_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV12S19169C14_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C7_nt12S19169C14_nt__A3__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__A2__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C5_nt__12S19169C14_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV12S19169C15_nt__8S19169C1[9]),  9,11},
  {&(_tg__ZTV11S19169C8_nt12S19169C15_nt__A1__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt11S19169C8_nt12S19169C15_nt__A3__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__11S19169C8_nt12S19169C15_nt__A1__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C7_nt__12S19169C15_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV12S19169C13_nt__12S19169C15_nt__8S19169C1[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C15_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__A1__12S19169C15_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C4_nt__12S19169C15_nt__8S19169C1[5]),  5,7},
  {&(_tg__ZTV11S19169C7_nt11S19169C4_nt__A2__12S19169C15_nt__8S19169C1[3]),  3,3},
  {&(_tg__ZTV11S19169C8_nt11S19169C4_nt__A1__12S19169C15_nt__8S19169C1[4]),  4,4},
  {&(_tg__ZTV12S19169C13_nt__A1__8S19169C1[6]),  6,6},
  {&(_tg__ZTV12S19169C14_nt__12S19169C13_nt__A1__8S19169C1[4]),  4,4},
  {&(_tg__ZTV11S19169C5_nt12S19169C14_nt__12S19169C13_nt__A1__8S19169C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19169C1[];
extern  VTBL_ENTRY _ZTV8S19169C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19169C1[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S19169C12_ntD0Ev,_ZTv0_n40_N12S19169C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N12S19169C12_ntD0Ev,_ZThn116_N12S19169C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N12S19169C12_ntD1Ev,_ZTv0_n40_N12S19169C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N12S19169C12_ntD1Ev,_ZThn116_N12S19169C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C2_ntD0Ev,_ZTv0_n20_N11S19169C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C2_ntD0Ev,_ZThn124_N11S19169C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C2_ntD1Ev,_ZTv0_n20_N11S19169C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C2_ntD1Ev,_ZThn124_N11S19169C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD0Ev,_ZTv0_n20_N11S19169C9_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C9_ntD0Ev,_ZThn124_N11S19169C9_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N11S19169C9_ntD1Ev,_ZTv0_n20_N11S19169C9_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N11S19169C9_ntD1Ev,_ZThn124_N11S19169C9_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19169C1D0Ev,_ZTv0_n40_N8S19169C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N8S19169C1D0Ev,_ZThn832_N8S19169C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19169C1D1Ev,_ZTv0_n40_N8S19169C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N8S19169C1D1Ev,_ZThn832_N8S19169C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19169C1D0Ev,_ZTv0_n44_N8S19169C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S19169C1D0Ev,_ZThn716_N8S19169C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19169C1D1Ev,_ZTv0_n44_N8S19169C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S19169C1D1Ev,_ZThn716_N8S19169C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19169C1D0Ev,_ZTv0_n20_N8S19169C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19169C1D0Ev,_ZThn560_N8S19169C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19169C1D1Ev,_ZTv0_n20_N8S19169C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19169C1D1Ev,_ZThn560_N8S19169C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19169C1D0Ev,_ZTv0_n28_N8S19169C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19169C1D0Ev,_ZThn436_N8S19169C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19169C1D1Ev,_ZTv0_n28_N8S19169C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19169C1D1Ev,_ZThn436_N8S19169C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19169C1 = {  "S19169C1", // class name
  bases_S19169C1, 33,
  &(vtc_S19169C1[0]), // expected_vtbl_contents
  &(vtt_S19169C1[0]), // expected_vtt_contents
  ABISELECT(1760,932), // object size
  NSPAIRA(_ZTI8S19169C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19169C1),79, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19169C1),63, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3133C3  {
  char s3133c3f0;
  void *s3133c3f1;
  virtual void  v3(); // _ZN7S3133C32v3Ev
  virtual void  v4(); // _ZN7S3133C32v4Ev
  ~S3133C3(); // tgen
  S3133C3(); // tgen
};
//SIG(-1 S3133C3) C1{ v1 v2 Fc Fp}


void  S3133C3 ::v3(){vfunc_called(this, "_ZN7S3133C32v3Ev");}
void  S3133C3 ::v4(){vfunc_called(this, "_ZN7S3133C32v4Ev");}
S3133C3 ::~S3133C3(){ note_dtor("S3133C3", this);} // tgen
S3133C3 ::S3133C3(){ note_ctor("S3133C3", this);} // tgen

static void Test_S3133C3()
{
  extern Class_Descriptor cd_S3133C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3133C3, buf);
    S3133C3 *dp, &lv = *(dp=new (buf) S3133C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3133C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C3)");
    check_field_offset(lv, s3133c3f0, ABISELECT(8,4), "S3133C3.s3133c3f0");
    check_field_offset(lv, s3133c3f1, ABISELECT(16,8), "S3133C3.s3133c3f1");
    test_class_info(&lv, &cd_S3133C3);
    dp->~S3133C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C3(Test_S3133C3, "S3133C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3133C3C1Ev();
extern void _ZN7S3133C3D1Ev();
Name_Map name_map_S3133C3[] = {
  NSPAIR(_ZN7S3133C3C1Ev),
  NSPAIR(_ZN7S3133C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3133C3[];
extern void _ZN7S3133C32v3Ev();
extern void _ZN7S3133C32v4Ev();
static  VTBL_ENTRY vtc_S3133C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C3[0]),
  (VTBL_ENTRY)&_ZN7S3133C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3133C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S3133C3[];
extern  VTBL_ENTRY _ZTV7S3133C3[];
Class_Descriptor cd_S3133C3 = {  "S3133C3", // class name
  0,0,//no base classes
  &(vtc_S3133C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3133C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3133C3),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  S3133C5_nt  {
  virtual void  v14(); // _ZN10S3133C5_nt3v14Ev
  virtual void  v15(); // _ZN10S3133C5_nt3v15Ev
  virtual void  v16(); // _ZN10S3133C5_nt3v16Ev
  virtual void  v17(); // _ZN10S3133C5_nt3v17Ev
  virtual void  v18(); // _ZN10S3133C5_nt3v18Ev
  ~S3133C5_nt(); // tgen
  S3133C5_nt(); // tgen
};
//SIG(-1 S3133C5_nt) C1{ v1 v2 v3 v4 v5}


void  S3133C5_nt ::v14(){vfunc_called(this, "_ZN10S3133C5_nt3v14Ev");}
void  S3133C5_nt ::v15(){vfunc_called(this, "_ZN10S3133C5_nt3v15Ev");}
void  S3133C5_nt ::v16(){vfunc_called(this, "_ZN10S3133C5_nt3v16Ev");}
void  S3133C5_nt ::v17(){vfunc_called(this, "_ZN10S3133C5_nt3v17Ev");}
void  S3133C5_nt ::v18(){vfunc_called(this, "_ZN10S3133C5_nt3v18Ev");}
S3133C5_nt ::~S3133C5_nt(){ note_dtor("S3133C5_nt", this);} // tgen
S3133C5_nt ::S3133C5_nt(){ note_ctor("S3133C5_nt", this);} // tgen

//skip512 S3133C5_nt

#else // __cplusplus

extern void _ZN10S3133C5_ntC1Ev();
extern void _ZN10S3133C5_ntD1Ev();
Name_Map name_map_S3133C5_nt[] = {
  NSPAIR(_ZN10S3133C5_ntC1Ev),
  NSPAIR(_ZN10S3133C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
static  VTBL_ENTRY vtc_S3133C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3133C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
VTBL_ENTRY *P__ZTI10S3133C5_nt = _ZTI10S3133C5_nt; 
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
Class_Descriptor cd_S3133C5_nt = {  "S3133C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3133C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3133C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3133C5_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  S3133C4  {
  int s3133c4f0;
  ::S3133C5_nt s3133c4f1;
  virtual void  v5(); // _ZN7S3133C42v5Ev
  ~S3133C4(); // tgen
  S3133C4(); // tgen
};
//SIG(-1 S3133C4) C1{ v1 Fi FC2{ v2 v3 v4 v5 v6}}


void  S3133C4 ::v5(){vfunc_called(this, "_ZN7S3133C42v5Ev");}
S3133C4 ::~S3133C4(){ note_dtor("S3133C4", this);} // tgen
S3133C4 ::S3133C4(){ note_ctor("S3133C4", this);} // tgen

static void Test_S3133C4()
{
  extern Class_Descriptor cd_S3133C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3133C4, buf);
    S3133C4 *dp, &lv = *(dp=new (buf) S3133C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3133C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C4)");
    check_field_offset(lv, s3133c4f0, ABISELECT(8,4), "S3133C4.s3133c4f0");
    check_field_offset(lv, s3133c4f1, ABISELECT(16,8), "S3133C4.s3133c4f1");
    test_class_info(&lv, &cd_S3133C4);
    dp->~S3133C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C4(Test_S3133C4, "S3133C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3133C4C1Ev();
extern void _ZN7S3133C4D1Ev();
Name_Map name_map_S3133C4[] = {
  NSPAIR(_ZN7S3133C4C1Ev),
  NSPAIR(_ZN7S3133C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3133C4[];
extern void _ZN7S3133C42v5Ev();
static  VTBL_ENTRY vtc_S3133C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C4[0]),
  (VTBL_ENTRY)&_ZN7S3133C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S3133C4[];
extern  VTBL_ENTRY _ZTV7S3133C4[];
Class_Descriptor cd_S3133C4 = {  "S3133C4", // class name
  0,0,//no base classes
  &(vtc_S3133C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3133C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3133C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3133C2  : S3133C3 , virtual S3133C4 {
  int s3133c2f0[2];
  virtual void  v6(); // _ZN7S3133C22v6Ev
  virtual void  v7(); // _ZN7S3133C22v7Ev
  virtual void  v8(); // _ZN7S3133C22v8Ev
  virtual void  v9(); // _ZN7S3133C22v9Ev
  virtual void  v10(); // _ZN7S3133C23v10Ev
  virtual void  v11(); // _ZN7S3133C23v11Ev
  virtual void  v12(); // _ZN7S3133C23v12Ev
  virtual void  v13(); // _ZN7S3133C23v13Ev
  ~S3133C2(); // tgen
  S3133C2(); // tgen
};
//SIG(-1 S3133C2) C1{ BC2{ v9 v10 Fc Fp} VBC3{ v11 Fi FC4{ v12 v13 v14 v15 v16}} v1 v2 v3 v4 v5 v6 v7 v8 Fi[2]}


void  S3133C2 ::v6(){vfunc_called(this, "_ZN7S3133C22v6Ev");}
void  S3133C2 ::v7(){vfunc_called(this, "_ZN7S3133C22v7Ev");}
void  S3133C2 ::v8(){vfunc_called(this, "_ZN7S3133C22v8Ev");}
void  S3133C2 ::v9(){vfunc_called(this, "_ZN7S3133C22v9Ev");}
void  S3133C2 ::v10(){vfunc_called(this, "_ZN7S3133C23v10Ev");}
void  S3133C2 ::v11(){vfunc_called(this, "_ZN7S3133C23v11Ev");}
void  S3133C2 ::v12(){vfunc_called(this, "_ZN7S3133C23v12Ev");}
void  S3133C2 ::v13(){vfunc_called(this, "_ZN7S3133C23v13Ev");}
S3133C2 ::~S3133C2(){ note_dtor("S3133C2", this);} // tgen
S3133C2 ::S3133C2(){ note_ctor("S3133C2", this);} // tgen

static void Test_S3133C2()
{
  extern Class_Descriptor cd_S3133C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3133C2, buf);
    S3133C2 *dp, &lv = *(dp=new (buf) S3133C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3133C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C2)");
    check_base_class_offset(lv, (S3133C3*), 0, "S3133C2");
    check_base_class_offset(lv, (S3133C4*), ABISELECT(32,20), "S3133C2");
    check_field_offset(lv, s3133c2f0, ABISELECT(24,12), "S3133C2.s3133c2f0");
    test_class_info(&lv, &cd_S3133C2);
    dp->~S3133C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C2(Test_S3133C2, "S3133C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3133C2C1Ev();
extern void _ZN7S3133C2D1Ev();
Name_Map name_map_S3133C2[] = {
  NSPAIR(_ZN7S3133C2C1Ev),
  NSPAIR(_ZN7S3133C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C3;
extern VTBL_ENTRY _ZTI7S3133C3[];
extern  VTBL_ENTRY _ZTV7S3133C3[];
extern Class_Descriptor cd_S3133C4;
extern VTBL_ENTRY _ZTI7S3133C4[];
extern  VTBL_ENTRY _ZTV7S3133C4[];
static Base_Class bases_S3133C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3133C4,    ABISELECT(32,20), //bcp->offset
    13, //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 _ZTI7S3133C2[];
extern void _ZN7S3133C32v3Ev();
extern void _ZN7S3133C32v4Ev();
extern void _ZN7S3133C22v6Ev();
extern void _ZN7S3133C22v7Ev();
extern void _ZN7S3133C22v8Ev();
extern void _ZN7S3133C22v9Ev();
extern void _ZN7S3133C23v10Ev();
extern void _ZN7S3133C23v11Ev();
extern void _ZN7S3133C23v12Ev();
extern void _ZN7S3133C23v13Ev();
extern void _ZN7S3133C42v5Ev();
static  VTBL_ENTRY vtc_S3133C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C2[0]),
  (VTBL_ENTRY)&_ZN7S3133C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3133C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v13Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3133C2[0]),
  (VTBL_ENTRY)&_ZN7S3133C42v5Ev,
};
extern VTBL_ENTRY _ZTV7S3133C2[];
static  VTT_ENTRY vtt_S3133C2[] = {
  {&(_ZTV7S3133C2[3]),  3,17},
  {&(_ZTV7S3133C2[16]),  16,17},
};
extern VTBL_ENTRY _ZTI7S3133C2[];
extern  VTBL_ENTRY _ZTV7S3133C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C2[];
Class_Descriptor cd_S3133C2 = {  "S3133C2", // class name
  bases_S3133C2, 2,
  &(vtc_S3133C2[0]), // expected_vtbl_contents
  &(vtt_S3133C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3133C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3133C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3133C2),2, //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  S3133C9  : S3133C5_nt {
  ::S3133C5_nt s3133c9f0;
  virtual void  v19(); // _ZN7S3133C93v19Ev
  virtual void  v20(); // _ZN7S3133C93v20Ev
  virtual void  v21(); // _ZN7S3133C93v21Ev
  virtual void  v22(); // _ZN7S3133C93v22Ev
  ~S3133C9(); // tgen
  S3133C9(); // tgen
};
//SIG(-1 S3133C9) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S3133C9 ::v19(){vfunc_called(this, "_ZN7S3133C93v19Ev");}
void  S3133C9 ::v20(){vfunc_called(this, "_ZN7S3133C93v20Ev");}
void  S3133C9 ::v21(){vfunc_called(this, "_ZN7S3133C93v21Ev");}
void  S3133C9 ::v22(){vfunc_called(this, "_ZN7S3133C93v22Ev");}
S3133C9 ::~S3133C9(){ note_dtor("S3133C9", this);} // tgen
S3133C9 ::S3133C9(){ note_ctor("S3133C9", this);} // tgen

static void Test_S3133C9()
{
  extern Class_Descriptor cd_S3133C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3133C9, buf);
    S3133C9 *dp, &lv = *(dp=new (buf) S3133C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3133C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C9)");
    check_base_class_offset(lv, (S3133C5_nt*), 0, "S3133C9");
    check_field_offset(lv, s3133c9f0, ABISELECT(8,4), "S3133C9.s3133c9f0");
    test_class_info(&lv, &cd_S3133C9);
    dp->~S3133C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C9(Test_S3133C9, "S3133C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3133C9C1Ev();
extern void _ZN7S3133C9D1Ev();
Name_Map name_map_S3133C9[] = {
  NSPAIR(_ZN7S3133C9C1Ev),
  NSPAIR(_ZN7S3133C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C5_nt;
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
static Base_Class bases_S3133C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C5_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 _ZTI7S3133C9[];
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
static  VTBL_ENTRY vtc_S3133C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C9[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
};
extern VTBL_ENTRY _ZTI7S3133C9[];
extern  VTBL_ENTRY _ZTV7S3133C9[];
Class_Descriptor cd_S3133C9 = {  "S3133C9", // class name
  bases_S3133C9, 1,
  &(vtc_S3133C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3133C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3133C9),11, //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  S3133C8  : S3133C9 {
  virtual void  v23(); // _ZN7S3133C83v23Ev
  virtual void  v24(); // _ZN7S3133C83v24Ev
  virtual void  v25(); // _ZN7S3133C83v25Ev
  virtual void  v26(); // _ZN7S3133C83v26Ev
  virtual void  v27(); // _ZN7S3133C83v27Ev
  virtual void  v28(); // _ZN7S3133C83v28Ev
  ~S3133C8(); // tgen
  S3133C8(); // tgen
};
//SIG(-1 S3133C8) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S3133C8 ::v23(){vfunc_called(this, "_ZN7S3133C83v23Ev");}
void  S3133C8 ::v24(){vfunc_called(this, "_ZN7S3133C83v24Ev");}
void  S3133C8 ::v25(){vfunc_called(this, "_ZN7S3133C83v25Ev");}
void  S3133C8 ::v26(){vfunc_called(this, "_ZN7S3133C83v26Ev");}
void  S3133C8 ::v27(){vfunc_called(this, "_ZN7S3133C83v27Ev");}
void  S3133C8 ::v28(){vfunc_called(this, "_ZN7S3133C83v28Ev");}
S3133C8 ::~S3133C8(){ note_dtor("S3133C8", this);} // tgen
S3133C8 ::S3133C8(){ note_ctor("S3133C8", this);} // tgen

static void Test_S3133C8()
{
  extern Class_Descriptor cd_S3133C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3133C8, buf);
    S3133C8 *dp, &lv = *(dp=new (buf) S3133C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3133C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C8)");
    check_base_class_offset(lv, (S3133C5_nt*)(S3133C9*), 0, "S3133C8");
    check_base_class_offset(lv, (S3133C9*), 0, "S3133C8");
    test_class_info(&lv, &cd_S3133C8);
    dp->~S3133C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C8(Test_S3133C8, "S3133C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3133C8C1Ev();
extern void _ZN7S3133C8D1Ev();
Name_Map name_map_S3133C8[] = {
  NSPAIR(_ZN7S3133C8C1Ev),
  NSPAIR(_ZN7S3133C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C5_nt;
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
extern Class_Descriptor cd_S3133C9;
extern VTBL_ENTRY _ZTI7S3133C9[];
extern  VTBL_ENTRY _ZTV7S3133C9[];
static Base_Class bases_S3133C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C5_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_S3133C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S3133C8[];
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY vtc_S3133C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C8[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
extern VTBL_ENTRY _ZTI7S3133C8[];
extern  VTBL_ENTRY _ZTV7S3133C8[];
Class_Descriptor cd_S3133C8 = {  "S3133C8", // class name
  bases_S3133C8, 2,
  &(vtc_S3133C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3133C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3133C8),17, //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  S3133C7  : virtual S3133C8 {
  virtual void  v29(); // _ZN7S3133C73v29Ev
  virtual void  v30(); // _ZN7S3133C73v30Ev
  virtual void  v31(); // _ZN7S3133C73v31Ev
  ~S3133C7(); // tgen
  S3133C7(); // tgen
};
//SIG(-1 S3133C7) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S3133C7 ::v29(){vfunc_called(this, "_ZN7S3133C73v29Ev");}
void  S3133C7 ::v30(){vfunc_called(this, "_ZN7S3133C73v30Ev");}
void  S3133C7 ::v31(){vfunc_called(this, "_ZN7S3133C73v31Ev");}
S3133C7 ::~S3133C7(){ note_dtor("S3133C7", this);} // tgen
S3133C7 ::S3133C7(){ note_ctor("S3133C7", this);} // tgen

static void Test_S3133C7()
{
  extern Class_Descriptor cd_S3133C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3133C7, buf);
    S3133C7 *dp, &lv = *(dp=new (buf) S3133C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3133C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C7)");
    check_base_class_offset(lv, (S3133C5_nt*)(S3133C9*)(S3133C8*), ABISELECT(8,4), "S3133C7");
    check_base_class_offset(lv, (S3133C9*)(S3133C8*), ABISELECT(8,4), "S3133C7");
    check_base_class_offset(lv, (S3133C8*), ABISELECT(8,4), "S3133C7");
    test_class_info(&lv, &cd_S3133C7);
    dp->~S3133C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C7(Test_S3133C7, "S3133C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3133C7C1Ev();
extern void _ZN7S3133C7D1Ev();
Name_Map name_map_S3133C7[] = {
  NSPAIR(_ZN7S3133C7C1Ev),
  NSPAIR(_ZN7S3133C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C5_nt;
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
extern Class_Descriptor cd_S3133C9;
extern VTBL_ENTRY _ZTI7S3133C9[];
extern  VTBL_ENTRY _ZTV7S3133C9[];
extern Class_Descriptor cd_S3133C8;
extern VTBL_ENTRY _ZTI7S3133C8[];
extern  VTBL_ENTRY _ZTV7S3133C8[];
static Base_Class bases_S3133C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C5_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_S3133C9,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3133C8,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S3133C7[];
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY vtc_S3133C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
extern VTBL_ENTRY _ZTV7S3133C7[];
static  VTT_ENTRY vtt_S3133C7[] = {
  {&(_ZTV7S3133C7[3]),  3,38},
  {&(_ZTV7S3133C7[23]),  23,38},
};
extern VTBL_ENTRY _ZTI7S3133C7[];
extern  VTBL_ENTRY _ZTV7S3133C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C7[];
Class_Descriptor cd_S3133C7 = {  "S3133C7", // class name
  bases_S3133C7, 3,
  &(vtc_S3133C7[0]), // expected_vtbl_contents
  &(vtt_S3133C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3133C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3133C7),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3133C7),2, //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  S3133C6  : S3133C7 {
  virtual  ~S3133C6(); // _ZN7S3133C6D2Ev
  virtual void  v32(); // _ZN7S3133C63v32Ev
  virtual void  v33(); // _ZN7S3133C63v33Ev
  virtual void  v34(); // _ZN7S3133C63v34Ev
  virtual void  v35(); // _ZN7S3133C63v35Ev
  virtual void  v36(); // _ZN7S3133C63v36Ev
  virtual void  v37(); // _ZN7S3133C63v37Ev
  virtual void  v38(); // _ZN7S3133C63v38Ev
  S3133C6(); // tgen
};
//SIG(-1 S3133C6) C1{ BC2{ VBC3{ BC4{ BC5{ v8 v9 v10 v11 v12} v13 v14 v15 v16 FC5} v17 v18 v19 v20 v21 v22} v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7}


 S3133C6 ::~S3133C6(){ note_dtor("S3133C6", this);}
void  S3133C6 ::v32(){vfunc_called(this, "_ZN7S3133C63v32Ev");}
void  S3133C6 ::v33(){vfunc_called(this, "_ZN7S3133C63v33Ev");}
void  S3133C6 ::v34(){vfunc_called(this, "_ZN7S3133C63v34Ev");}
void  S3133C6 ::v35(){vfunc_called(this, "_ZN7S3133C63v35Ev");}
void  S3133C6 ::v36(){vfunc_called(this, "_ZN7S3133C63v36Ev");}
void  S3133C6 ::v37(){vfunc_called(this, "_ZN7S3133C63v37Ev");}
void  S3133C6 ::v38(){vfunc_called(this, "_ZN7S3133C63v38Ev");}
S3133C6 ::S3133C6(){ note_ctor("S3133C6", this);} // tgen

static void Test_S3133C6()
{
  extern Class_Descriptor cd_S3133C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3133C6, buf);
    S3133C6 *dp, &lv = *(dp=new (buf) S3133C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3133C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C6)");
    check_base_class_offset(lv, (S3133C5_nt*)(S3133C9*)(S3133C8*), ABISELECT(8,4), "S3133C6");
    check_base_class_offset(lv, (S3133C9*)(S3133C8*), ABISELECT(8,4), "S3133C6");
    check_base_class_offset(lv, (S3133C8*)(S3133C7*), ABISELECT(8,4), "S3133C6");
    check_base_class_offset(lv, (S3133C7*), 0, "S3133C6");
    test_class_info(&lv, &cd_S3133C6);
    dp->~S3133C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C6(Test_S3133C6, "S3133C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3133C6C1Ev();
extern void _ZN7S3133C6D2Ev();
Name_Map name_map_S3133C6[] = {
  NSPAIR(_ZN7S3133C6C1Ev),
  NSPAIR(_ZN7S3133C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C5_nt;
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
extern Class_Descriptor cd_S3133C9;
extern VTBL_ENTRY _ZTI7S3133C9[];
extern  VTBL_ENTRY _ZTV7S3133C9[];
extern Class_Descriptor cd_S3133C8;
extern VTBL_ENTRY _ZTI7S3133C8[];
extern  VTBL_ENTRY _ZTV7S3133C8[];
extern Class_Descriptor cd_S3133C7;
extern VTBL_ENTRY _ZTI7S3133C7[];
extern  VTBL_ENTRY _ZTV7S3133C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C7[];
static Base_Class bases_S3133C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C5_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_S3133C9,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3133C8,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    17, //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_S3133C7,    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 _ZTI7S3133C6[];
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
extern void _ZN7S3133C6D1Ev();
extern void _ZN7S3133C6D0Ev();
extern void _ZN7S3133C63v32Ev();
extern void _ZN7S3133C63v33Ev();
extern void _ZN7S3133C63v34Ev();
extern void _ZN7S3133C63v35Ev();
extern void _ZN7S3133C63v36Ev();
extern void _ZN7S3133C63v37Ev();
extern void _ZN7S3133C63v38Ev();
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY vtc_S3133C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C6[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
  (VTBL_ENTRY)&_ZN7S3133C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3133C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v32Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v33Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v34Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v35Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v36Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v37Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v38Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3133C6[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
extern VTBL_ENTRY _ZTV7S3133C6[];
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C7__7S3133C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
};
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C8__7S3133C7__7S3133C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
static  VTT_ENTRY vtt_S3133C6[] = {
  {&(_ZTV7S3133C6[3]),  3,47},
  {&(_tg__ZTV7S3133C7__7S3133C6[3]),  3,6},
  {&(_tg__ZTV7S3133C8__7S3133C7__7S3133C6[17]),  17,32},
  {&(_ZTV7S3133C6[32]),  32,47},
};
extern VTBL_ENTRY _ZTI7S3133C6[];
extern  VTBL_ENTRY _ZTV7S3133C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C6[];
Class_Descriptor cd_S3133C6 = {  "S3133C6", // class name
  bases_S3133C6, 4,
  &(vtc_S3133C6[0]), // expected_vtbl_contents
  &(vtt_S3133C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3133C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3133C6),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3133C6),4, //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  S3133C11  {
  char s3133c11f0;
  virtual void  v41(); // _ZN8S3133C113v41Ev
  virtual void  v42(); // _ZN8S3133C113v42Ev
  virtual void  v43(); // _ZN8S3133C113v43Ev
  virtual void  v44(); // _ZN8S3133C113v44Ev
  virtual void  v45(); // _ZN8S3133C113v45Ev
  virtual void  v46(); // _ZN8S3133C113v46Ev
  ~S3133C11(); // tgen
  S3133C11(); // tgen
};
//SIG(-1 S3133C11) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S3133C11 ::v41(){vfunc_called(this, "_ZN8S3133C113v41Ev");}
void  S3133C11 ::v42(){vfunc_called(this, "_ZN8S3133C113v42Ev");}
void  S3133C11 ::v43(){vfunc_called(this, "_ZN8S3133C113v43Ev");}
void  S3133C11 ::v44(){vfunc_called(this, "_ZN8S3133C113v44Ev");}
void  S3133C11 ::v45(){vfunc_called(this, "_ZN8S3133C113v45Ev");}
void  S3133C11 ::v46(){vfunc_called(this, "_ZN8S3133C113v46Ev");}
S3133C11 ::~S3133C11(){ note_dtor("S3133C11", this);} // tgen
S3133C11 ::S3133C11(){ note_ctor("S3133C11", this);} // tgen

static void Test_S3133C11()
{
  extern Class_Descriptor cd_S3133C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3133C11, buf);
    S3133C11 *dp, &lv = *(dp=new (buf) S3133C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3133C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C11)");
    check_field_offset(lv, s3133c11f0, ABISELECT(8,4), "S3133C11.s3133c11f0");
    test_class_info(&lv, &cd_S3133C11);
    dp->~S3133C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C11(Test_S3133C11, "S3133C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S3133C11C1Ev();
extern void _ZN8S3133C11D1Ev();
Name_Map name_map_S3133C11[] = {
  NSPAIR(_ZN8S3133C11C1Ev),
  NSPAIR(_ZN8S3133C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3133C11[];
extern void _ZN8S3133C113v41Ev();
extern void _ZN8S3133C113v42Ev();
extern void _ZN8S3133C113v43Ev();
extern void _ZN8S3133C113v44Ev();
extern void _ZN8S3133C113v45Ev();
extern void _ZN8S3133C113v46Ev();
static  VTBL_ENTRY vtc_S3133C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3133C11[0]),
  (VTBL_ENTRY)&_ZN8S3133C113v41Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v42Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v43Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v44Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v45Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v46Ev,
};
extern VTBL_ENTRY _ZTI8S3133C11[];
extern  VTBL_ENTRY _ZTV8S3133C11[];
Class_Descriptor cd_S3133C11 = {  "S3133C11", // class name
  0,0,//no base classes
  &(vtc_S3133C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S3133C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3133C11),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  S3133C10  : S3133C11 {
  int s3133c10f0;
  virtual void  v39(); // _ZN8S3133C103v39Ev
  virtual void  v40(); // _ZN8S3133C103v40Ev
  ~S3133C10(); // tgen
  S3133C10(); // tgen
};
//SIG(1 S3133C10) C1{ BC2{ v3 v4 v5 v6 v7 v8 Fc} v1 v2 Fi}


void  S3133C10 ::v39(){vfunc_called(this, "_ZN8S3133C103v39Ev");}
void  S3133C10 ::v40(){vfunc_called(this, "_ZN8S3133C103v40Ev");}
S3133C10 ::~S3133C10(){ note_dtor("S3133C10", this);} // tgen
S3133C10 ::S3133C10(){ note_ctor("S3133C10", this);} // tgen

static void Test_S3133C10()
{
  extern Class_Descriptor cd_S3133C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3133C10, buf);
    S3133C10 *dp, &lv = *(dp=new (buf) S3133C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3133C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C10)");
    check_base_class_offset(lv, (S3133C11*), 0, "S3133C10");
    check_field_offset(lv, s3133c10f0, ABISELECT(12,8), "S3133C10.s3133c10f0");
    test_class_info(&lv, &cd_S3133C10);
    dp->~S3133C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C10(Test_S3133C10, "S3133C10", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3133C10C1Ev();
extern void _ZN8S3133C10D1Ev();
Name_Map name_map_S3133C10[] = {
  NSPAIR(_ZN8S3133C10C1Ev),
  NSPAIR(_ZN8S3133C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C11;
extern VTBL_ENTRY _ZTI8S3133C11[];
extern  VTBL_ENTRY _ZTV8S3133C11[];
static Base_Class bases_S3133C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S3133C10[];
extern void _ZN8S3133C113v41Ev();
extern void _ZN8S3133C113v42Ev();
extern void _ZN8S3133C113v43Ev();
extern void _ZN8S3133C113v44Ev();
extern void _ZN8S3133C113v45Ev();
extern void _ZN8S3133C113v46Ev();
extern void _ZN8S3133C103v39Ev();
extern void _ZN8S3133C103v40Ev();
static  VTBL_ENTRY vtc_S3133C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3133C10[0]),
  (VTBL_ENTRY)&_ZN8S3133C113v41Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v42Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v43Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v44Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v45Ev,
  (VTBL_ENTRY)&_ZN8S3133C113v46Ev,
  (VTBL_ENTRY)&_ZN8S3133C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3133C103v40Ev,
};
extern VTBL_ENTRY _ZTI8S3133C10[];
extern  VTBL_ENTRY _ZTV8S3133C10[];
Class_Descriptor cd_S3133C10 = {  "S3133C10", // class name
  bases_S3133C10, 1,
  &(vtc_S3133C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3133C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3133C10),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3133C1  : S3133C2 , virtual S3133C6 {
  ::S3133C10 s3133c1f0[10];
  virtual  ~S3133C1(); // _ZN7S3133C1D2Ev
  virtual void  v1(); // _ZN7S3133C12v1Ev
  virtual void  v2(); // _ZN7S3133C12v2Ev
  S3133C1(); // tgen
};
//SIG(1 S3133C1) C1{ BC2{ BC3{ v3 v4 Fc Fp} VBC4{ v5 Fi FC5{ v14 v15 v16 v17 v18}} v6 v7 v8 v9 v10 v11 v12 v13 Fi[2]} VBC6{ BC7{ VBC8{ BC9{ BC5 v19 v20 v21 v22 FC5} v23 v24 v25 v26 v27 v28} v29 v30 v31} vd v32 v33 v34 v35 v36 v37 v38} vd v1 v2 FC10{ BC11{ v41 v42 v43 v44 v45 v46 Fc} v39 v40 Fi}[10]}


 S3133C1 ::~S3133C1(){ note_dtor("S3133C1", this);}
void  S3133C1 ::v1(){vfunc_called(this, "_ZN7S3133C12v1Ev");}
void  S3133C1 ::v2(){vfunc_called(this, "_ZN7S3133C12v2Ev");}
S3133C1 ::S3133C1(){ note_ctor("S3133C1", this);} // tgen

static void Test_S3133C1()
{
  extern Class_Descriptor cd_S3133C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,42)];
    init_test(&cd_S3133C1, buf);
    S3133C1 *dp, &lv = *(dp=new (buf) S3133C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,164), "sizeof(S3133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3133C1)");
    check_base_class_offset(lv, (S3133C3*)(S3133C2*), 0, "S3133C1");
    check_base_class_offset(lv, (S3133C4*)(S3133C2*), ABISELECT(192,140), "S3133C1");
    check_base_class_offset(lv, (S3133C2*), 0, "S3133C1");
    check_base_class_offset(lv, (S3133C5_nt*)(S3133C9*)(S3133C8*), ABISELECT(224,156), "S3133C1");
    check_base_class_offset(lv, (S3133C9*)(S3133C8*), ABISELECT(224,156), "S3133C1");
    check_base_class_offset(lv, (S3133C8*)(S3133C7*)(S3133C6*), ABISELECT(224,156), "S3133C1");
    check_base_class_offset(lv, (S3133C7*)(S3133C6*), ABISELECT(216,152), "S3133C1");
    check_base_class_offset(lv, (S3133C6*), ABISELECT(216,152), "S3133C1");
    check_field_offset(lv, s3133c1f0, ABISELECT(32,20), "S3133C1.s3133c1f0");
    test_class_info(&lv, &cd_S3133C1);
    dp->~S3133C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3133C1(Test_S3133C1, "S3133C1", ABISELECT(240,164));

#else // __cplusplus

extern void _ZN7S3133C1C1Ev();
extern void _ZN7S3133C1D2Ev();
Name_Map name_map_S3133C1[] = {
  NSPAIR(_ZN7S3133C1C1Ev),
  NSPAIR(_ZN7S3133C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3133C3;
extern VTBL_ENTRY _ZTI7S3133C3[];
extern  VTBL_ENTRY _ZTV7S3133C3[];
extern Class_Descriptor cd_S3133C4;
extern VTBL_ENTRY _ZTI7S3133C4[];
extern  VTBL_ENTRY _ZTV7S3133C4[];
extern Class_Descriptor cd_S3133C2;
extern VTBL_ENTRY _ZTI7S3133C2[];
extern  VTBL_ENTRY _ZTV7S3133C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C2[];
extern Class_Descriptor cd_S3133C5_nt;
extern VTBL_ENTRY _ZTI10S3133C5_nt[];
extern  VTBL_ENTRY _ZTV10S3133C5_nt[];
extern Class_Descriptor cd_S3133C9;
extern VTBL_ENTRY _ZTI7S3133C9[];
extern  VTBL_ENTRY _ZTV7S3133C9[];
extern Class_Descriptor cd_S3133C8;
extern VTBL_ENTRY _ZTI7S3133C8[];
extern  VTBL_ENTRY _ZTV7S3133C8[];
extern Class_Descriptor cd_S3133C7;
extern VTBL_ENTRY _ZTI7S3133C7[];
extern  VTBL_ENTRY _ZTV7S3133C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C7[];
extern Class_Descriptor cd_S3133C6;
extern VTBL_ENTRY _ZTI7S3133C6[];
extern  VTBL_ENTRY _ZTV7S3133C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C6[];
static Base_Class bases_S3133C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3133C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S3133C4,    ABISELECT(192,140), //bcp->offset
    19, //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_S3133C2,    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_S3133C5_nt,    ABISELECT(224,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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3133C9,    ABISELECT(224,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3133C8,    ABISELECT(224,156), //bcp->offset
    49, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3133C7,    ABISELECT(216,152), //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3133C6,    ABISELECT(216,152), //bcp->offset
    23, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3133C1[];
extern void _ZN7S3133C32v3Ev();
extern void _ZN7S3133C32v4Ev();
extern void _ZN7S3133C22v6Ev();
extern void _ZN7S3133C22v7Ev();
extern void _ZN7S3133C22v8Ev();
extern void _ZN7S3133C22v9Ev();
extern void _ZN7S3133C23v10Ev();
extern void _ZN7S3133C23v11Ev();
extern void _ZN7S3133C23v12Ev();
extern void _ZN7S3133C23v13Ev();
extern void _ZN7S3133C1D1Ev();
extern void _ZN7S3133C1D0Ev();
extern void _ZN7S3133C12v1Ev();
extern void _ZN7S3133C12v2Ev();
extern void _ZN7S3133C42v5Ev();
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
extern void ABISELECT(_ZTv0_n56_N7S3133C1D1Ev,_ZTv0_n28_N7S3133C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S3133C1D1Ev,_ZThn152_N7S3133C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3133C1D0Ev,_ZTv0_n28_N7S3133C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S3133C1D0Ev,_ZThn152_N7S3133C1D0Ev)() __attribute__((weak));
extern void _ZN7S3133C63v32Ev();
extern void _ZN7S3133C63v33Ev();
extern void _ZN7S3133C63v34Ev();
extern void _ZN7S3133C63v35Ev();
extern void _ZN7S3133C63v36Ev();
extern void _ZN7S3133C63v37Ev();
extern void _ZN7S3133C63v38Ev();
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY vtc_S3133C1[] = {
  ABISELECT(224,156),
  ABISELECT(216,152),
  ABISELECT(192,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C1[0]),
  (VTBL_ENTRY)&_ZN7S3133C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3133C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3133C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3133C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3133C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3133C12v2Ev,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI7S3133C1[0]),
  (VTBL_ENTRY)&_ZN7S3133C42v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-152),
  0,
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(-216,-152),
  (VTBL_ENTRY)&(_ZTI7S3133C1[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3133C1D1Ev,_ZTv0_n28_N7S3133C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3133C1D0Ev,_ZTv0_n28_N7S3133C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3133C63v32Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v33Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v34Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v35Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v36Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v37Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v38Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S3133C1[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
extern VTBL_ENTRY _ZTV7S3133C1[];
extern void _ZN7S3133C32v3Ev();
extern void _ZN7S3133C32v4Ev();
extern void _ZN7S3133C22v6Ev();
extern void _ZN7S3133C22v7Ev();
extern void _ZN7S3133C22v8Ev();
extern void _ZN7S3133C22v9Ev();
extern void _ZN7S3133C23v10Ev();
extern void _ZN7S3133C23v11Ev();
extern void _ZN7S3133C23v12Ev();
extern void _ZN7S3133C23v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C2__7S3133C1[] = {
  ABISELECT(192,140),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C2[0]),
  (VTBL_ENTRY)&_ZN7S3133C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3133C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3133C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3133C23v13Ev,
};
extern void _ZN7S3133C42v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C4__7S3133C2__7S3133C1[] = {
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI7S3133C2[0]),
  (VTBL_ENTRY)&_ZN7S3133C42v5Ev,
};
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
extern void _ZN7S3133C6D1Ev();
extern void _ZN7S3133C6D0Ev();
extern void _ZN7S3133C63v32Ev();
extern void _ZN7S3133C63v33Ev();
extern void _ZN7S3133C63v34Ev();
extern void _ZN7S3133C63v35Ev();
extern void _ZN7S3133C63v36Ev();
extern void _ZN7S3133C63v37Ev();
extern void _ZN7S3133C63v38Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C6__7S3133C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C6[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
  (VTBL_ENTRY)&_ZN7S3133C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3133C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v32Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v33Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v34Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v35Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v36Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v37Ev,
  (VTBL_ENTRY)&_ZN7S3133C63v38Ev,
};
extern void _ZN7S3133C73v29Ev();
extern void _ZN7S3133C73v30Ev();
extern void _ZN7S3133C73v31Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C77S3133C6__7S3133C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN7S3133C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v30Ev,
  (VTBL_ENTRY)&_ZN7S3133C73v31Ev,
};
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C8__7S3133C77S3133C6__7S3133C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3133C7[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
extern void _ZN10S3133C5_nt3v14Ev();
extern void _ZN10S3133C5_nt3v15Ev();
extern void _ZN10S3133C5_nt3v16Ev();
extern void _ZN10S3133C5_nt3v17Ev();
extern void _ZN10S3133C5_nt3v18Ev();
extern void _ZN7S3133C93v19Ev();
extern void _ZN7S3133C93v20Ev();
extern void _ZN7S3133C93v21Ev();
extern void _ZN7S3133C93v22Ev();
extern void _ZN7S3133C83v23Ev();
extern void _ZN7S3133C83v24Ev();
extern void _ZN7S3133C83v25Ev();
extern void _ZN7S3133C83v26Ev();
extern void _ZN7S3133C83v27Ev();
extern void _ZN7S3133C83v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3133C8__7S3133C6__7S3133C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3133C6[0]),
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3133C5_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v19Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v20Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v21Ev,
  (VTBL_ENTRY)&_ZN7S3133C93v22Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v23Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v24Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v25Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v26Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v27Ev,
  (VTBL_ENTRY)&_ZN7S3133C83v28Ev,
};
static  VTT_ENTRY vtt_S3133C1[] = {
  {&(_ZTV7S3133C1[5]),  5,81},
  {&(_tg__ZTV7S3133C2__7S3133C1[3]),  3,13},
  {&(_tg__ZTV7S3133C4__7S3133C2__7S3133C1[3]),  3,4},
  {&(_ZTV7S3133C1[22]),  22,81},
  {&(_ZTV7S3133C1[37]),  37,81},
  {&(_ZTV7S3133C1[66]),  66,81},
  {&(_tg__ZTV7S3133C6__7S3133C1[3]),  3,15},
  {&(_tg__ZTV7S3133C77S3133C6__7S3133C1[3]),  3,6},
  {&(_tg__ZTV7S3133C8__7S3133C77S3133C6__7S3133C1[17]),  17,32},
  {&(_tg__ZTV7S3133C8__7S3133C6__7S3133C1[17]),  17,32},
};
extern VTBL_ENTRY _ZTI7S3133C1[];
extern  VTBL_ENTRY _ZTV7S3133C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3133C1[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3133C1D0Ev,_ZTv0_n28_N7S3133C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3133C1D0Ev,_ZThn152_N7S3133C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3133C1D1Ev,_ZTv0_n28_N7S3133C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3133C1D1Ev,_ZThn152_N7S3133C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3133C1 = {  "S3133C1", // class name
  bases_S3133C1, 8,
  &(vtc_S3133C1[0]), // expected_vtbl_contents
  &(vtt_S3133C1[0]), // expected_vtt_contents
  ABISELECT(240,164), // object size
  NSPAIRA(_ZTI7S3133C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3133C1),81, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3133C1),10, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3639C3_nt  {
  ::S2014C26 s3639c3f0;
  ::S2014C22 s3639c3f1;
  char s3639c3f2;
  void  mf3639c3(); // _ZN10S3639C3_nt8mf3639c3Ev
  virtual  ~S3639C3_nt(); // _ZN10S3639C3_ntD1Ev
  S3639C3_nt(); // tgen
};
//SIG(-1 S3639C3_nt) C1{ vd m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m Fp Fi FC6{ m} FC3} Fc}


void  S3639C3_nt ::mf3639c3(){}
 S3639C3_nt ::~S3639C3_nt(){ note_dtor("S3639C3_nt", this);}
S3639C3_nt ::S3639C3_nt(){ note_ctor("S3639C3_nt", this);} // tgen

//skip512 S3639C3_nt

#else // __cplusplus

extern void _ZN10S3639C3_ntC1Ev();
extern void _ZN10S3639C3_ntD1Ev();
Name_Map name_map_S3639C3_nt[] = {
  NSPAIR(_ZN10S3639C3_ntC1Ev),
  NSPAIR(_ZN10S3639C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3639C3_nt[];
extern void _ZN10S3639C3_ntD1Ev();
extern void _ZN10S3639C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3639C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3639C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3639C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3639C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3639C3_nt[];
VTBL_ENTRY *P__ZTI10S3639C3_nt = _ZTI10S3639C3_nt; 
extern  VTBL_ENTRY _ZTV10S3639C3_nt[];
Class_Descriptor cd_S3639C3_nt = {  "S3639C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3639C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S3639C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3639C3_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  S3639C2_nt  : S3639C3_nt {
  char s3639c2f0;
  int s3639c2f1;
  ::S2014C6_nt s3639c2f2;
  virtual  ~S3639C2_nt(); // _ZN10S3639C2_ntD1Ev
  virtual void  v4(); // _ZN10S3639C2_nt2v4Ev
  virtual void  v5(); // _ZN10S3639C2_nt2v5Ev
  S3639C2_nt(); // tgen
};
//SIG(-1 S3639C2_nt) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp Fi FC7{ m} FC4} Fc} vd v1 v2 Fc Fi FC8{ m Fp Fi FC9{ m} FC9}}


 S3639C2_nt ::~S3639C2_nt(){ note_dtor("S3639C2_nt", this);}
void  S3639C2_nt ::v4(){vfunc_called(this, "_ZN10S3639C2_nt2v4Ev");}
void  S3639C2_nt ::v5(){vfunc_called(this, "_ZN10S3639C2_nt2v5Ev");}
S3639C2_nt ::S3639C2_nt(){ note_ctor("S3639C2_nt", this);} // tgen

//skip512 S3639C2_nt

#else // __cplusplus

extern void _ZN10S3639C2_ntC1Ev();
extern void _ZN10S3639C2_ntD1Ev();
Name_Map name_map_S3639C2_nt[] = {
  NSPAIR(_ZN10S3639C2_ntC1Ev),
  NSPAIR(_ZN10S3639C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3639C3_nt;
extern VTBL_ENTRY _ZTI10S3639C3_nt[];
extern  VTBL_ENTRY _ZTV10S3639C3_nt[];
static Base_Class bases_S3639C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3639C3_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 _ZTI10S3639C2_nt[];
extern void _ZN10S3639C2_ntD1Ev();
extern void _ZN10S3639C2_ntD0Ev();
extern void _ZN10S3639C2_nt2v4Ev();
extern void _ZN10S3639C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S3639C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3639C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3639C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3639C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3639C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3639C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S3639C2_nt[];
VTBL_ENTRY *P__ZTI10S3639C2_nt = _ZTI10S3639C2_nt; 
extern  VTBL_ENTRY _ZTV10S3639C2_nt[];
Class_Descriptor cd_S3639C2_nt = {  "S3639C2_nt", // class name
  bases_S3639C2_nt, 1,
  &(vtc_S3639C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI10S3639C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3639C2_nt),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  S3639C13_nt  {
  virtual  ~S3639C13_nt(); // _ZN11S3639C13_ntD1Ev
  virtual void  v6(); // _ZN11S3639C13_nt2v6Ev
  S3639C13_nt(); // tgen
};
//SIG(-1 S3639C13_nt) C1{ vd v1}


 S3639C13_nt ::~S3639C13_nt(){ note_dtor("S3639C13_nt", this);}
void  S3639C13_nt ::v6(){vfunc_called(this, "_ZN11S3639C13_nt2v6Ev");}
S3639C13_nt ::S3639C13_nt(){ note_ctor("S3639C13_nt", this);} // tgen

//skip512 S3639C13_nt

#else // __cplusplus

extern void _ZN11S3639C13_ntC1Ev();
extern void _ZN11S3639C13_ntD1Ev();
Name_Map name_map_S3639C13_nt[] = {
  NSPAIR(_ZN11S3639C13_ntC1Ev),
  NSPAIR(_ZN11S3639C13_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S3639C13_nt[];
extern void _ZN11S3639C13_ntD1Ev();
extern void _ZN11S3639C13_ntD0Ev();
extern void _ZN11S3639C13_nt2v6Ev();
static  VTBL_ENTRY vtc_S3639C13_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3639C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S3639C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3639C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3639C13_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S3639C13_nt[];
VTBL_ENTRY *P__ZTI11S3639C13_nt = _ZTI11S3639C13_nt; 
extern  VTBL_ENTRY _ZTV11S3639C13_nt[];
Class_Descriptor cd_S3639C13_nt = {  "S3639C13_nt", // class name
  0,0,//no base classes
  &(vtc_S3639C13_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S3639C13_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S3639C13_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  S3639C14_nt  {
  void *s3639c14f0[2];
  void  mf3639c14(); // _ZN11S3639C14_nt9mf3639c14Ev
};
//SIG(-1 S3639C14_nt) C1{ m Fp[2]}


void  S3639C14_nt ::mf3639c14(){}

//skip512 S3639C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3639C15  {
  ::S2014C37 s3639c15f0;
  ::S2014C40_nt s3639c15f1;
  ::S2014C40_nt s3639c15f2;
  int s3639c15f3;
  void *s3639c15f4;
  int s3639c15f5;
  ::S2014C39 s3639c15f6;
  __tsi64 s3639c15f7;
  char s3639c15f8;
  int s3639c15f9[2];
  void  mf3639c15(); // _ZN8S3639C159mf3639c15Ev
};
//SIG(-1 S3639C15) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m FC5{ m FL}} FC4 Fi Fp Fi FC6{ m Fi[6]} FL Fc Fi[2]}


void  S3639C15 ::mf3639c15(){}

static void Test_S3639C15()
{
  {
    init_simple_test("S3639C15");
    S3639C15 lv;
    check2(sizeof(lv), ABISELECT(112,88), "sizeof(S3639C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3639C15)");
    check_field_offset(lv, s3639c15f0, 0, "S3639C15.s3639c15f0");
    check_field_offset(lv, s3639c15f1, ABISELECT(24,16), "S3639C15.s3639c15f1");
    check_field_offset(lv, s3639c15f2, ABISELECT(32,24), "S3639C15.s3639c15f2");
    check_field_offset(lv, s3639c15f3, ABISELECT(40,32), "S3639C15.s3639c15f3");
    check_field_offset(lv, s3639c15f4, ABISELECT(48,36), "S3639C15.s3639c15f4");
    check_field_offset(lv, s3639c15f5, ABISELECT(56,40), "S3639C15.s3639c15f5");
    check_field_offset(lv, s3639c15f6, ABISELECT(60,44), "S3639C15.s3639c15f6");
    check_field_offset(lv, s3639c15f7, ABISELECT(88,68), "S3639C15.s3639c15f7");
    check_field_offset(lv, s3639c15f8, ABISELECT(96,76), "S3639C15.s3639c15f8");
    check_field_offset(lv, s3639c15f9, ABISELECT(100,80), "S3639C15.s3639c15f9");
  }
}
static Arrange_To_Call_Me vS3639C15(Test_S3639C15, "S3639C15", ABISELECT(112,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3639C1  : S3639C2_nt , S3639C13_nt {
  void *s3639c1f0[2];
  int s3639c1f1[4];
  void *s3639c1f2;
  ::S3639C14_nt s3639c1f3;
  void *s3639c1f4;
  ::S3639C15 s3639c1f5;
  int s3639c1f6;
  virtual  ~S3639C1(); // _ZN7S3639C1D1Ev
  virtual void  v1(); // _ZN7S3639C12v1Ev
  virtual void  v2(); // _ZN7S3639C12v2Ev
  virtual void  v3(); // _ZN7S3639C12v3Ev
  S3639C1(); // tgen
};
//SIG(1 S3639C1) C1{ BC2{ BC3{ vd m FC4{ m Fp Fi FC5{ m} FC6{ m}} FC7{ m Fp Fi FC8{ m} FC5} Fc} vd v4 v5 Fc Fi FC9{ m Fp Fi FC10{ m} FC10}} BC11{ vd v6} vd v1 v2 v3 Fp[2] Fi[4] Fp FC12{ m Fp[2]} Fp FC13{ m FC14{ m Fp Fi[2] FC15{ m}} FC16{ m FC17{ m FL}} FC16 Fi Fp Fi FC18{ m Fi[6]} FL Fc Fi[2]} Fi}


 S3639C1 ::~S3639C1(){ note_dtor("S3639C1", this);}
void  S3639C1 ::v1(){vfunc_called(this, "_ZN7S3639C12v1Ev");}
void  S3639C1 ::v2(){vfunc_called(this, "_ZN7S3639C12v2Ev");}
void  S3639C1 ::v3(){vfunc_called(this, "_ZN7S3639C12v3Ev");}
S3639C1 ::S3639C1(){ note_ctor("S3639C1", this);} // tgen

static void Test_S3639C1()
{
  extern Class_Descriptor cd_S3639C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,47)];
    init_test(&cd_S3639C1, buf);
    S3639C1 *dp, &lv = *(dp=new (buf) S3639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,184), "sizeof(S3639C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3639C1)");
    check_base_class_offset(lv, (S3639C3_nt*)(S3639C2_nt*), 0, "S3639C1");
    check_base_class_offset(lv, (S3639C2_nt*), 0, "S3639C1");
    check_base_class_offset(lv, (S3639C13_nt*), ABISELECT(64,48), "S3639C1");
    check_field_offset(lv, s3639c1f0, ABISELECT(72,52), "S3639C1.s3639c1f0");
    check_field_offset(lv, s3639c1f1, ABISELECT(88,60), "S3639C1.s3639c1f1");
    check_field_offset(lv, s3639c1f2, ABISELECT(104,76), "S3639C1.s3639c1f2");
    check_field_offset(lv, s3639c1f3, ABISELECT(112,80), "S3639C1.s3639c1f3");
    check_field_offset(lv, s3639c1f4, ABISELECT(128,88), "S3639C1.s3639c1f4");
    check_field_offset(lv, s3639c1f5, ABISELECT(136,92), "S3639C1.s3639c1f5");
    check_field_offset(lv, s3639c1f6, ABISELECT(248,180), "S3639C1.s3639c1f6");
    test_class_info(&lv, &cd_S3639C1);
    dp->~S3639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3639C1(Test_S3639C1, "S3639C1", ABISELECT(256,184));

#else // __cplusplus

extern void _ZN7S3639C1C1Ev();
extern void _ZN7S3639C1D1Ev();
Name_Map name_map_S3639C1[] = {
  NSPAIR(_ZN7S3639C1C1Ev),
  NSPAIR(_ZN7S3639C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3639C3_nt;
extern VTBL_ENTRY _ZTI10S3639C3_nt[];
extern  VTBL_ENTRY _ZTV10S3639C3_nt[];
extern Class_Descriptor cd_S3639C2_nt;
extern VTBL_ENTRY _ZTI10S3639C2_nt[];
extern  VTBL_ENTRY _ZTV10S3639C2_nt[];
extern Class_Descriptor cd_S3639C13_nt;
extern VTBL_ENTRY _ZTI11S3639C13_nt[];
extern  VTBL_ENTRY _ZTV11S3639C13_nt[];
static Base_Class bases_S3639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3639C3_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_S3639C2_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_S3639C13_nt,    ABISELECT(64,48), //bcp->offset
    9, //bcp->virtual_function_table_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 _ZTI7S3639C1[];
extern void _ZN7S3639C1D1Ev();
extern void _ZN7S3639C1D0Ev();
extern void _ZN10S3639C2_nt2v4Ev();
extern void _ZN10S3639C2_nt2v5Ev();
extern void _ZN7S3639C12v1Ev();
extern void _ZN7S3639C12v2Ev();
extern void _ZN7S3639C12v3Ev();
extern void ABISELECT(_ZThn64_N7S3639C1D1Ev,_ZThn48_N7S3639C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S3639C1D0Ev,_ZThn48_N7S3639C1D0Ev)();
extern void _ZN11S3639C13_nt2v6Ev();
static  VTBL_ENTRY vtc_S3639C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3639C1[0]),
  (VTBL_ENTRY)&_ZN7S3639C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3639C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3639C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3639C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S3639C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3639C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3639C12v3Ev,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S3639C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3639C1D1Ev,_ZThn48_N7S3639C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3639C1D0Ev,_ZThn48_N7S3639C1D0Ev),
  (VTBL_ENTRY)&_ZN11S3639C13_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI7S3639C1[];
extern  VTBL_ENTRY _ZTV7S3639C1[];
Class_Descriptor cd_S3639C1 = {  "S3639C1", // class name
  bases_S3639C1, 3,
  &(vtc_S3639C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,184), // object size
  NSPAIRA(_ZTI7S3639C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3639C1),14, //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  S20487C5  : S2014C38 {
  ::S2014C38 s20487c5f0;
  virtual  ~S20487C5(); // _ZN8S20487C5D1Ev
  S20487C5(); // tgen
};
//SIG(-1 S20487C5) C1{ BC2{ m} vd FC2}


 S20487C5 ::~S20487C5(){ note_dtor("S20487C5", this);}
S20487C5 ::S20487C5(){ note_ctor("S20487C5", this);} // tgen

static void Test_S20487C5()
{
  extern Class_Descriptor cd_S20487C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20487C5, buf);
    S20487C5 *dp, &lv = *(dp=new (buf) S20487C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20487C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C5)");
    check_base_class_offset(lv, (S2014C38*), 0, "S20487C5");
    check_field_offset(lv, s20487c5f0, ABISELECT(8,4), "S20487C5.s20487c5f0");
    test_class_info(&lv, &cd_S20487C5);
    dp->~S20487C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C5(Test_S20487C5, "S20487C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20487C5C1Ev();
extern void _ZN8S20487C5D1Ev();
Name_Map name_map_S20487C5[] = {
  NSPAIR(_ZN8S20487C5C1Ev),
  NSPAIR(_ZN8S20487C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S20487C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20487C5[];
extern void _ZN8S20487C5D1Ev();
extern void _ZN8S20487C5D0Ev();
static  VTBL_ENTRY vtc_S20487C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C5[0]),
  (VTBL_ENTRY)&_ZN8S20487C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
Class_Descriptor cd_S20487C5 = {  "S20487C5", // class name
  bases_S20487C5, 1,
  &(vtc_S20487C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20487C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20487C5),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  S20487C7  : virtual S2014C28 , virtual S20487C5 , virtual S3222C8_nt {
  void *s20487c7f0;
  ::S19762C18_nt s20487c7f1;
  virtual  ~S20487C7(); // _ZN8S20487C7D2Ev
  S20487C7(); // tgen
};
//SIG(-1 S20487C7) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S20487C7 ::~S20487C7(){ note_dtor("S20487C7", this);}
S20487C7 ::S20487C7(){ note_ctor("S20487C7", this);} // tgen

static void Test_S20487C7()
{
  extern Class_Descriptor cd_S20487C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20487C7, buf);
    S20487C7 *dp, &lv = *(dp=new (buf) S20487C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20487C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C7)");
    check_base_class_offset(lv, (S2014C28*), 0, "S20487C7");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(24,12), "S20487C7");
    check_base_class_offset(lv, (S20487C5*), ABISELECT(24,12), "S20487C7");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S20487C7");
    check_field_offset(lv, s20487c7f0, ABISELECT(8,4), "S20487C7.s20487c7f0");
    check_field_offset(lv, s20487c7f1, ABISELECT(16,8), "S20487C7.s20487c7f1");
    test_class_info(&lv, &cd_S20487C7);
    dp->~S20487C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C7(Test_S20487C7, "S20487C7", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20487C7C1Ev();
extern void _ZN8S20487C7D2Ev();
Name_Map name_map_S20487C7[] = {
  NSPAIR(_ZN8S20487C7C1Ev),
  NSPAIR(_ZN8S20487C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S20487C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20487C7[];
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C7[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20487C7[];
static  VTT_ENTRY vtt_S20487C7[] = {
  {&(_ZTV8S20487C7[5]),  5,12},
  {&(_ZTV8S20487C7[10]),  10,12},
};
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C7 = {  "S20487C7", // class name
  bases_S20487C7, 4,
  &(vtc_S20487C7[0]), // expected_vtbl_contents
  &(vtt_S20487C7[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20487C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20487C7),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20487C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C3  : S2014C38 , S20487C5 , virtual S2014C28 , virtual S20487C7 {
  virtual  ~S20487C3(); // _ZN8S20487C3D2Ev
  S20487C3(); // tgen
};
//SIG(-1 S20487C3) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S20487C3 ::~S20487C3(){ note_dtor("S20487C3", this);}
S20487C3 ::S20487C3(){ note_ctor("S20487C3", this);} // tgen

static void Test_S20487C3()
{
  extern Class_Descriptor cd_S20487C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20487C3, buf);
    S20487C3 *dp, &lv = *(dp=new (buf) S20487C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20487C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C3)");
    /*is_ambiguous_... S20487C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S20487C3");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), 0, "S20487C3");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*), 0, "S20487C3");
    check_base_class_offset(lv, (S2014C28*), 0, "S20487C3");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C3");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(40,20), "S20487C3");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(40,20), "S20487C3");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(52,28), "S20487C3");
    check_base_class_offset(lv, (S20487C7*), ABISELECT(16,8), "S20487C3");
    test_class_info(&lv, &cd_S20487C3);
    dp->~S20487C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C3(Test_S20487C3, "S20487C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20487C3C1Ev();
extern void _ZN8S20487C3D2Ev();
Name_Map name_map_S20487C3[] = {
  NSPAIR(_ZN8S20487C3C1Ev),
  NSPAIR(_ZN8S20487C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
static Base_Class bases_S20487C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20487C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S20487C7,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S20487C3[];
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C3[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20487C3[];
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C3[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__8S20487C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
static  VTT_ENTRY vtt_S20487C3[] = {
  {&(_ZTV8S20487C3[6]),  6,21},
  {&(_ZTV8S20487C3[14]),  14,21},
  {&(_ZTV8S20487C3[19]),  19,21},
  {&(_tg__ZTV8S20487C7__8S20487C3[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__8S20487C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C3 = {  "S20487C3", // class name
  bases_S20487C3, 8,
  &(vtc_S20487C3[0]), // expected_vtbl_contents
  &(vtt_S20487C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20487C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20487C3),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20487C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C2  : virtual S20487C3 {
  virtual  ~S20487C2(); // _ZN8S20487C2D2Ev
  S20487C2(); // tgen
};
//SIG(-1 S20487C2) C1{ VBC2{ BC3{ m} BC4{ BC3 vd FC3} VBC5{ m} VBC6{ VBC5 VBC4 VBC7{ m Fi} vd Fp FC8{}} vd} vd}


 S20487C2 ::~S20487C2(){ note_dtor("S20487C2", this);}
S20487C2 ::S20487C2(){ note_ctor("S20487C2", this);} // tgen

static void Test_S20487C2()
{
  extern Class_Descriptor cd_S20487C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20487C2, buf);
    S20487C2 *dp, &lv = *(dp=new (buf) S20487C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20487C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C2)");
    /*is_ambiguous_... S20487C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C3*), ABISELECT(17,9), "S20487C2");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C3*), ABISELECT(8,4), "S20487C2");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C3*), ABISELECT(8,4), "S20487C2");
    check_base_class_offset(lv, (S2014C28*)(S20487C3*), 0, "S20487C2");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C2");
    /*is_ambiguous_... S20487C2::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(48,24), "S20487C2");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(48,24), "S20487C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(60,32), "S20487C2");
    check_base_class_offset(lv, (S20487C7*)(S20487C3*), ABISELECT(24,12), "S20487C2");
    check_base_class_offset(lv, (S20487C3*), ABISELECT(8,4), "S20487C2");
    test_class_info(&lv, &cd_S20487C2);
    dp->~S20487C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C2(Test_S20487C2, "S20487C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S20487C2C1Ev();
extern void _ZN8S20487C2D2Ev();
Name_Map name_map_S20487C2[] = {
  NSPAIR(_ZN8S20487C2C1Ev),
  NSPAIR(_ZN8S20487C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
extern Class_Descriptor cd_S20487C3;
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
static Base_Class bases_S20487C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S20487C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(48,24), //bcp->offset
    26, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S20487C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S20487C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //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 _ZTI8S20487C2[];
extern void _ZN8S20487C2D1Ev();
extern void _ZN8S20487C2D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20487C2D1Ev,_ZThn4_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20487C2D0Ev,_ZThn4_N8S20487C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C2D1Ev,_ZThn12_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C2D0Ev,_ZThn12_N8S20487C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20487C2D1Ev,_ZThn24_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20487C2D0Ev,_ZThn24_N8S20487C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C2[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&_ZN8S20487C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20487C2[];
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C3__8S20487C2[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C3__8S20487C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C3__8S20487C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C2[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__8S20487C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
static  VTT_ENTRY vtt_S20487C2[] = {
  {&(_ZTV8S20487C2[7]),  7,31},
  {&(_ZTV8S20487C2[16]),  16,31},
  {&(_ZTV8S20487C2[24]),  24,31},
  {&(_ZTV8S20487C2[29]),  29,31},
  {&(_tg__ZTV8S20487C3__8S20487C2[6]),  6,8},
  {&(_tg__ZTV8S20487C7__8S20487C3__8S20487C2[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C3__8S20487C2[3]),  3,5},
  {&(_tg__ZTV8S20487C7__8S20487C2[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__8S20487C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20487C2[];
extern  VTBL_ENTRY _ZTV8S20487C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C2[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20487C2D0Ev,_ZThn24_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20487C2D1Ev,_ZThn24_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C2D0Ev,_ZThn12_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C2D1Ev,_ZThn12_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20487C2D0Ev,_ZThn4_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20487C2D1Ev,_ZThn4_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C2 = {  "S20487C2", // class name
  bases_S20487C2, 9,
  &(vtc_S20487C2[0]), // expected_vtbl_contents
  &(vtt_S20487C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S20487C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20487C2),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20487C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C12  : S20487C5 {
  virtual  ~S20487C12(); // _ZN9S20487C12D1Ev
  S20487C12(); // tgen
};
//SIG(-1 S20487C12) C1{ BC2{ BC3{ m} vd FC3} vd}


 S20487C12 ::~S20487C12(){ note_dtor("S20487C12", this);}
S20487C12 ::S20487C12(){ note_ctor("S20487C12", this);} // tgen

static void Test_S20487C12()
{
  extern Class_Descriptor cd_S20487C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20487C12, buf);
    S20487C12 *dp, &lv = *(dp=new (buf) S20487C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20487C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C12)");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*), 0, "S20487C12");
    check_base_class_offset(lv, (S20487C5*), 0, "S20487C12");
    test_class_info(&lv, &cd_S20487C12);
    dp->~S20487C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C12(Test_S20487C12, "S20487C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20487C12C1Ev();
extern void _ZN9S20487C12D1Ev();
Name_Map name_map_S20487C12[] = {
  NSPAIR(_ZN9S20487C12C1Ev),
  NSPAIR(_ZN9S20487C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
static Base_Class bases_S20487C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S20487C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S20487C12[];
extern void _ZN9S20487C12D1Ev();
extern void _ZN9S20487C12D0Ev();
static  VTBL_ENTRY vtc_S20487C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C12[0]),
  (VTBL_ENTRY)&_ZN9S20487C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C12D0Ev,
};
extern VTBL_ENTRY _ZTI9S20487C12[];
extern  VTBL_ENTRY _ZTV9S20487C12[];
Class_Descriptor cd_S20487C12 = {  "S20487C12", // class name
  bases_S20487C12, 2,
  &(vtc_S20487C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20487C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20487C12),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  S20487C15  : virtual S20487C5 {
  __tsi64 s20487c15f0;
  ~S20487C15(); // tgen
  S20487C15(); // tgen
};
//SIG(-1 S20487C15) C1{ VBC2{ BC3{ m} vd FC3} FL}


S20487C15 ::~S20487C15(){ note_dtor("S20487C15", this);} // tgen
S20487C15 ::S20487C15(){ note_ctor("S20487C15", this);} // tgen

static void Test_S20487C15()
{
  extern Class_Descriptor cd_S20487C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20487C15, buf);
    S20487C15 *dp, &lv = *(dp=new (buf) S20487C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20487C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C15)");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(16,12), "S20487C15");
    check_base_class_offset(lv, (S20487C5*), ABISELECT(16,12), "S20487C15");
    check_field_offset(lv, s20487c15f0, ABISELECT(8,4), "S20487C15.s20487c15f0");
    test_class_info(&lv, &cd_S20487C15);
    dp->~S20487C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C15(Test_S20487C15, "S20487C15", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20487C15C1Ev();
extern void _ZN9S20487C15D1Ev();
Name_Map name_map_S20487C15[] = {
  NSPAIR(_ZN9S20487C15C1Ev),
  NSPAIR(_ZN9S20487C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
static Base_Class bases_S20487C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S20487C5,    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 _ZTI9S20487C15[];
extern void _ZN9S20487C15D1Ev();
extern void _ZN9S20487C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20487C15D1Ev,_ZThn12_N9S20487C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20487C15D0Ev,_ZThn12_N9S20487C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C15[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&_ZN9S20487C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C15D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20487C15[];
static  VTT_ENTRY vtt_S20487C15[] = {
  {&(_ZTV9S20487C15[3]),  3,10},
  {&(_ZTV9S20487C15[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20487C15[];
extern  VTBL_ENTRY _ZTV9S20487C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C15[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20487C15D0Ev,_ZThn12_N9S20487C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20487C15D1Ev,_ZThn12_N9S20487C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C15 = {  "S20487C15", // class name
  bases_S20487C15, 2,
  &(vtc_S20487C15[0]), // expected_vtbl_contents
  &(vtt_S20487C15[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20487C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20487C15),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20487C15),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C17  : S2014C28 , S20487C5 , S2014C38 , S3222C8_nt {
  short s20487c17f0:16;
  __tsi64 s20487c17f1;
  ~S20487C17(); // tgen
  S20487C17(); // tgen
};
//SIG(-1 S20487C17) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 FL}


S20487C17 ::~S20487C17(){ note_dtor("S20487C17", this);} // tgen
S20487C17 ::S20487C17(){ note_ctor("S20487C17", this);} // tgen

static void Test_S20487C17()
{
  extern Class_Descriptor cd_S20487C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S20487C17, buf);
    S20487C17 *dp, &lv = *(dp=new (buf) S20487C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S20487C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C17)");
    check_base_class_offset(lv, (S2014C28*), 0, "S20487C17");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*), 0, "S20487C17");
    check_base_class_offset(lv, (S20487C5*), 0, "S20487C17");
    /*is_ambiguous_... S20487C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S20487C17");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S20487C17");
    set_bf_and_test(lv, s20487c17f0, ABISELECT(16,12), 0, 16, 1, "S20487C17");
    set_bf_and_test(lv, s20487c17f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S20487C17");
    check_field_offset(lv, s20487c17f1, ABISELECT(24,16), "S20487C17.s20487c17f1");
    test_class_info(&lv, &cd_S20487C17);
    dp->~S20487C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C17(Test_S20487C17, "S20487C17", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S20487C17C1Ev();
extern void _ZN9S20487C17D1Ev();
Name_Map name_map_S20487C17[] = {
  NSPAIR(_ZN9S20487C17C1Ev),
  NSPAIR(_ZN9S20487C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S20487C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20487C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI9S20487C17[];
extern void _ZN9S20487C17D1Ev();
extern void _ZN9S20487C17D0Ev();
static  VTBL_ENTRY vtc_S20487C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C17[0]),
  (VTBL_ENTRY)&_ZN9S20487C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C17D0Ev,
};
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
Class_Descriptor cd_S20487C17 = {  "S20487C17", // class name
  bases_S20487C17, 5,
  &(vtc_S20487C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S20487C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20487C17),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  S20487C16  : S20487C17 , S20487C5 {
  int s20487c16f0;
  ~S20487C16(); // tgen
  S20487C16(); // tgen
};
//SIG(-1 S20487C16) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 FL} BC4 Fi}


S20487C16 ::~S20487C16(){ note_dtor("S20487C16", this);} // tgen
S20487C16 ::S20487C16(){ note_ctor("S20487C16", this);} // tgen

static void Test_S20487C16()
{
  extern Class_Descriptor cd_S20487C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S20487C16, buf);
    S20487C16 *dp, &lv = *(dp=new (buf) S20487C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S20487C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C16)");
    check_base_class_offset(lv, (S2014C28*)(S20487C17*), 0, "S20487C16");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*), 0, "S20487C16");
    check_base_class_offset(lv, (S20487C5*)(S20487C17*), 0, "S20487C16");
    /*is_ambiguous_... S20487C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*), ABISELECT(9,5), "S20487C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*), ABISELECT(12,8), "S20487C16");
    check_base_class_offset(lv, (S20487C17*), 0, "S20487C16");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(32,24), "S20487C16");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*), ABISELECT(32,24), "S20487C16");
    check_field_offset(lv, s20487c16f0, ABISELECT(44,32), "S20487C16.s20487c16f0");
    test_class_info(&lv, &cd_S20487C16);
    dp->~S20487C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C16(Test_S20487C16, "S20487C16", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN9S20487C16C1Ev();
extern void _ZN9S20487C16D1Ev();
Name_Map name_map_S20487C16[] = {
  NSPAIR(_ZN9S20487C16C1Ev),
  NSPAIR(_ZN9S20487C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
static Base_Class bases_S20487C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20487C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S20487C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(32,24), //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 _ZTI9S20487C16[];
extern void _ZN9S20487C16D1Ev();
extern void _ZN9S20487C16D0Ev();
extern void ABISELECT(_ZThn32_N9S20487C16D1Ev,_ZThn24_N9S20487C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20487C16D0Ev,_ZThn24_N9S20487C16D0Ev)();
static  VTBL_ENTRY vtc_S20487C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C16[0]),
  (VTBL_ENTRY)&_ZN9S20487C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C16D0Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20487C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20487C16D1Ev,_ZThn24_N9S20487C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20487C16D0Ev,_ZThn24_N9S20487C16D0Ev),
};
extern VTBL_ENTRY _ZTI9S20487C16[];
extern  VTBL_ENTRY _ZTV9S20487C16[];
Class_Descriptor cd_S20487C16 = {  "S20487C16", // class name
  bases_S20487C16, 8,
  &(vtc_S20487C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI9S20487C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20487C16),8, //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  S20487C14  : S20487C15 , virtual S2014C28 , virtual S3222C8_nt , virtual S20487C7 , virtual S20487C16 {
  long s20487c14f0;
  ::S20487C15 s20487c14f1;
  virtual  ~S20487C14(); // _ZN9S20487C14D2Ev
  S20487C14(); // tgen
};
//SIG(-1 S20487C14) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 FL} BC3 Fi} vd Fl FC2}


 S20487C14 ::~S20487C14(){ note_dtor("S20487C14", this);}
S20487C14 ::S20487C14(){ note_ctor("S20487C14", this);} // tgen

static void Test_S20487C14()
{
  extern Class_Descriptor cd_S20487C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S20487C14, buf);
    S20487C14 *dp, &lv = *(dp=new (buf) S20487C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S20487C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C14)");
    /*is_ambiguous_... S20487C14::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(56,36), "S20487C14");
    check_base_class_offset(lv, (S20487C5*)(S20487C15*), ABISELECT(56,36), "S20487C14");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(56,36), "S20487C14");
    check_base_class_offset(lv, (S20487C15*), 0, "S20487C14");
    /*is_ambiguous_... S20487C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S20487C14");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C14");
    /*is_ambiguous_... S20487C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S20487C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(68,44), "S20487C14");
    check_base_class_offset(lv, (S20487C7*), ABISELECT(72,48), "S20487C14");
    check_base_class_offset(lv, (S2014C28*)(S20487C17*)(S20487C16*), ABISELECT(96,60), "S20487C14");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(96,60), "S20487C14");
    check_base_class_offset(lv, (S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(96,60), "S20487C14");
    /*is_ambiguous_... S20487C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*)(S20487C16*), ABISELECT(105,65), "S20487C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*)(S20487C16*), ABISELECT(108,68), "S20487C14");
    check_base_class_offset(lv, (S20487C17*)(S20487C16*), ABISELECT(96,60), "S20487C14");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C16*), ABISELECT(128,84), "S20487C14");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C16*), ABISELECT(128,84), "S20487C14");
    check_base_class_offset(lv, (S20487C16*), ABISELECT(96,60), "S20487C14");
    check_field_offset(lv, s20487c14f0, ABISELECT(16,12), "S20487C14.s20487c14f0");
    check_field_offset(lv, s20487c14f1, ABISELECT(24,16), "S20487C14.s20487c14f1");
    test_class_info(&lv, &cd_S20487C14);
    dp->~S20487C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C14(Test_S20487C14, "S20487C14", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN9S20487C14C1Ev();
extern void _ZN9S20487C14D2Ev();
Name_Map name_map_S20487C14[] = {
  NSPAIR(_ZN9S20487C14C1Ev),
  NSPAIR(_ZN9S20487C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C15;
extern VTBL_ENTRY _ZTI9S20487C15[];
extern  VTBL_ENTRY _ZTV9S20487C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C16;
extern VTBL_ENTRY _ZTI9S20487C16[];
extern  VTBL_ENTRY _ZTV9S20487C16[];
static Base_Class bases_S20487C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S20487C15,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S20487C7,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20487C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S20487C17,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(128,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_S20487C5,    ABISELECT(128,84), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20487C16,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20487C14[];
extern void _ZN9S20487C14D1Ev();
extern void _ZN9S20487C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn56_N9S20487C14D1Ev,_ZThn36_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn56_N9S20487C14D0Ev,_ZThn36_N9S20487C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S20487C14D1Ev,_ZThn48_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S20487C14D0Ev,_ZThn48_N9S20487C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20487C14D1Ev,_ZThn60_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20487C14D0Ev,_ZThn60_N9S20487C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev)();
static  VTBL_ENTRY vtc_S20487C14[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&_ZN9S20487C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C14D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S20487C14[];
extern void _ZN9S20487C15D1Ev();
extern void _ZN9S20487C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C15__9S20487C14[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&_ZN9S20487C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S20487C15D1Ev,_ZThn36_N9S20487C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S20487C15D0Ev,_ZThn36_N9S20487C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C15__9S20487C14[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev),
};
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C14[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__9S20487C14[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
static  VTT_ENTRY vtt_S20487C14[] = {
  {&(_ZTV9S20487C14[7]),  7,31},
  {&(_tg__ZTV9S20487C15__9S20487C14[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C15__9S20487C14[3]),  3,5},
  {&(_ZTV9S20487C14[12]),  12,31},
  {&(_ZTV9S20487C14[20]),  20,31},
  {&(_ZTV9S20487C14[25]),  25,31},
  {&(_ZTV9S20487C14[29]),  29,31},
  {&(_tg__ZTV8S20487C7__9S20487C14[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__9S20487C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20487C14[];
extern  VTBL_ENTRY _ZTV9S20487C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C14[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C15D0Ev,_ZThn36_N9S20487C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C15D1Ev,_ZThn36_N9S20487C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20487C14D0Ev,_ZThn48_N9S20487C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20487C14D1Ev,_ZThn48_N9S20487C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20487C14D0Ev,_ZThn60_N9S20487C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C14D0Ev,_ZThn36_N9S20487C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20487C14D1Ev,_ZThn60_N9S20487C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C14D1Ev,_ZThn36_N9S20487C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C14 = {  "S20487C14", // class name
  bases_S20487C14, 15,
  &(vtc_S20487C14[0]), // expected_vtbl_contents
  &(vtt_S20487C14[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI9S20487C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20487C14),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20487C14),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C18  : virtual S20487C7 , S20487C3 , virtual S2014C38 {
  ::S3222C8_nt s20487c18f0[6];
  virtual  ~S20487C18(); // _ZN9S20487C18D2Ev
  S20487C18(); // tgen
};
//SIG(-1 S20487C18) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S20487C18 ::~S20487C18(){ note_dtor("S20487C18", this);}
S20487C18 ::S20487C18(){ note_ctor("S20487C18", this);} // tgen

static void Test_S20487C18()
{
  extern Class_Descriptor cd_S20487C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S20487C18, buf);
    S20487C18 *dp, &lv = *(dp=new (buf) S20487C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S20487C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C18)");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C18");
    check_base_class_offset(lv, (S2014C28*)(S20487C3*), 0, "S20487C18");
    /*is_ambiguous_... S20487C18::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(64,44), "S20487C18");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(64,44), "S20487C18");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(76,52), "S20487C18");
    check_base_class_offset(lv, (S20487C7*), ABISELECT(40,32), "S20487C18");
    check_base_class_offset(lv, (S20487C7*)(S20487C3*), ABISELECT(40,32), "S20487C18");
    /*is_ambiguous_... S20487C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C3*), ABISELECT(9,5), "S20487C18");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C3*), 0, "S20487C18");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C3*), 0, "S20487C18");
    check_base_class_offset(lv, (S20487C3*), 0, "S20487C18");
    /*is_ambiguous_... S20487C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S20487C18");
    check_field_offset(lv, s20487c18f0, ABISELECT(12,8), "S20487C18.s20487c18f0");
    test_class_info(&lv, &cd_S20487C18);
    dp->~S20487C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C18(Test_S20487C18, "S20487C18", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S20487C18C1Ev();
extern void _ZN9S20487C18D2Ev();
Name_Map name_map_S20487C18[] = {
  NSPAIR(_ZN9S20487C18C1Ev),
  NSPAIR(_ZN9S20487C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C3;
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S20487C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S20487C7,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20487C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S20487C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20487C18[];
extern void _ZN9S20487C18D1Ev();
extern void _ZN9S20487C18D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20487C18D1Ev,_ZThn32_N9S20487C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20487C18D0Ev,_ZThn32_N9S20487C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20487C18D1Ev,_ZThn44_N9S20487C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S20487C18D0Ev,_ZThn44_N9S20487C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C18[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&_ZN9S20487C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C18D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20487C18[];
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C3__9S20487C18[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn32_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn32_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C3__9S20487C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20487C3D1Ev,_ZThn44_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20487C3D0Ev,_ZThn44_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C3__9S20487C18[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C18[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__9S20487C18[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
static  VTT_ENTRY vtt_S20487C18[] = {
  {&(_ZTV9S20487C18[7]),  7,22},
  {&(_tg__ZTV8S20487C3__9S20487C18[6]),  6,8},
  {&(_tg__ZTV8S20487C7__8S20487C3__9S20487C18[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C3__9S20487C18[3]),  3,5},
  {&(_ZTV9S20487C18[15]),  15,22},
  {&(_ZTV9S20487C18[20]),  20,22},
  {&(_tg__ZTV8S20487C7__9S20487C18[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__9S20487C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20487C18[];
extern  VTBL_ENTRY _ZTV9S20487C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C18[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20487C3D0Ev,_ZThn44_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20487C3D1Ev,_ZThn44_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn32_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn32_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20487C18D0Ev,_ZThn44_N9S20487C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20487C18D1Ev,_ZThn44_N9S20487C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20487C18D0Ev,_ZThn32_N9S20487C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20487C18D1Ev,_ZThn32_N9S20487C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C18 = {  "S20487C18", // class name
  bases_S20487C18, 10,
  &(vtc_S20487C18[0]), // expected_vtbl_contents
  &(vtt_S20487C18[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S20487C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20487C18),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20487C18),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C13  : S20487C14 , S20487C5 , virtual S20487C17 , S20487C18 {
  virtual  ~S20487C13(); // _ZN9S20487C13D2Ev
  S20487C13(); // tgen
};
//SIG(-1 S20487C13) C1{ BC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 FL} BC4 Fi} vd Fl FC3} BC4 VBC11 BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} vd}


 S20487C13 ::~S20487C13(){ note_dtor("S20487C13", this);}
S20487C13 ::S20487C13(){ note_ctor("S20487C13", this);} // tgen

static void Test_S20487C13()
{
  extern Class_Descriptor cd_S20487C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,41)];
    init_test(&cd_S20487C13, buf);
    S20487C13 *dp, &lv = *(dp=new (buf) S20487C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,160), "sizeof(S20487C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C13)");
    /*is_ambiguous_... S20487C13::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(112,76), "S20487C13");
    check_base_class_offset(lv, (S20487C5*)(S20487C15*)(S20487C14*), ABISELECT(112,76), "S20487C13");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(112,76), "S20487C13");
    check_base_class_offset(lv, (S20487C15*)(S20487C14*), 0, "S20487C13");
    /*is_ambiguous_... S20487C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20487C14*), 0, "S20487C13");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C13");
    check_base_class_offset(lv, (S2014C28*)(S20487C3*)(S20487C18*), 0, "S20487C13");
    /*is_ambiguous_... S20487C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20487C14*), ABISELECT(124,84), "S20487C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(124,84), "S20487C13");
    check_base_class_offset(lv, (S20487C7*)(S20487C14*), ABISELECT(128,88), "S20487C13");
    check_base_class_offset(lv, (S20487C7*)(S20487C18*), ABISELECT(128,88), "S20487C13");
    check_base_class_offset(lv, (S20487C7*)(S20487C3*)(S20487C18*), ABISELECT(128,88), "S20487C13");
    check_base_class_offset(lv, (S2014C28*)(S20487C17*)(S20487C16*), ABISELECT(152,100), "S20487C13");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(152,100), "S20487C13");
    check_base_class_offset(lv, (S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(152,100), "S20487C13");
    /*is_ambiguous_... S20487C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*)(S20487C16*), ABISELECT(161,105), "S20487C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*)(S20487C16*), ABISELECT(164,108), "S20487C13");
    check_base_class_offset(lv, (S20487C17*)(S20487C16*), ABISELECT(152,100), "S20487C13");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C16*), ABISELECT(184,124), "S20487C13");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C16*), ABISELECT(184,124), "S20487C13");
    check_base_class_offset(lv, (S20487C16*)(S20487C14*), ABISELECT(152,100), "S20487C13");
    check_base_class_offset(lv, (S20487C14*), 0, "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(56,36), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*), ABISELECT(56,36), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20487C17*), ABISELECT(200,136), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*), ABISELECT(200,136), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C17*), ABISELECT(200,136), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*), ABISELECT(209,141), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*), ABISELECT(212,144), "S20487C13");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S20487C17*), ABISELECT(200,136), "S20487C13");
    /*is_ambiguous_... S20487C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C3*)(S20487C18*), ABISELECT(81,49), "S20487C13");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C3*)(S20487C18*), ABISELECT(72,44), "S20487C13");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C3*)(S20487C18*), ABISELECT(72,44), "S20487C13");
    check_base_class_offset(lv, (S20487C3*)(S20487C18*), ABISELECT(72,44), "S20487C13");
    /*is_ambiguous_... S20487C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C18*), 0, "S20487C13");
    check_base_class_offset(lv, (S20487C18*), ABISELECT(72,44), "S20487C13");
    test_class_info(&lv, &cd_S20487C13);
    dp->~S20487C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C13(Test_S20487C13, "S20487C13", ABISELECT(232,160));

#else // __cplusplus

extern void _ZN9S20487C13C1Ev();
extern void _ZN9S20487C13D2Ev();
Name_Map name_map_S20487C13[] = {
  NSPAIR(_ZN9S20487C13C1Ev),
  NSPAIR(_ZN9S20487C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C15;
extern VTBL_ENTRY _ZTI9S20487C15[];
extern  VTBL_ENTRY _ZTV9S20487C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C16;
extern VTBL_ENTRY _ZTI9S20487C16[];
extern  VTBL_ENTRY _ZTV9S20487C16[];
extern Class_Descriptor cd_S20487C14;
extern VTBL_ENTRY _ZTI9S20487C14[];
extern  VTBL_ENTRY _ZTV9S20487C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C3;
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C18;
extern VTBL_ENTRY _ZTI9S20487C18[];
extern  VTBL_ENTRY _ZTV9S20487C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C18[];
static Base_Class bases_S20487C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(112,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
    1, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(112,76), //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
    2, //immediately_derived
  0, 1},
  {&cd_S20487C15,    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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(124,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
    5, //immediately_derived
  0, 1},
  {&cd_S20487C7,    ABISELECT(128,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(152,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
    8, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(161,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
    11, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(164,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
    11, //immediately_derived
  0, 0},
  {&cd_S20487C17,    ABISELECT(152,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(184,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_S20487C5,    ABISELECT(184,124), //bcp->offset
    42, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20487C16,    ABISELECT(152,100), //bcp->offset
    37, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20487C14,    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},
  {&cd_S2014C38,    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
    17, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(56,36), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20487C5,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(209,141), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(212,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
    23, //immediately_derived
  0, 0},
  {&cd_S20487C17,    ABISELECT(200,136), //bcp->offset
    46, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    26, //immediately_derived
  0, 0},
  {&cd_S20487C5,    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
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20487C3,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20487C18,    ABISELECT(72,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20487C13[];
extern void _ZN9S20487C13D1Ev();
extern void _ZN9S20487C13D0Ev();
extern void ABISELECT(_ZThn56_N9S20487C13D1Ev,_ZThn36_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S20487C13D0Ev,_ZThn36_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20487C13D1Ev,_ZThn44_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20487C13D0Ev,_ZThn44_N9S20487C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20487C13D1Ev,_ZThn76_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20487C13D0Ev,_ZThn76_N9S20487C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C13D1Ev,_ZTv0_n24_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S20487C13D1Ev,_ZThn88_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C13D0Ev,_ZTv0_n24_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S20487C13D0Ev,_ZThn88_N9S20487C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S20487C13D1Ev,_ZThn100_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S20487C13D0Ev,_ZThn100_N9S20487C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S20487C13D1Ev,_ZTvn24_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20487C13D0Ev,_ZTvn24_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S20487C13D1Ev,_ZThn136_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S20487C13D0Ev,_ZThn136_N9S20487C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C13[] = {
  0,
  ABISELECT(200,136),
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&_ZN9S20487C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C13D0Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20487C13D1Ev,_ZThn36_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20487C13D0Ev,_ZThn36_N9S20487C13D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20487C13D1Ev,_ZThn44_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20487C13D0Ev,_ZThn44_N9S20487C13D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C13D1Ev,_ZTv0_n24_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C13D0Ev,_ZTv0_n24_N9S20487C13D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C13D1Ev,_ZTvn24_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C13D0Ev,_ZTvn24_n12_N9S20487C13D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20487C13[];
extern void _ZN9S20487C14D1Ev();
extern void _ZN9S20487C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C14__9S20487C13[] = {
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&_ZN9S20487C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C14D0Ev,
};
extern void _ZN9S20487C15D1Ev();
extern void _ZN9S20487C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C159S20487C14__9S20487C13[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&_ZN9S20487C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20487C15D1Ev,_ZThn76_N9S20487C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20487C15D0Ev,_ZThn76_N9S20487C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C159S20487C14__9S20487C13[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20487C14D1Ev,_ZThn76_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20487C14D0Ev,_ZThn76_N9S20487C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C14__9S20487C13[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S20487C14D1Ev,_ZThn88_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S20487C14D0Ev,_ZThn88_N9S20487C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C14__9S20487C13[] = {
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S20487C14D1Ev,_ZThn100_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S20487C14D0Ev,_ZThn100_N9S20487C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20487C16__9S20487C14__9S20487C13[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C59S20487C16__A2__9S20487C14__9S20487C13[] = {
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev),
};
extern void _ZN9S20487C18D1Ev();
extern void _ZN9S20487C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C18__9S20487C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&_ZN9S20487C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C18D0Ev,
};
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C39S20487C18__9S20487C13[] = {
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S20487C3D1Ev,_ZThn44_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S20487C3D0Ev,_ZThn44_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C39S20487C18__9S20487C13[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn32_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn32_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C39S20487C18__9S20487C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev)();
extern void ABISELECT(_ZThn56_N9S20487C18D1Ev,_ZThn44_N9S20487C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev)();
extern void ABISELECT(_ZThn56_N9S20487C18D0Ev,_ZThn44_N9S20487C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C18__9S20487C13[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20487C18D1Ev,_ZThn32_N9S20487C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20487C18D0Ev,_ZThn32_N9S20487C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C18__9S20487C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev),
};
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C13[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__9S20487C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
static  VTT_ENTRY vtt_S20487C13[] = {
  {&(_ZTV9S20487C13[9]),  9,51},
  {&(_tg__ZTV9S20487C14__9S20487C13[7]),  7,9},
  {&(_tg__ZTV9S20487C159S20487C14__9S20487C13[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C159S20487C14__9S20487C13[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C14__9S20487C13[3]),  3,5},
  {&(_tg__ZTV8S20487C7__9S20487C14__9S20487C13[6]),  6,8},
  {&(_tg__ZTV9S20487C16__9S20487C14__9S20487C13[3]),  3,5},
  {&(_tg__ZTV8S20487C59S20487C16__A2__9S20487C14__9S20487C13[2]),  2,4},
  {&(_tg__ZTV9S20487C18__9S20487C13[7]),  7,9},
  {&(_tg__ZTV8S20487C39S20487C18__9S20487C13[6]),  6,8},
  {&(_tg__ZTV8S20487C7__8S20487C39S20487C18__9S20487C13[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C39S20487C18__9S20487C13[3]),  3,5},
  {&(_tg__ZTV8S20487C7__9S20487C18__9S20487C13[6]),  6,8},
  {&(_tg__ZTV8S20487C5__9S20487C18__9S20487C13[3]),  3,5},
  {&(_ZTV9S20487C13[27]),  27,51},
  {&(_ZTV9S20487C13[35]),  35,51},
  {&(_ZTV9S20487C13[40]),  40,51},
  {&(_ZTV9S20487C13[44]),  44,51},
  {&(_ZTV9S20487C13[49]),  49,51},
  {&(_ZTV9S20487C13[22]),  22,51},
  {&(_tg__ZTV8S20487C7__9S20487C13[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__9S20487C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20487C13[];
extern  VTBL_ENTRY _ZTV9S20487C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C13[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20487C18D0Ev,_ZThn32_N9S20487C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20487C18D1Ev,_ZThn32_N9S20487C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C18D0Ev,_ZThn44_N9S20487C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20487C18D1Ev,_ZThn44_N9S20487C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn32_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn32_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20487C3D0Ev,_ZThn44_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20487C3D1Ev,_ZThn44_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20487C14D0Ev,_ZThn88_N9S20487C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20487C14D1Ev,_ZThn88_N9S20487C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20487C14D0Ev,_ZThn100_N9S20487C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C14D0Ev,_ZThn76_N9S20487C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20487C14D1Ev,_ZThn100_N9S20487C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C14D1Ev,_ZThn76_N9S20487C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C15D0Ev,_ZThn76_N9S20487C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C15D1Ev,_ZThn76_N9S20487C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C13D0Ev,_ZTv0_n24_N9S20487C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20487C13D0Ev,_ZThn88_N9S20487C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20487C13D1Ev,_ZTv0_n24_N9S20487C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20487C13D1Ev,_ZThn88_N9S20487C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20487C13D0Ev,_ZThn136_N9S20487C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20487C13D0Ev,_ZThn100_N9S20487C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C13D0Ev,_ZThn76_N9S20487C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20487C13D1Ev,_ZThn136_N9S20487C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20487C13D1Ev,_ZThn100_N9S20487C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C13D1Ev,_ZThn76_N9S20487C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C13 = {  "S20487C13", // class name
  bases_S20487C13, 30,
  &(vtc_S20487C13[0]), // expected_vtbl_contents
  &(vtt_S20487C13[0]), // expected_vtt_contents
  ABISELECT(232,160), // object size
  NSPAIRA(_ZTI9S20487C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20487C13),51, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20487C13),22, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20487C1  : virtual S20487C2 , S19169C11_nt , S2014C24 , virtual S20487C12 , virtual S20487C13 {
  ::S20487C3 s20487c1f0;
  virtual  ~S20487C1(); // _ZN8S20487C1D2Ev
  S20487C1(); // tgen
};
//SIG(1 S20487C1) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd} BC10{ vd m} BC11{ m} VBC12{ BC5 vd} VBC13{ BC14{ BC15{ VBC5 FL} VBC6 VBC8 VBC7 VBC16{ BC17{ BC6 BC5 BC4 BC8 Fs:16 FL} BC5 Fi} vd Fl FC15} BC5 VBC17 BC18{ VBC7 BC3 VBC4 vd FC8[6]} vd} vd FC3}


 S20487C1 ::~S20487C1(){ note_dtor("S20487C1", this);}
S20487C1 ::S20487C1(){ note_ctor("S20487C1", this);} // tgen

static void Test_S20487C1()
{
  extern Class_Descriptor cd_S20487C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S20487C1, buf);
    S20487C1 *dp, &lv = *(dp=new (buf) S20487C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S20487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20487C1)");
    /*is_ambiguous_... S20487C1::S20487C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C3*), ABISELECT(81,45), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C3*), ABISELECT(72,40), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C3 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C3*), ABISELECT(72,40), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C3 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20487C3*), 0, "S20487C1");
    check_base_class_offset(lv, (S2014C28*)(S20487C7*), 0, "S20487C1");
    /*is_ambiguous_... S20487C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20487C14*)(S20487C13*), 0, "S20487C1");
    check_base_class_offset(lv, (S2014C28*)(S20487C3*)(S20487C18*)(S20487C13*), 0, "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*), ABISELECT(112,60), "S20487C1");
    check_base_class_offset(lv, (S20487C5*)(S20487C7*), ABISELECT(112,60), "S20487C1");
    check_base_class_offset(lv, (S20487C5*)(S20487C15*)(S20487C14*)(S20487C13*), ABISELECT(112,60), "S20487C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C7*), ABISELECT(124,68), "S20487C1");
    /*is_ambiguous_... S20487C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20487C14*)(S20487C13*), ABISELECT(124,68), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C3 */ AMB_check_base_class_offset(lv, (S20487C7*)(S20487C3*), ABISELECT(88,48), "S20487C1");
    check_base_class_offset(lv, (S20487C7*)(S20487C14*)(S20487C13*), ABISELECT(88,48), "S20487C1");
    check_base_class_offset(lv, (S20487C7*)(S20487C18*)(S20487C13*), ABISELECT(88,48), "S20487C1");
    check_base_class_offset(lv, (S20487C7*)(S20487C3*)(S20487C18*)(S20487C13*), ABISELECT(88,48), "S20487C1");
    check_base_class_offset(lv, (S20487C3*)(S20487C2*), ABISELECT(72,40), "S20487C1");
    check_base_class_offset(lv, (S20487C2*), ABISELECT(64,36), "S20487C1");
    check_base_class_offset(lv, (S19169C11_nt*), 0, "S20487C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S20487C1");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C12*), ABISELECT(128,72), "S20487C1");
    check_base_class_offset(lv, (S20487C5*)(S20487C12*), ABISELECT(128,72), "S20487C1");
    check_base_class_offset(lv, (S20487C12*), ABISELECT(128,72), "S20487C1");
    check_base_class_offset(lv, (S20487C15*)(S20487C14*)(S20487C13*), ABISELECT(144,80), "S20487C1");
    check_base_class_offset(lv, (S2014C28*)(S20487C17*)(S20487C16*), ABISELECT(256,156), "S20487C1");
    check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(256,156), "S20487C1");
    check_base_class_offset(lv, (S20487C5*)(S20487C17*)(S20487C16*), ABISELECT(256,156), "S20487C1");
    /*is_ambiguous_... S20487C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*)(S20487C16*), ABISELECT(265,161), "S20487C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*)(S20487C16*), ABISELECT(268,164), "S20487C1");
    check_base_class_offset(lv, (S20487C17*)(S20487C16*), ABISELECT(256,156), "S20487C1");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C16*), ABISELECT(288,180), "S20487C1");
    /*is_ambiguous_... S20487C16::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C16*), ABISELECT(288,180), "S20487C1");
    check_base_class_offset(lv, (S20487C16*)(S20487C14*)(S20487C13*), ABISELECT(256,156), "S20487C1");
    check_base_class_offset(lv, (S20487C14*)(S20487C13*), ABISELECT(144,80), "S20487C1");
    /*is_ambiguous_... S20487C13::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C13*), ABISELECT(200,116), "S20487C1");
    /*is_ambiguous_... S20487C13::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C13*), ABISELECT(200,116), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20487C17*), ABISELECT(304,192), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C17*), ABISELECT(304,192), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C17 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C17*), ABISELECT(304,192), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C17*), ABISELECT(313,197), "S20487C1");
    /*is_ambiguous_... S20487C1::S20487C17 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20487C17*), ABISELECT(316,200), "S20487C1");
    /*is_ambiguous_... S20487C13::S20487C17 */ AMB_check_base_class_offset(lv, (S20487C17*)(S20487C13*), ABISELECT(304,192), "S20487C1");
    /*is_ambiguous_... S20487C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C3*)(S20487C18*)(S20487C13*), ABISELECT(225,129), "S20487C1");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C5*)(S20487C3*)(S20487C18*)(S20487C13*), ABISELECT(216,124), "S20487C1");
    /*is_ambiguous_... S20487C3::S20487C5 */ AMB_check_base_class_offset(lv, (S20487C5*)(S20487C3*)(S20487C18*)(S20487C13*), ABISELECT(216,124), "S20487C1");
    check_base_class_offset(lv, (S20487C3*)(S20487C18*)(S20487C13*), ABISELECT(216,124), "S20487C1");
    /*is_ambiguous_... S20487C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20487C18*)(S20487C13*), 0, "S20487C1");
    check_base_class_offset(lv, (S20487C18*)(S20487C13*), ABISELECT(216,124), "S20487C1");
    check_base_class_offset(lv, (S20487C13*), ABISELECT(144,80), "S20487C1");
    check_field_offset(lv, s20487c1f0, ABISELECT(8,4), "S20487C1.s20487c1f0");
    test_class_info(&lv, &cd_S20487C1);
    dp->~S20487C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20487C1(Test_S20487C1, "S20487C1", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S20487C1C1Ev();
extern void _ZN8S20487C1D2Ev();
Name_Map name_map_S20487C1[] = {
  NSPAIR(_ZN8S20487C1C1Ev),
  NSPAIR(_ZN8S20487C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C7;
extern VTBL_ENTRY _ZTI8S20487C7[];
extern  VTBL_ENTRY _ZTV8S20487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C7[];
extern Class_Descriptor cd_S20487C3;
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
extern Class_Descriptor cd_S20487C2;
extern VTBL_ENTRY _ZTI8S20487C2[];
extern  VTBL_ENTRY _ZTV8S20487C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C2[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C12;
extern VTBL_ENTRY _ZTI9S20487C12[];
extern  VTBL_ENTRY _ZTV9S20487C12[];
extern Class_Descriptor cd_S20487C15;
extern VTBL_ENTRY _ZTI9S20487C15[];
extern  VTBL_ENTRY _ZTV9S20487C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C16;
extern VTBL_ENTRY _ZTI9S20487C16[];
extern  VTBL_ENTRY _ZTV9S20487C16[];
extern Class_Descriptor cd_S20487C14;
extern VTBL_ENTRY _ZTI9S20487C14[];
extern  VTBL_ENTRY _ZTV9S20487C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20487C17;
extern VTBL_ENTRY _ZTI9S20487C17[];
extern  VTBL_ENTRY _ZTV9S20487C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C5;
extern VTBL_ENTRY _ZTI8S20487C5[];
extern  VTBL_ENTRY _ZTV8S20487C5[];
extern Class_Descriptor cd_S20487C3;
extern VTBL_ENTRY _ZTI8S20487C3[];
extern  VTBL_ENTRY _ZTV8S20487C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20487C18;
extern VTBL_ENTRY _ZTI9S20487C18[];
extern  VTBL_ENTRY _ZTV9S20487C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C18[];
extern Class_Descriptor cd_S20487C13;
extern VTBL_ENTRY _ZTI9S20487C13[];
extern  VTBL_ENTRY _ZTV9S20487C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20487C13[];
static Base_Class bases_S20487C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(81,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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(72,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
    2, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(72,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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(112,60), //bcp->offset
    42, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(124,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
    7, //immediately_derived
  0, 1},
  {&cd_S20487C7,    ABISELECT(88,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20487C3,    ABISELECT(72,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20487C2,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C11_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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    ABISELECT(128,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
    13, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(128,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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20487C12,    ABISELECT(128,72), //bcp->offset
    47, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20487C15,    ABISELECT(144,80), //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
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(256,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
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(256,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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(256,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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(265,161), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(268,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
    21, //immediately_derived
  0, 0},
  {&cd_S20487C17,    ABISELECT(256,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
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(288,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
    23, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(288,180), //bcp->offset
    82, //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
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20487C16,    ABISELECT(256,156), //bcp->offset
    77, //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
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20487C14,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(200,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
    27, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(200,116), //bcp->offset
    64, //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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(304,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
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(304,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
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(304,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
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(313,197), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(316,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
    33, //immediately_derived
  0, 0},
  {&cd_S20487C17,    ABISELECT(304,192), //bcp->offset
    86, //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
    13, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(225,129), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(216,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
    36, //immediately_derived
  0, 0},
  {&cd_S20487C5,    ABISELECT(216,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
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20487C3,    ABISELECT(216,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20487C18,    ABISELECT(216,124), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20487C13,    ABISELECT(144,80), //bcp->offset
    52, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20487C1[];
extern void _ZN8S20487C1D1Ev();
extern void _ZN8S20487C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S20487C1D1Ev,_ZTv0_n32_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20487C1D1Ev,_ZThn36_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20487C1D0Ev,_ZTv0_n32_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20487C1D0Ev,_ZThn36_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20487C1D1Ev,_ZTv0_n28_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20487C1D1Ev,_ZThn40_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20487C1D0Ev,_ZTv0_n28_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20487C1D0Ev,_ZThn40_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C1D1Ev,_ZTv0_n24_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20487C1D1Ev,_ZThn48_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C1D0Ev,_ZTv0_n24_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20487C1D0Ev,_ZThn48_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20487C1D1Ev,_ZThn60_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20487C1D0Ev,_ZThn60_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20487C1D1Ev,_ZThn72_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20487C1D0Ev,_ZThn72_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20487C1D1Ev,_ZTv0_n40_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20487C1D1Ev,_ZThn80_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20487C1D0Ev,_ZTv0_n40_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20487C1D0Ev,_ZThn80_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn56_n80_N8S20487C1D1Ev,_ZTvn36_n40_N8S20487C1D1Ev)();
extern void ABISELECT(_ZTvn56_n80_N8S20487C1D0Ev,_ZTvn36_n40_N8S20487C1D0Ev)();
extern void ABISELECT(_ZTvn72_n80_N8S20487C1D1Ev,_ZTvn44_n40_N8S20487C1D1Ev)();
extern void ABISELECT(_ZTvn72_n80_N8S20487C1D0Ev,_ZTvn44_n40_N8S20487C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20487C1D1Ev,_ZThn156_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20487C1D0Ev,_ZThn156_N8S20487C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S20487C1D1Ev,_ZTvn24_n12_N8S20487C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S20487C1D0Ev,_ZTvn24_n12_N8S20487C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S20487C1D1Ev,_ZThn192_N8S20487C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S20487C1D0Ev,_ZThn192_N8S20487C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20487C1[] = {
  0,
  ABISELECT(304,192),
  ABISELECT(256,156),
  ABISELECT(144,80),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(112,60),
  ABISELECT(88,48),
  0,
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&_ZN8S20487C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C1D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20487C1D1Ev,_ZTv0_n32_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20487C1D0Ev,_ZTv0_n32_N8S20487C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C1D1Ev,_ZTv0_n28_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C1D0Ev,_ZTv0_n28_N8S20487C1D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C1D1Ev,_ZTv0_n24_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C1D0Ev,_ZTv0_n24_N8S20487C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(160,112),
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20487C1D1Ev,_ZTv0_n40_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20487C1D0Ev,_ZTv0_n40_N8S20487C1D0Ev),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n80_N8S20487C1D1Ev,_ZTvn36_n40_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n80_N8S20487C1D0Ev,_ZTvn36_n40_N8S20487C1D0Ev),
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n80_N8S20487C1D1Ev,_ZTvn44_n40_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n80_N8S20487C1D0Ev,_ZTvn44_n40_N8S20487C1D0Ev),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S20487C1D1Ev,_ZTvn24_n12_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S20487C1D0Ev,_ZTvn24_n12_N8S20487C1D0Ev),
  ABISELECT(-304,-192),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI8S20487C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20487C1[];
extern void _ZN8S20487C2D1Ev();
extern void _ZN8S20487C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C2__8S20487C1[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&_ZN8S20487C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20487C2D1Ev,_ZThn4_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20487C2D0Ev,_ZThn4_N8S20487C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C3__8S20487C2__8S20487C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C2D1Ev,_ZThn12_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C2D0Ev,_ZThn12_N8S20487C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C2__8S20487C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20487C2D1Ev,_ZThn24_N8S20487C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20487C2D0Ev,_ZThn24_N8S20487C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C2__8S20487C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20487C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev),
};
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C3__8S20487C1[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C3__8S20487C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C3__8S20487C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern void _ZN8S20487C7D1Ev();
extern void _ZN8S20487C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C1[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&_ZN8S20487C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20487C5__8S20487C7__8S20487C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20487C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev),
};
extern void _ZN9S20487C13D1Ev();
extern void _ZN9S20487C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C13__8S20487C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(160,112),
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&_ZN9S20487C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C13D0Ev,
};
extern void _ZN9S20487C14D1Ev();
extern void _ZN9S20487C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&_ZN9S20487C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C14D0Ev,
};
extern void _ZN9S20487C15D1Ev();
extern void _ZN9S20487C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C159S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&_ZN9S20487C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C159S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20487C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D1Ev,_ZTv0_n12_N9S20487C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C15D0Ev,_ZTv0_n12_N9S20487C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(56,32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D1Ev,_ZTv0_n24_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C14D0Ev,_ZTv0_n24_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20487C14D1Ev,_ZThn76_N9S20487C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20487C14D0Ev,_ZThn76_N9S20487C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20487C16__9S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C59S20487C16__A2__9S20487C149S20487C13__8S20487C1[] = {
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI9S20487C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D1Ev,_ZTvn24_n12_N9S20487C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C14D0Ev,_ZTvn24_n12_N9S20487C14D0Ev),
};
extern void _ZN9S20487C18D1Ev();
extern void _ZN9S20487C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20487C189S20487C13__8S20487C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&_ZN9S20487C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20487C18D0Ev,
};
extern void _ZN8S20487C3D1Ev();
extern void _ZN8S20487C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20487C39S20487C189S20487C13__A1__8S20487C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&_ZN8S20487C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20487C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C7__8S20487C39S20487C189S20487C13__A1__8S20487C1[] = {
  ABISELECT(128,76),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__A1__8S20487C39S20487C189S20487C13__A1__8S20487C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20487C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C189S20487C13__8S20487C1[] = {
  ABISELECT(128,76),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D1Ev,_ZTv0_n24_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C18D0Ev,_ZTv0_n24_N9S20487C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C189S20487C13__8S20487C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20487C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D1Ev,_ZTv0_n12_N9S20487C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C18D0Ev,_ZTv0_n12_N9S20487C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C5__9S20487C13__8S20487C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20487C13D1Ev,_ZTv0_n24_N9S20487C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20487C13D0Ev,_ZTv0_n24_N9S20487C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C7__9S20487C13__8S20487C1[] = {
  ABISELECT(56,32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C13D1Ev,_ZTv0_n24_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20487C13D0Ev,_ZTv0_n24_N9S20487C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20487C13D1Ev,_ZThn76_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20487C13D0Ev,_ZThn76_N9S20487C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20487C16__9S20487C13__8S20487C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20487C13D1Ev,_ZTvn24_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20487C13D0Ev,_ZTvn24_n12_N9S20487C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20487C59S20487C16__A2__9S20487C13__8S20487C1[] = {
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C13D1Ev,_ZTvn24_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20487C13D0Ev,_ZTvn24_n12_N9S20487C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S20487C13D1Ev,_ZThn112_N9S20487C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S20487C13D0Ev,_ZThn112_N9S20487C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20487C17__A1__9S20487C13__8S20487C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev),
};
extern void ABISELECT(_ZThn72_N9S20487C13D1Ev,_ZThn44_N9S20487C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20487C13D0Ev,_ZThn44_N9S20487C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20487C18__9S20487C13__8S20487C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20487C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20487C13D1Ev,_ZThn44_N9S20487C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20487C13D0Ev,_ZThn44_N9S20487C13D0Ev),
};
static  VTT_ENTRY vtt_S20487C1[] = {
  {&(_ZTV8S20487C1[13]),  13,91},
  {&(_ZTV8S20487C1[23]),  23,91},
  {&(_ZTV8S20487C1[32]),  32,91},
  {&(_ZTV8S20487C1[40]),  40,91},
  {&(_ZTV8S20487C1[45]),  45,91},
  {&(_ZTV8S20487C1[50]),  50,91},
  {&(_ZTV8S20487C1[62]),  62,91},
  {&(_ZTV8S20487C1[80]),  80,91},
  {&(_ZTV8S20487C1[84]),  84,91},
  {&(_ZTV8S20487C1[66]),  66,91},
  {&(_ZTV8S20487C1[89]),  89,91},
  {&(_ZTV8S20487C1[75]),  75,91},
  {&(_tg__ZTV8S20487C2__8S20487C1[7]),  7,9},
  {&(_tg__ZTV8S20487C3__8S20487C2__8S20487C1[7]),  7,9},
  {&(_tg__ZTV8S20487C7__8S20487C2__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C2__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C3__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C7__8S20487C3__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C3__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C7__8S20487C1[5]),  5,7},
  {&(_tg__ZTV8S20487C5__8S20487C7__8S20487C1[3]),  3,5},
  {&(_tg__ZTV9S20487C13__8S20487C1[9]),  9,11},
  {&(_tg__ZTV9S20487C149S20487C13__8S20487C1[7]),  7,9},
  {&(_tg__ZTV9S20487C159S20487C149S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C159S20487C149S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C149S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C7__9S20487C149S20487C13__8S20487C1[6]),  6,8},
  {&(_tg__ZTV9S20487C16__9S20487C149S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C59S20487C16__A2__9S20487C149S20487C13__8S20487C1[2]),  2,4},
  {&(_tg__ZTV9S20487C189S20487C13__8S20487C1[7]),  7,9},
  {&(_tg__ZTV8S20487C39S20487C189S20487C13__A1__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C7__8S20487C39S20487C189S20487C13__A1__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C5__A1__8S20487C39S20487C189S20487C13__A1__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C7__9S20487C189S20487C13__8S20487C1[6]),  6,8},
  {&(_tg__ZTV8S20487C5__9S20487C189S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C5__9S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C7__9S20487C13__8S20487C1[6]),  6,8},
  {&(_tg__ZTV9S20487C16__9S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV8S20487C59S20487C16__A2__9S20487C13__8S20487C1[2]),  2,4},
  {&(_tg__ZTV9S20487C17__A1__9S20487C13__8S20487C1[3]),  3,5},
  {&(_tg__ZTV9S20487C18__9S20487C13__8S20487C1[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20487C1[];
extern  VTBL_ENTRY _ZTV8S20487C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20487C1[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C13D0Ev,_ZTv0_n12_N9S20487C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20487C13D0Ev,_ZThn112_N9S20487C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C13D0Ev,_ZThn76_N9S20487C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C13D1Ev,_ZTv0_n12_N9S20487C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20487C13D1Ev,_ZThn112_N9S20487C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C13D1Ev,_ZThn76_N9S20487C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D0Ev,_ZTv0_n12_N9S20487C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C14D0Ev,_ZThn76_N9S20487C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20487C14D1Ev,_ZTv0_n12_N9S20487C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20487C14D1Ev,_ZThn76_N9S20487C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D0Ev,_ZTv0_n12_N8S20487C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D0Ev,_ZThn12_N8S20487C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C7D1Ev,_ZTv0_n12_N8S20487C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C7D1Ev,_ZThn12_N8S20487C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D0Ev,_ZTv0_n12_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D0Ev,_ZThn20_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C3D1Ev,_ZTv0_n12_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20487C3D1Ev,_ZThn20_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D0Ev,_ZTv0_n24_N8S20487C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D0Ev,_ZThn8_N8S20487C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C3D1Ev,_ZTv0_n24_N8S20487C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20487C3D1Ev,_ZThn8_N8S20487C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C2D0Ev,_ZTv0_n12_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20487C2D0Ev,_ZThn24_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C2D1Ev,_ZTv0_n12_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20487C2D1Ev,_ZThn24_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C2D0Ev,_ZTv0_n24_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C2D0Ev,_ZThn12_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C2D1Ev,_ZTv0_n24_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20487C2D1Ev,_ZThn12_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C2D0Ev,_ZTv0_n28_N8S20487C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20487C2D0Ev,_ZThn4_N8S20487C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C2D1Ev,_ZTv0_n28_N8S20487C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20487C2D1Ev,_ZThn4_N8S20487C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20487C1D0Ev,_ZTv0_n40_N8S20487C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20487C1D0Ev,_ZThn80_N8S20487C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20487C1D1Ev,_ZTv0_n40_N8S20487C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20487C1D1Ev,_ZThn80_N8S20487C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C1D0Ev,_ZTv0_n12_N8S20487C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20487C1D0Ev,_ZThn192_N8S20487C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20487C1D0Ev,_ZThn156_N8S20487C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20487C1D0Ev,_ZThn72_N8S20487C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20487C1D0Ev,_ZThn60_N8S20487C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20487C1D1Ev,_ZTv0_n12_N8S20487C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20487C1D1Ev,_ZThn192_N8S20487C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20487C1D1Ev,_ZThn156_N8S20487C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20487C1D1Ev,_ZThn72_N8S20487C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20487C1D1Ev,_ZThn60_N8S20487C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C1D0Ev,_ZTv0_n24_N8S20487C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20487C1D0Ev,_ZThn48_N8S20487C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20487C1D1Ev,_ZTv0_n24_N8S20487C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20487C1D1Ev,_ZThn48_N8S20487C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C1D0Ev,_ZTv0_n28_N8S20487C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20487C1D0Ev,_ZThn40_N8S20487C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20487C1D1Ev,_ZTv0_n28_N8S20487C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20487C1D1Ev,_ZThn40_N8S20487C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20487C1D0Ev,_ZTv0_n32_N8S20487C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20487C1D0Ev,_ZThn36_N8S20487C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20487C1D1Ev,_ZTv0_n32_N8S20487C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20487C1D1Ev,_ZThn36_N8S20487C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20487C1 = {  "S20487C1", // class name
  bases_S20487C1, 41,
  &(vtc_S20487C1[0]), // expected_vtbl_contents
  &(vtt_S20487C1[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S20487C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20487C1),91, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20487C1),41, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C5  : S2014C38 {
  ::S2014C38 s20486c5f0;
  virtual  ~S20486C5(); // _ZN8S20486C5D1Ev
  S20486C5(); // tgen
};
//SIG(-1 S20486C5) C1{ BC2{ m} vd FC2}


 S20486C5 ::~S20486C5(){ note_dtor("S20486C5", this);}
S20486C5 ::S20486C5(){ note_ctor("S20486C5", this);} // tgen

static void Test_S20486C5()
{
  extern Class_Descriptor cd_S20486C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20486C5, buf);
    S20486C5 *dp, &lv = *(dp=new (buf) S20486C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20486C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C5)");
    check_base_class_offset(lv, (S2014C38*), 0, "S20486C5");
    check_field_offset(lv, s20486c5f0, ABISELECT(8,4), "S20486C5.s20486c5f0");
    test_class_info(&lv, &cd_S20486C5);
    dp->~S20486C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C5(Test_S20486C5, "S20486C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20486C5C1Ev();
extern void _ZN8S20486C5D1Ev();
Name_Map name_map_S20486C5[] = {
  NSPAIR(_ZN8S20486C5C1Ev),
  NSPAIR(_ZN8S20486C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S20486C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20486C5[];
extern void _ZN8S20486C5D1Ev();
extern void _ZN8S20486C5D0Ev();
static  VTBL_ENTRY vtc_S20486C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C5[0]),
  (VTBL_ENTRY)&_ZN8S20486C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C5D0Ev,
};
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
Class_Descriptor cd_S20486C5 = {  "S20486C5", // class name
  bases_S20486C5, 1,
  &(vtc_S20486C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20486C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20486C5),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  S20486C7  : virtual S2014C28 , virtual S20486C5 , virtual S3222C8_nt {
  void *s20486c7f0;
  ::S19762C18_nt s20486c7f1;
  virtual  ~S20486C7(); // _ZN8S20486C7D2Ev
  S20486C7(); // tgen
};
//SIG(-1 S20486C7) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S20486C7 ::~S20486C7(){ note_dtor("S20486C7", this);}
S20486C7 ::S20486C7(){ note_ctor("S20486C7", this);} // tgen

static void Test_S20486C7()
{
  extern Class_Descriptor cd_S20486C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20486C7, buf);
    S20486C7 *dp, &lv = *(dp=new (buf) S20486C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20486C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C7)");
    check_base_class_offset(lv, (S2014C28*), 0, "S20486C7");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(24,12), "S20486C7");
    check_base_class_offset(lv, (S20486C5*), ABISELECT(24,12), "S20486C7");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S20486C7");
    check_field_offset(lv, s20486c7f0, ABISELECT(8,4), "S20486C7.s20486c7f0");
    check_field_offset(lv, s20486c7f1, ABISELECT(16,8), "S20486C7.s20486c7f1");
    test_class_info(&lv, &cd_S20486C7);
    dp->~S20486C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C7(Test_S20486C7, "S20486C7", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20486C7C1Ev();
extern void _ZN8S20486C7D2Ev();
Name_Map name_map_S20486C7[] = {
  NSPAIR(_ZN8S20486C7C1Ev),
  NSPAIR(_ZN8S20486C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S20486C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20486C7[];
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C7[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20486C7[];
static  VTT_ENTRY vtt_S20486C7[] = {
  {&(_ZTV8S20486C7[5]),  5,12},
  {&(_ZTV8S20486C7[10]),  10,12},
};
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C7 = {  "S20486C7", // class name
  bases_S20486C7, 4,
  &(vtc_S20486C7[0]), // expected_vtbl_contents
  &(vtt_S20486C7[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20486C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20486C7),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20486C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C3  : S2014C38 , S20486C5 , virtual S2014C28 , virtual S20486C7 {
  virtual  ~S20486C3(); // _ZN8S20486C3D2Ev
  S20486C3(); // tgen
};
//SIG(-1 S20486C3) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S20486C3 ::~S20486C3(){ note_dtor("S20486C3", this);}
S20486C3 ::S20486C3(){ note_ctor("S20486C3", this);} // tgen

static void Test_S20486C3()
{
  extern Class_Descriptor cd_S20486C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20486C3, buf);
    S20486C3 *dp, &lv = *(dp=new (buf) S20486C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20486C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C3)");
    /*is_ambiguous_... S20486C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S20486C3");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), 0, "S20486C3");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*), 0, "S20486C3");
    check_base_class_offset(lv, (S2014C28*), 0, "S20486C3");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C3");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(40,20), "S20486C3");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(40,20), "S20486C3");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(52,28), "S20486C3");
    check_base_class_offset(lv, (S20486C7*), ABISELECT(16,8), "S20486C3");
    test_class_info(&lv, &cd_S20486C3);
    dp->~S20486C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C3(Test_S20486C3, "S20486C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20486C3C1Ev();
extern void _ZN8S20486C3D2Ev();
Name_Map name_map_S20486C3[] = {
  NSPAIR(_ZN8S20486C3C1Ev),
  NSPAIR(_ZN8S20486C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
static Base_Class bases_S20486C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S20486C7,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S20486C3[];
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C3[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20486C3[];
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C3[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__8S20486C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
static  VTT_ENTRY vtt_S20486C3[] = {
  {&(_ZTV8S20486C3[6]),  6,21},
  {&(_ZTV8S20486C3[14]),  14,21},
  {&(_ZTV8S20486C3[19]),  19,21},
  {&(_tg__ZTV8S20486C7__8S20486C3[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__8S20486C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C3 = {  "S20486C3", // class name
  bases_S20486C3, 8,
  &(vtc_S20486C3[0]), // expected_vtbl_contents
  &(vtt_S20486C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20486C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20486C3),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20486C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C2  : virtual S20486C3 {
  virtual  ~S20486C2(); // _ZN8S20486C2D2Ev
  S20486C2(); // tgen
};
//SIG(-1 S20486C2) C1{ VBC2{ BC3{ m} BC4{ BC3 vd FC3} VBC5{ m} VBC6{ VBC5 VBC4 VBC7{ m Fi} vd Fp FC8{}} vd} vd}


 S20486C2 ::~S20486C2(){ note_dtor("S20486C2", this);}
S20486C2 ::S20486C2(){ note_ctor("S20486C2", this);} // tgen

static void Test_S20486C2()
{
  extern Class_Descriptor cd_S20486C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20486C2, buf);
    S20486C2 *dp, &lv = *(dp=new (buf) S20486C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20486C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C2)");
    /*is_ambiguous_... S20486C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C3*), ABISELECT(17,9), "S20486C2");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C3*), ABISELECT(8,4), "S20486C2");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C3*), ABISELECT(8,4), "S20486C2");
    check_base_class_offset(lv, (S2014C28*)(S20486C3*), 0, "S20486C2");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C2");
    /*is_ambiguous_... S20486C2::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(48,24), "S20486C2");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(48,24), "S20486C2");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(60,32), "S20486C2");
    check_base_class_offset(lv, (S20486C7*)(S20486C3*), ABISELECT(24,12), "S20486C2");
    check_base_class_offset(lv, (S20486C3*), ABISELECT(8,4), "S20486C2");
    test_class_info(&lv, &cd_S20486C2);
    dp->~S20486C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C2(Test_S20486C2, "S20486C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S20486C2C1Ev();
extern void _ZN8S20486C2D2Ev();
Name_Map name_map_S20486C2[] = {
  NSPAIR(_ZN8S20486C2C1Ev),
  NSPAIR(_ZN8S20486C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
extern Class_Descriptor cd_S20486C3;
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
static Base_Class bases_S20486C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    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_S20486C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(48,24), //bcp->offset
    26, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    7, //immediately_derived
  0, 1},
  {&cd_S20486C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S20486C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //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 _ZTI8S20486C2[];
extern void _ZN8S20486C2D1Ev();
extern void _ZN8S20486C2D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20486C2D1Ev,_ZThn4_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20486C2D0Ev,_ZThn4_N8S20486C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C2D1Ev,_ZThn12_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C2D0Ev,_ZThn12_N8S20486C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20486C2D1Ev,_ZThn24_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20486C2D0Ev,_ZThn24_N8S20486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C2[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&_ZN8S20486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20486C2[];
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C3__8S20486C2[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C3__8S20486C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C3__8S20486C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C2[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__8S20486C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
static  VTT_ENTRY vtt_S20486C2[] = {
  {&(_ZTV8S20486C2[7]),  7,31},
  {&(_ZTV8S20486C2[16]),  16,31},
  {&(_ZTV8S20486C2[24]),  24,31},
  {&(_ZTV8S20486C2[29]),  29,31},
  {&(_tg__ZTV8S20486C3__8S20486C2[6]),  6,8},
  {&(_tg__ZTV8S20486C7__8S20486C3__8S20486C2[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C3__8S20486C2[3]),  3,5},
  {&(_tg__ZTV8S20486C7__8S20486C2[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__8S20486C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20486C2[];
extern  VTBL_ENTRY _ZTV8S20486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C2[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20486C2D0Ev,_ZThn24_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20486C2D1Ev,_ZThn24_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C2D0Ev,_ZThn12_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C2D1Ev,_ZThn12_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20486C2D0Ev,_ZThn4_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20486C2D1Ev,_ZThn4_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C2 = {  "S20486C2", // class name
  bases_S20486C2, 9,
  &(vtc_S20486C2[0]), // expected_vtbl_contents
  &(vtt_S20486C2[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S20486C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20486C2),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20486C2),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C12  : S20486C5 {
  virtual  ~S20486C12(); // _ZN9S20486C12D1Ev
  S20486C12(); // tgen
};
//SIG(-1 S20486C12) C1{ BC2{ BC3{ m} vd FC3} vd}


 S20486C12 ::~S20486C12(){ note_dtor("S20486C12", this);}
S20486C12 ::S20486C12(){ note_ctor("S20486C12", this);} // tgen

static void Test_S20486C12()
{
  extern Class_Descriptor cd_S20486C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20486C12, buf);
    S20486C12 *dp, &lv = *(dp=new (buf) S20486C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20486C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C12)");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*), 0, "S20486C12");
    check_base_class_offset(lv, (S20486C5*), 0, "S20486C12");
    test_class_info(&lv, &cd_S20486C12);
    dp->~S20486C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C12(Test_S20486C12, "S20486C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20486C12C1Ev();
extern void _ZN9S20486C12D1Ev();
Name_Map name_map_S20486C12[] = {
  NSPAIR(_ZN9S20486C12C1Ev),
  NSPAIR(_ZN9S20486C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
static Base_Class bases_S20486C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S20486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI9S20486C12[];
extern void _ZN9S20486C12D1Ev();
extern void _ZN9S20486C12D0Ev();
static  VTBL_ENTRY vtc_S20486C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C12[0]),
  (VTBL_ENTRY)&_ZN9S20486C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C12D0Ev,
};
extern VTBL_ENTRY _ZTI9S20486C12[];
extern  VTBL_ENTRY _ZTV9S20486C12[];
Class_Descriptor cd_S20486C12 = {  "S20486C12", // class name
  bases_S20486C12, 2,
  &(vtc_S20486C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20486C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20486C12),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  S20486C15  : virtual S20486C5 {
  __tsi64 s20486c15f0;
  ~S20486C15(); // tgen
  S20486C15(); // tgen
};
//SIG(-1 S20486C15) C1{ VBC2{ BC3{ m} vd FC3} FL}


S20486C15 ::~S20486C15(){ note_dtor("S20486C15", this);} // tgen
S20486C15 ::S20486C15(){ note_ctor("S20486C15", this);} // tgen

static void Test_S20486C15()
{
  extern Class_Descriptor cd_S20486C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20486C15, buf);
    S20486C15 *dp, &lv = *(dp=new (buf) S20486C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20486C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C15)");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(16,12), "S20486C15");
    check_base_class_offset(lv, (S20486C5*), ABISELECT(16,12), "S20486C15");
    check_field_offset(lv, s20486c15f0, ABISELECT(8,4), "S20486C15.s20486c15f0");
    test_class_info(&lv, &cd_S20486C15);
    dp->~S20486C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C15(Test_S20486C15, "S20486C15", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20486C15C1Ev();
extern void _ZN9S20486C15D1Ev();
Name_Map name_map_S20486C15[] = {
  NSPAIR(_ZN9S20486C15C1Ev),
  NSPAIR(_ZN9S20486C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
static Base_Class bases_S20486C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S20486C5,    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 _ZTI9S20486C15[];
extern void _ZN9S20486C15D1Ev();
extern void _ZN9S20486C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20486C15D1Ev,_ZThn12_N9S20486C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20486C15D0Ev,_ZThn12_N9S20486C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C15[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&_ZN9S20486C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C15D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20486C15[];
static  VTT_ENTRY vtt_S20486C15[] = {
  {&(_ZTV9S20486C15[3]),  3,10},
  {&(_ZTV9S20486C15[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20486C15[];
extern  VTBL_ENTRY _ZTV9S20486C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C15[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20486C15D0Ev,_ZThn12_N9S20486C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20486C15D1Ev,_ZThn12_N9S20486C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C15 = {  "S20486C15", // class name
  bases_S20486C15, 2,
  &(vtc_S20486C15[0]), // expected_vtbl_contents
  &(vtt_S20486C15[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20486C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20486C15),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20486C15),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C17  : S2014C28 , S20486C5 , S2014C38 , S3222C8_nt {
  short s20486c17f0:16;
  long s20486c17f1;
  ~S20486C17(); // tgen
  S20486C17(); // tgen
};
//SIG(-1 S20486C17) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 Fl}


S20486C17 ::~S20486C17(){ note_dtor("S20486C17", this);} // tgen
S20486C17 ::S20486C17(){ note_ctor("S20486C17", this);} // tgen

static void Test_S20486C17()
{
  extern Class_Descriptor cd_S20486C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20486C17, buf);
    S20486C17 *dp, &lv = *(dp=new (buf) S20486C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20486C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C17)");
    check_base_class_offset(lv, (S2014C28*), 0, "S20486C17");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*), 0, "S20486C17");
    check_base_class_offset(lv, (S20486C5*), 0, "S20486C17");
    /*is_ambiguous_... S20486C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S20486C17");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S20486C17");
    set_bf_and_test(lv, s20486c17f0, ABISELECT(16,12), 0, 16, 1, "S20486C17");
    set_bf_and_test(lv, s20486c17f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S20486C17");
    check_field_offset(lv, s20486c17f1, ABISELECT(24,16), "S20486C17.s20486c17f1");
    test_class_info(&lv, &cd_S20486C17);
    dp->~S20486C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C17(Test_S20486C17, "S20486C17", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20486C17C1Ev();
extern void _ZN9S20486C17D1Ev();
Name_Map name_map_S20486C17[] = {
  NSPAIR(_ZN9S20486C17C1Ev),
  NSPAIR(_ZN9S20486C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S20486C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI9S20486C17[];
extern void _ZN9S20486C17D1Ev();
extern void _ZN9S20486C17D0Ev();
static  VTBL_ENTRY vtc_S20486C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C17[0]),
  (VTBL_ENTRY)&_ZN9S20486C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C17D0Ev,
};
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
Class_Descriptor cd_S20486C17 = {  "S20486C17", // class name
  bases_S20486C17, 5,
  &(vtc_S20486C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20486C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20486C17),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  S20486C16  : S20486C17 , S20486C5 {
  int s20486c16f0;
  ~S20486C16(); // tgen
  S20486C16(); // tgen
};
//SIG(-1 S20486C16) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 Fl} BC4 Fi}


S20486C16 ::~S20486C16(){ note_dtor("S20486C16", this);} // tgen
S20486C16 ::S20486C16(){ note_ctor("S20486C16", this);} // tgen

static void Test_S20486C16()
{
  extern Class_Descriptor cd_S20486C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20486C16, buf);
    S20486C16 *dp, &lv = *(dp=new (buf) S20486C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20486C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C16)");
    check_base_class_offset(lv, (S2014C28*)(S20486C17*), 0, "S20486C16");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*), 0, "S20486C16");
    check_base_class_offset(lv, (S20486C5*)(S20486C17*), 0, "S20486C16");
    /*is_ambiguous_... S20486C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*), ABISELECT(9,5), "S20486C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*), ABISELECT(12,8), "S20486C16");
    check_base_class_offset(lv, (S20486C17*), 0, "S20486C16");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(32,20), "S20486C16");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*), ABISELECT(32,20), "S20486C16");
    check_field_offset(lv, s20486c16f0, ABISELECT(44,28), "S20486C16.s20486c16f0");
    test_class_info(&lv, &cd_S20486C16);
    dp->~S20486C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C16(Test_S20486C16, "S20486C16", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S20486C16C1Ev();
extern void _ZN9S20486C16D1Ev();
Name_Map name_map_S20486C16[] = {
  NSPAIR(_ZN9S20486C16C1Ev),
  NSPAIR(_ZN9S20486C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
static Base_Class bases_S20486C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S20486C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(32,20), //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 _ZTI9S20486C16[];
extern void _ZN9S20486C16D1Ev();
extern void _ZN9S20486C16D0Ev();
extern void ABISELECT(_ZThn32_N9S20486C16D1Ev,_ZThn20_N9S20486C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20486C16D0Ev,_ZThn20_N9S20486C16D0Ev)();
static  VTBL_ENTRY vtc_S20486C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C16[0]),
  (VTBL_ENTRY)&_ZN9S20486C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C16D0Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20486C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20486C16D1Ev,_ZThn20_N9S20486C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20486C16D0Ev,_ZThn20_N9S20486C16D0Ev),
};
extern VTBL_ENTRY _ZTI9S20486C16[];
extern  VTBL_ENTRY _ZTV9S20486C16[];
Class_Descriptor cd_S20486C16 = {  "S20486C16", // class name
  bases_S20486C16, 8,
  &(vtc_S20486C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S20486C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20486C16),8, //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  S20486C14  : S20486C15 , virtual S2014C28 , virtual S3222C8_nt , virtual S20486C7 , virtual S20486C16 {
  long s20486c14f0;
  ::S20486C15 s20486c14f1;
  virtual  ~S20486C14(); // _ZN9S20486C14D2Ev
  S20486C14(); // tgen
};
//SIG(-1 S20486C14) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 Fl} BC3 Fi} vd Fl FC2}


 S20486C14 ::~S20486C14(){ note_dtor("S20486C14", this);}
S20486C14 ::S20486C14(){ note_ctor("S20486C14", this);} // tgen

static void Test_S20486C14()
{
  extern Class_Descriptor cd_S20486C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S20486C14, buf);
    S20486C14 *dp, &lv = *(dp=new (buf) S20486C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S20486C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C14)");
    /*is_ambiguous_... S20486C14::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(56,36), "S20486C14");
    check_base_class_offset(lv, (S20486C5*)(S20486C15*), ABISELECT(56,36), "S20486C14");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(56,36), "S20486C14");
    check_base_class_offset(lv, (S20486C15*), 0, "S20486C14");
    /*is_ambiguous_... S20486C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S20486C14");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C14");
    /*is_ambiguous_... S20486C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S20486C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(68,44), "S20486C14");
    check_base_class_offset(lv, (S20486C7*), ABISELECT(72,48), "S20486C14");
    check_base_class_offset(lv, (S2014C28*)(S20486C17*)(S20486C16*), ABISELECT(96,60), "S20486C14");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(96,60), "S20486C14");
    check_base_class_offset(lv, (S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(96,60), "S20486C14");
    /*is_ambiguous_... S20486C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*)(S20486C16*), ABISELECT(105,65), "S20486C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*)(S20486C16*), ABISELECT(108,68), "S20486C14");
    check_base_class_offset(lv, (S20486C17*)(S20486C16*), ABISELECT(96,60), "S20486C14");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C16*), ABISELECT(128,80), "S20486C14");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C16*), ABISELECT(128,80), "S20486C14");
    check_base_class_offset(lv, (S20486C16*), ABISELECT(96,60), "S20486C14");
    check_field_offset(lv, s20486c14f0, ABISELECT(16,12), "S20486C14.s20486c14f0");
    check_field_offset(lv, s20486c14f1, ABISELECT(24,16), "S20486C14.s20486c14f1");
    test_class_info(&lv, &cd_S20486C14);
    dp->~S20486C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C14(Test_S20486C14, "S20486C14", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN9S20486C14C1Ev();
extern void _ZN9S20486C14D2Ev();
Name_Map name_map_S20486C14[] = {
  NSPAIR(_ZN9S20486C14C1Ev),
  NSPAIR(_ZN9S20486C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C15;
extern VTBL_ENTRY _ZTI9S20486C15[];
extern  VTBL_ENTRY _ZTV9S20486C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C16;
extern VTBL_ENTRY _ZTI9S20486C16[];
extern  VTBL_ENTRY _ZTV9S20486C16[];
static Base_Class bases_S20486C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(56,36), //bcp->offset
    9, //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_S20486C15,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S20486C7,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20486C5,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S20486C17,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(128,80), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20486C16,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20486C14[];
extern void _ZN9S20486C14D1Ev();
extern void _ZN9S20486C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn56_N9S20486C14D1Ev,_ZThn36_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn56_N9S20486C14D0Ev,_ZThn36_N9S20486C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S20486C14D1Ev,_ZThn48_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S20486C14D0Ev,_ZThn48_N9S20486C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20486C14D1Ev,_ZThn60_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20486C14D0Ev,_ZThn60_N9S20486C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev)();
static  VTBL_ENTRY vtc_S20486C14[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&_ZN9S20486C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C14D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S20486C14[];
extern void _ZN9S20486C15D1Ev();
extern void _ZN9S20486C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C15__9S20486C14[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&_ZN9S20486C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S20486C15D1Ev,_ZThn36_N9S20486C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S20486C15D0Ev,_ZThn36_N9S20486C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C15__9S20486C14[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev),
};
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C14[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__9S20486C14[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
static  VTT_ENTRY vtt_S20486C14[] = {
  {&(_ZTV9S20486C14[7]),  7,31},
  {&(_tg__ZTV9S20486C15__9S20486C14[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C15__9S20486C14[3]),  3,5},
  {&(_ZTV9S20486C14[12]),  12,31},
  {&(_ZTV9S20486C14[20]),  20,31},
  {&(_ZTV9S20486C14[25]),  25,31},
  {&(_ZTV9S20486C14[29]),  29,31},
  {&(_tg__ZTV8S20486C7__9S20486C14[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__9S20486C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20486C14[];
extern  VTBL_ENTRY _ZTV9S20486C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C14[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C15D0Ev,_ZThn36_N9S20486C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C15D1Ev,_ZThn36_N9S20486C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20486C14D0Ev,_ZThn48_N9S20486C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20486C14D1Ev,_ZThn48_N9S20486C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20486C14D0Ev,_ZThn60_N9S20486C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C14D0Ev,_ZThn36_N9S20486C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20486C14D1Ev,_ZThn60_N9S20486C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C14D1Ev,_ZThn36_N9S20486C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C14 = {  "S20486C14", // class name
  bases_S20486C14, 15,
  &(vtc_S20486C14[0]), // expected_vtbl_contents
  &(vtt_S20486C14[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI9S20486C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20486C14),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20486C14),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C18  : virtual S20486C7 , S20486C3 , virtual S2014C38 {
  ::S3222C8_nt s20486c18f0[6];
  virtual  ~S20486C18(); // _ZN9S20486C18D2Ev
  S20486C18(); // tgen
};
//SIG(-1 S20486C18) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S20486C18 ::~S20486C18(){ note_dtor("S20486C18", this);}
S20486C18 ::S20486C18(){ note_ctor("S20486C18", this);} // tgen

static void Test_S20486C18()
{
  extern Class_Descriptor cd_S20486C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S20486C18, buf);
    S20486C18 *dp, &lv = *(dp=new (buf) S20486C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S20486C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C18)");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C18");
    check_base_class_offset(lv, (S2014C28*)(S20486C3*), 0, "S20486C18");
    /*is_ambiguous_... S20486C18::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(64,44), "S20486C18");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(64,44), "S20486C18");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(76,52), "S20486C18");
    check_base_class_offset(lv, (S20486C7*), ABISELECT(40,32), "S20486C18");
    check_base_class_offset(lv, (S20486C7*)(S20486C3*), ABISELECT(40,32), "S20486C18");
    /*is_ambiguous_... S20486C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C3*), ABISELECT(9,5), "S20486C18");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C3*), 0, "S20486C18");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C3*), 0, "S20486C18");
    check_base_class_offset(lv, (S20486C3*), 0, "S20486C18");
    /*is_ambiguous_... S20486C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S20486C18");
    check_field_offset(lv, s20486c18f0, ABISELECT(12,8), "S20486C18.s20486c18f0");
    test_class_info(&lv, &cd_S20486C18);
    dp->~S20486C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C18(Test_S20486C18, "S20486C18", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S20486C18C1Ev();
extern void _ZN9S20486C18D2Ev();
Name_Map name_map_S20486C18[] = {
  NSPAIR(_ZN9S20486C18C1Ev),
  NSPAIR(_ZN9S20486C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C3;
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S20486C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S20486C7,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20486C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S20486C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20486C18[];
extern void _ZN9S20486C18D1Ev();
extern void _ZN9S20486C18D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20486C18D1Ev,_ZThn32_N9S20486C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20486C18D0Ev,_ZThn32_N9S20486C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20486C18D1Ev,_ZThn44_N9S20486C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S20486C18D0Ev,_ZThn44_N9S20486C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C18[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&_ZN9S20486C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C18D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20486C18[];
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C3__9S20486C18[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn32_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn32_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C3__9S20486C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20486C3D1Ev,_ZThn44_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20486C3D0Ev,_ZThn44_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C3__9S20486C18[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C18[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__9S20486C18[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
static  VTT_ENTRY vtt_S20486C18[] = {
  {&(_ZTV9S20486C18[7]),  7,22},
  {&(_tg__ZTV8S20486C3__9S20486C18[6]),  6,8},
  {&(_tg__ZTV8S20486C7__8S20486C3__9S20486C18[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C3__9S20486C18[3]),  3,5},
  {&(_ZTV9S20486C18[15]),  15,22},
  {&(_ZTV9S20486C18[20]),  20,22},
  {&(_tg__ZTV8S20486C7__9S20486C18[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__9S20486C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20486C18[];
extern  VTBL_ENTRY _ZTV9S20486C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C18[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20486C3D0Ev,_ZThn44_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20486C3D1Ev,_ZThn44_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn32_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn32_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20486C18D0Ev,_ZThn44_N9S20486C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20486C18D1Ev,_ZThn44_N9S20486C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20486C18D0Ev,_ZThn32_N9S20486C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20486C18D1Ev,_ZThn32_N9S20486C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C18 = {  "S20486C18", // class name
  bases_S20486C18, 10,
  &(vtc_S20486C18[0]), // expected_vtbl_contents
  &(vtt_S20486C18[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S20486C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20486C18),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20486C18),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C13  : S20486C14 , S20486C5 , virtual S20486C17 , S20486C18 {
  virtual  ~S20486C13(); // _ZN9S20486C13D2Ev
  S20486C13(); // tgen
};
//SIG(-1 S20486C13) C1{ BC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC4 VBC11 BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} vd}


 S20486C13 ::~S20486C13(){ note_dtor("S20486C13", this);}
S20486C13 ::S20486C13(){ note_ctor("S20486C13", this);} // tgen

static void Test_S20486C13()
{
  extern Class_Descriptor cd_S20486C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,39)];
    init_test(&cd_S20486C13, buf);
    S20486C13 *dp, &lv = *(dp=new (buf) S20486C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,152), "sizeof(S20486C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C13)");
    /*is_ambiguous_... S20486C13::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(112,76), "S20486C13");
    check_base_class_offset(lv, (S20486C5*)(S20486C15*)(S20486C14*), ABISELECT(112,76), "S20486C13");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(112,76), "S20486C13");
    check_base_class_offset(lv, (S20486C15*)(S20486C14*), 0, "S20486C13");
    /*is_ambiguous_... S20486C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20486C14*), 0, "S20486C13");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C13");
    check_base_class_offset(lv, (S2014C28*)(S20486C3*)(S20486C18*), 0, "S20486C13");
    /*is_ambiguous_... S20486C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20486C14*), ABISELECT(124,84), "S20486C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(124,84), "S20486C13");
    check_base_class_offset(lv, (S20486C7*)(S20486C14*), ABISELECT(128,88), "S20486C13");
    check_base_class_offset(lv, (S20486C7*)(S20486C18*), ABISELECT(128,88), "S20486C13");
    check_base_class_offset(lv, (S20486C7*)(S20486C3*)(S20486C18*), ABISELECT(128,88), "S20486C13");
    check_base_class_offset(lv, (S2014C28*)(S20486C17*)(S20486C16*), ABISELECT(152,100), "S20486C13");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(152,100), "S20486C13");
    check_base_class_offset(lv, (S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(152,100), "S20486C13");
    /*is_ambiguous_... S20486C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*)(S20486C16*), ABISELECT(161,105), "S20486C13");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*)(S20486C16*), ABISELECT(164,108), "S20486C13");
    check_base_class_offset(lv, (S20486C17*)(S20486C16*), ABISELECT(152,100), "S20486C13");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C16*), ABISELECT(184,120), "S20486C13");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C16*), ABISELECT(184,120), "S20486C13");
    check_base_class_offset(lv, (S20486C16*)(S20486C14*), ABISELECT(152,100), "S20486C13");
    check_base_class_offset(lv, (S20486C14*), 0, "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(56,36), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*), ABISELECT(56,36), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20486C17*), ABISELECT(200,132), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*), ABISELECT(200,132), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C17*), ABISELECT(200,132), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*), ABISELECT(209,137), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*), ABISELECT(212,140), "S20486C13");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S20486C17*), ABISELECT(200,132), "S20486C13");
    /*is_ambiguous_... S20486C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C3*)(S20486C18*), ABISELECT(81,49), "S20486C13");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C3*)(S20486C18*), ABISELECT(72,44), "S20486C13");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C3*)(S20486C18*), ABISELECT(72,44), "S20486C13");
    check_base_class_offset(lv, (S20486C3*)(S20486C18*), ABISELECT(72,44), "S20486C13");
    /*is_ambiguous_... S20486C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C18*), 0, "S20486C13");
    check_base_class_offset(lv, (S20486C18*), ABISELECT(72,44), "S20486C13");
    test_class_info(&lv, &cd_S20486C13);
    dp->~S20486C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C13(Test_S20486C13, "S20486C13", ABISELECT(232,152));

#else // __cplusplus

extern void _ZN9S20486C13C1Ev();
extern void _ZN9S20486C13D2Ev();
Name_Map name_map_S20486C13[] = {
  NSPAIR(_ZN9S20486C13C1Ev),
  NSPAIR(_ZN9S20486C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C15;
extern VTBL_ENTRY _ZTI9S20486C15[];
extern  VTBL_ENTRY _ZTV9S20486C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C16;
extern VTBL_ENTRY _ZTI9S20486C16[];
extern  VTBL_ENTRY _ZTV9S20486C16[];
extern Class_Descriptor cd_S20486C14;
extern VTBL_ENTRY _ZTI9S20486C14[];
extern  VTBL_ENTRY _ZTV9S20486C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C3;
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C18;
extern VTBL_ENTRY _ZTI9S20486C18[];
extern  VTBL_ENTRY _ZTV9S20486C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C18[];
static Base_Class bases_S20486C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(112,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
    1, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(112,76), //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
    2, //immediately_derived
  0, 1},
  {&cd_S20486C15,    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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(124,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
    5, //immediately_derived
  0, 1},
  {&cd_S20486C7,    ABISELECT(128,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(152,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
    8, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(161,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
    11, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(164,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
    11, //immediately_derived
  0, 0},
  {&cd_S20486C17,    ABISELECT(152,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(184,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_S20486C5,    ABISELECT(184,120), //bcp->offset
    42, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20486C16,    ABISELECT(152,100), //bcp->offset
    37, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20486C14,    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},
  {&cd_S2014C38,    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
    17, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(56,36), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20486C5,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(209,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(212,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
    23, //immediately_derived
  0, 0},
  {&cd_S20486C17,    ABISELECT(200,132), //bcp->offset
    46, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    26, //immediately_derived
  0, 0},
  {&cd_S20486C5,    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
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20486C3,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20486C18,    ABISELECT(72,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20486C13[];
extern void _ZN9S20486C13D1Ev();
extern void _ZN9S20486C13D0Ev();
extern void ABISELECT(_ZThn56_N9S20486C13D1Ev,_ZThn36_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S20486C13D0Ev,_ZThn36_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20486C13D1Ev,_ZThn44_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20486C13D0Ev,_ZThn44_N9S20486C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20486C13D1Ev,_ZThn76_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20486C13D0Ev,_ZThn76_N9S20486C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C13D1Ev,_ZTv0_n24_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S20486C13D1Ev,_ZThn88_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C13D0Ev,_ZTv0_n24_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S20486C13D0Ev,_ZThn88_N9S20486C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S20486C13D1Ev,_ZThn100_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S20486C13D0Ev,_ZThn100_N9S20486C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S20486C13D1Ev,_ZTvn20_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20486C13D0Ev,_ZTvn20_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S20486C13D1Ev,_ZThn132_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S20486C13D0Ev,_ZThn132_N9S20486C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C13[] = {
  0,
  ABISELECT(200,132),
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&_ZN9S20486C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C13D0Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20486C13D1Ev,_ZThn36_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20486C13D0Ev,_ZThn36_N9S20486C13D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20486C13D1Ev,_ZThn44_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20486C13D0Ev,_ZThn44_N9S20486C13D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C13D1Ev,_ZTv0_n24_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C13D0Ev,_ZTv0_n24_N9S20486C13D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C13D1Ev,_ZTvn20_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C13D0Ev,_ZTvn20_n12_N9S20486C13D0Ev),
  ABISELECT(-200,-132),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20486C13[];
extern void _ZN9S20486C14D1Ev();
extern void _ZN9S20486C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C14__9S20486C13[] = {
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&_ZN9S20486C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C14D0Ev,
};
extern void _ZN9S20486C15D1Ev();
extern void _ZN9S20486C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C159S20486C14__9S20486C13[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&_ZN9S20486C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20486C15D1Ev,_ZThn76_N9S20486C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20486C15D0Ev,_ZThn76_N9S20486C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C159S20486C14__9S20486C13[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20486C14D1Ev,_ZThn76_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20486C14D0Ev,_ZThn76_N9S20486C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C14__9S20486C13[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S20486C14D1Ev,_ZThn88_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S20486C14D0Ev,_ZThn88_N9S20486C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C14__9S20486C13[] = {
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S20486C14D1Ev,_ZThn100_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S20486C14D0Ev,_ZThn100_N9S20486C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20486C16__9S20486C14__9S20486C13[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C59S20486C16__A2__9S20486C14__9S20486C13[] = {
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev),
};
extern void _ZN9S20486C18D1Ev();
extern void _ZN9S20486C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C18__9S20486C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&_ZN9S20486C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C18D0Ev,
};
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C39S20486C18__9S20486C13[] = {
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S20486C3D1Ev,_ZThn44_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S20486C3D0Ev,_ZThn44_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C39S20486C18__9S20486C13[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn32_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn32_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C39S20486C18__9S20486C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev)();
extern void ABISELECT(_ZThn56_N9S20486C18D1Ev,_ZThn44_N9S20486C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev)();
extern void ABISELECT(_ZThn56_N9S20486C18D0Ev,_ZThn44_N9S20486C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C18__9S20486C13[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20486C18D1Ev,_ZThn32_N9S20486C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20486C18D0Ev,_ZThn32_N9S20486C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C18__9S20486C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev),
};
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C13[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__9S20486C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
static  VTT_ENTRY vtt_S20486C13[] = {
  {&(_ZTV9S20486C13[9]),  9,51},
  {&(_tg__ZTV9S20486C14__9S20486C13[7]),  7,9},
  {&(_tg__ZTV9S20486C159S20486C14__9S20486C13[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C159S20486C14__9S20486C13[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C14__9S20486C13[3]),  3,5},
  {&(_tg__ZTV8S20486C7__9S20486C14__9S20486C13[6]),  6,8},
  {&(_tg__ZTV9S20486C16__9S20486C14__9S20486C13[3]),  3,5},
  {&(_tg__ZTV8S20486C59S20486C16__A2__9S20486C14__9S20486C13[2]),  2,4},
  {&(_tg__ZTV9S20486C18__9S20486C13[7]),  7,9},
  {&(_tg__ZTV8S20486C39S20486C18__9S20486C13[6]),  6,8},
  {&(_tg__ZTV8S20486C7__8S20486C39S20486C18__9S20486C13[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C39S20486C18__9S20486C13[3]),  3,5},
  {&(_tg__ZTV8S20486C7__9S20486C18__9S20486C13[6]),  6,8},
  {&(_tg__ZTV8S20486C5__9S20486C18__9S20486C13[3]),  3,5},
  {&(_ZTV9S20486C13[27]),  27,51},
  {&(_ZTV9S20486C13[35]),  35,51},
  {&(_ZTV9S20486C13[40]),  40,51},
  {&(_ZTV9S20486C13[44]),  44,51},
  {&(_ZTV9S20486C13[49]),  49,51},
  {&(_ZTV9S20486C13[22]),  22,51},
  {&(_tg__ZTV8S20486C7__9S20486C13[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__9S20486C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20486C13[];
extern  VTBL_ENTRY _ZTV9S20486C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C13[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20486C18D0Ev,_ZThn32_N9S20486C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20486C18D1Ev,_ZThn32_N9S20486C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C18D0Ev,_ZThn44_N9S20486C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20486C18D1Ev,_ZThn44_N9S20486C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn32_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn32_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20486C3D0Ev,_ZThn44_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20486C3D1Ev,_ZThn44_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20486C14D0Ev,_ZThn88_N9S20486C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20486C14D1Ev,_ZThn88_N9S20486C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20486C14D0Ev,_ZThn100_N9S20486C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C14D0Ev,_ZThn76_N9S20486C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20486C14D1Ev,_ZThn100_N9S20486C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C14D1Ev,_ZThn76_N9S20486C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C15D0Ev,_ZThn76_N9S20486C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C15D1Ev,_ZThn76_N9S20486C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C13D0Ev,_ZTv0_n24_N9S20486C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20486C13D0Ev,_ZThn88_N9S20486C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20486C13D1Ev,_ZTv0_n24_N9S20486C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20486C13D1Ev,_ZThn88_N9S20486C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20486C13D0Ev,_ZThn132_N9S20486C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20486C13D0Ev,_ZThn100_N9S20486C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C13D0Ev,_ZThn76_N9S20486C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20486C13D1Ev,_ZThn132_N9S20486C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20486C13D1Ev,_ZThn100_N9S20486C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C13D1Ev,_ZThn76_N9S20486C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C13 = {  "S20486C13", // class name
  bases_S20486C13, 30,
  &(vtc_S20486C13[0]), // expected_vtbl_contents
  &(vtt_S20486C13[0]), // expected_vtt_contents
  ABISELECT(232,152), // object size
  NSPAIRA(_ZTI9S20486C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20486C13),51, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20486C13),22, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20486C1  : virtual S20486C2 , S19169C11_nt , S2014C24 , virtual S20486C12 , virtual S20486C13 {
  ::S20486C3 s20486c1f0;
  virtual  ~S20486C1(); // _ZN8S20486C1D2Ev
  S20486C1(); // tgen
};
//SIG(1 S20486C1) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4 vd FC4} VBC6{ m} VBC7{ VBC6 VBC5 VBC8{ m Fi} vd Fp FC9{}} vd} vd} BC10{ vd m} BC11{ m} VBC12{ BC5 vd} VBC13{ BC14{ BC15{ VBC5 FL} VBC6 VBC8 VBC7 VBC16{ BC17{ BC6 BC5 BC4 BC8 Fs:16 Fl} BC5 Fi} vd Fl FC15} BC5 VBC17 BC18{ VBC7 BC3 VBC4 vd FC8[6]} vd} vd FC3}


 S20486C1 ::~S20486C1(){ note_dtor("S20486C1", this);}
S20486C1 ::S20486C1(){ note_ctor("S20486C1", this);} // tgen

static void Test_S20486C1()
{
  extern Class_Descriptor cd_S20486C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,53)];
    init_test(&cd_S20486C1, buf);
    S20486C1 *dp, &lv = *(dp=new (buf) S20486C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,208), "sizeof(S20486C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20486C1)");
    /*is_ambiguous_... S20486C1::S20486C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C3*), ABISELECT(81,45), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C3 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C3*), ABISELECT(72,40), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C3 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C3*), ABISELECT(72,40), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C3 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20486C3*), 0, "S20486C1");
    check_base_class_offset(lv, (S2014C28*)(S20486C7*), 0, "S20486C1");
    /*is_ambiguous_... S20486C14::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20486C14*)(S20486C13*), 0, "S20486C1");
    check_base_class_offset(lv, (S2014C28*)(S20486C3*)(S20486C18*)(S20486C13*), 0, "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*), ABISELECT(112,60), "S20486C1");
    check_base_class_offset(lv, (S20486C5*)(S20486C7*), ABISELECT(112,60), "S20486C1");
    check_base_class_offset(lv, (S20486C5*)(S20486C15*)(S20486C14*)(S20486C13*), ABISELECT(112,60), "S20486C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C7*), ABISELECT(124,68), "S20486C1");
    /*is_ambiguous_... S20486C14::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20486C14*)(S20486C13*), ABISELECT(124,68), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C3 */ AMB_check_base_class_offset(lv, (S20486C7*)(S20486C3*), ABISELECT(88,48), "S20486C1");
    check_base_class_offset(lv, (S20486C7*)(S20486C14*)(S20486C13*), ABISELECT(88,48), "S20486C1");
    check_base_class_offset(lv, (S20486C7*)(S20486C18*)(S20486C13*), ABISELECT(88,48), "S20486C1");
    check_base_class_offset(lv, (S20486C7*)(S20486C3*)(S20486C18*)(S20486C13*), ABISELECT(88,48), "S20486C1");
    check_base_class_offset(lv, (S20486C3*)(S20486C2*), ABISELECT(72,40), "S20486C1");
    check_base_class_offset(lv, (S20486C2*), ABISELECT(64,36), "S20486C1");
    check_base_class_offset(lv, (S19169C11_nt*), 0, "S20486C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S20486C1");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C12*), ABISELECT(128,72), "S20486C1");
    check_base_class_offset(lv, (S20486C5*)(S20486C12*), ABISELECT(128,72), "S20486C1");
    check_base_class_offset(lv, (S20486C12*), ABISELECT(128,72), "S20486C1");
    check_base_class_offset(lv, (S20486C15*)(S20486C14*)(S20486C13*), ABISELECT(144,80), "S20486C1");
    check_base_class_offset(lv, (S2014C28*)(S20486C17*)(S20486C16*), ABISELECT(256,156), "S20486C1");
    check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(256,156), "S20486C1");
    check_base_class_offset(lv, (S20486C5*)(S20486C17*)(S20486C16*), ABISELECT(256,156), "S20486C1");
    /*is_ambiguous_... S20486C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*)(S20486C16*), ABISELECT(265,161), "S20486C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*)(S20486C16*), ABISELECT(268,164), "S20486C1");
    check_base_class_offset(lv, (S20486C17*)(S20486C16*), ABISELECT(256,156), "S20486C1");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C16*), ABISELECT(288,176), "S20486C1");
    /*is_ambiguous_... S20486C16::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C16*), ABISELECT(288,176), "S20486C1");
    check_base_class_offset(lv, (S20486C16*)(S20486C14*)(S20486C13*), ABISELECT(256,156), "S20486C1");
    check_base_class_offset(lv, (S20486C14*)(S20486C13*), ABISELECT(144,80), "S20486C1");
    /*is_ambiguous_... S20486C13::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C13*), ABISELECT(200,116), "S20486C1");
    /*is_ambiguous_... S20486C13::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C13*), ABISELECT(200,116), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C28*)(S20486C17*), ABISELECT(304,188), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C17*), ABISELECT(304,188), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C17 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C17*), ABISELECT(304,188), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C17 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C17*), ABISELECT(313,193), "S20486C1");
    /*is_ambiguous_... S20486C1::S20486C17 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S20486C17*), ABISELECT(316,196), "S20486C1");
    /*is_ambiguous_... S20486C13::S20486C17 */ AMB_check_base_class_offset(lv, (S20486C17*)(S20486C13*), ABISELECT(304,188), "S20486C1");
    /*is_ambiguous_... S20486C3::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C3*)(S20486C18*)(S20486C13*), ABISELECT(225,129), "S20486C1");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C5*)(S20486C3*)(S20486C18*)(S20486C13*), ABISELECT(216,124), "S20486C1");
    /*is_ambiguous_... S20486C3::S20486C5 */ AMB_check_base_class_offset(lv, (S20486C5*)(S20486C3*)(S20486C18*)(S20486C13*), ABISELECT(216,124), "S20486C1");
    check_base_class_offset(lv, (S20486C3*)(S20486C18*)(S20486C13*), ABISELECT(216,124), "S20486C1");
    /*is_ambiguous_... S20486C18::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S20486C18*)(S20486C13*), 0, "S20486C1");
    check_base_class_offset(lv, (S20486C18*)(S20486C13*), ABISELECT(216,124), "S20486C1");
    check_base_class_offset(lv, (S20486C13*), ABISELECT(144,80), "S20486C1");
    check_field_offset(lv, s20486c1f0, ABISELECT(8,4), "S20486C1.s20486c1f0");
    test_class_info(&lv, &cd_S20486C1);
    dp->~S20486C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20486C1(Test_S20486C1, "S20486C1", ABISELECT(336,208));

#else // __cplusplus

extern void _ZN8S20486C1C1Ev();
extern void _ZN8S20486C1D2Ev();
Name_Map name_map_S20486C1[] = {
  NSPAIR(_ZN8S20486C1C1Ev),
  NSPAIR(_ZN8S20486C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C7;
extern VTBL_ENTRY _ZTI8S20486C7[];
extern  VTBL_ENTRY _ZTV8S20486C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C7[];
extern Class_Descriptor cd_S20486C3;
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
extern Class_Descriptor cd_S20486C2;
extern VTBL_ENTRY _ZTI8S20486C2[];
extern  VTBL_ENTRY _ZTV8S20486C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C2[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C12;
extern VTBL_ENTRY _ZTI9S20486C12[];
extern  VTBL_ENTRY _ZTV9S20486C12[];
extern Class_Descriptor cd_S20486C15;
extern VTBL_ENTRY _ZTI9S20486C15[];
extern  VTBL_ENTRY _ZTV9S20486C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C15[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C16;
extern VTBL_ENTRY _ZTI9S20486C16[];
extern  VTBL_ENTRY _ZTV9S20486C16[];
extern Class_Descriptor cd_S20486C14;
extern VTBL_ENTRY _ZTI9S20486C14[];
extern  VTBL_ENTRY _ZTV9S20486C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S20486C17;
extern VTBL_ENTRY _ZTI9S20486C17[];
extern  VTBL_ENTRY _ZTV9S20486C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C5;
extern VTBL_ENTRY _ZTI8S20486C5[];
extern  VTBL_ENTRY _ZTV8S20486C5[];
extern Class_Descriptor cd_S20486C3;
extern VTBL_ENTRY _ZTI8S20486C3[];
extern  VTBL_ENTRY _ZTV8S20486C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C3[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S20486C18;
extern VTBL_ENTRY _ZTI9S20486C18[];
extern  VTBL_ENTRY _ZTV9S20486C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C18[];
extern Class_Descriptor cd_S20486C13;
extern VTBL_ENTRY _ZTI9S20486C13[];
extern  VTBL_ENTRY _ZTV9S20486C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20486C13[];
static Base_Class bases_S20486C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(81,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
    8, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(72,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
    2, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(72,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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(112,60), //bcp->offset
    42, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(124,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
    7, //immediately_derived
  0, 1},
  {&cd_S20486C7,    ABISELECT(88,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20486C3,    ABISELECT(72,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20486C2,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C11_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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    ABISELECT(128,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
    13, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(128,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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20486C12,    ABISELECT(128,72), //bcp->offset
    47, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20486C15,    ABISELECT(144,80), //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
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(256,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
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(256,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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(256,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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(265,161), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(268,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
    21, //immediately_derived
  0, 0},
  {&cd_S20486C17,    ABISELECT(256,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
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(288,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
    23, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(288,176), //bcp->offset
    82, //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
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20486C16,    ABISELECT(256,156), //bcp->offset
    77, //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
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20486C14,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(200,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
    27, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(200,116), //bcp->offset
    64, //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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20486C5,    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
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(313,193), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(316,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
    33, //immediately_derived
  0, 0},
  {&cd_S20486C17,    ABISELECT(304,188), //bcp->offset
    86, //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
    13, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(225,129), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(216,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
    36, //immediately_derived
  0, 0},
  {&cd_S20486C5,    ABISELECT(216,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
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20486C3,    ABISELECT(216,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20486C18,    ABISELECT(216,124), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20486C13,    ABISELECT(144,80), //bcp->offset
    52, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20486C1[];
extern void _ZN8S20486C1D1Ev();
extern void _ZN8S20486C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S20486C1D1Ev,_ZTv0_n32_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20486C1D1Ev,_ZThn36_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20486C1D0Ev,_ZTv0_n32_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20486C1D0Ev,_ZThn36_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20486C1D1Ev,_ZTv0_n28_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20486C1D1Ev,_ZThn40_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20486C1D0Ev,_ZTv0_n28_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20486C1D0Ev,_ZThn40_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C1D1Ev,_ZTv0_n24_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20486C1D1Ev,_ZThn48_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C1D0Ev,_ZTv0_n24_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20486C1D0Ev,_ZThn48_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20486C1D1Ev,_ZThn60_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20486C1D0Ev,_ZThn60_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20486C1D1Ev,_ZThn72_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20486C1D0Ev,_ZThn72_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20486C1D1Ev,_ZTv0_n40_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20486C1D1Ev,_ZThn80_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20486C1D0Ev,_ZTv0_n40_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20486C1D0Ev,_ZThn80_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn56_n80_N8S20486C1D1Ev,_ZTvn36_n40_N8S20486C1D1Ev)();
extern void ABISELECT(_ZTvn56_n80_N8S20486C1D0Ev,_ZTvn36_n40_N8S20486C1D0Ev)();
extern void ABISELECT(_ZTvn72_n80_N8S20486C1D1Ev,_ZTvn44_n40_N8S20486C1D1Ev)();
extern void ABISELECT(_ZTvn72_n80_N8S20486C1D0Ev,_ZTvn44_n40_N8S20486C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20486C1D1Ev,_ZThn156_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20486C1D0Ev,_ZThn156_N8S20486C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S20486C1D1Ev,_ZTvn20_n12_N8S20486C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S20486C1D0Ev,_ZTvn20_n12_N8S20486C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S20486C1D1Ev,_ZThn188_N8S20486C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S20486C1D0Ev,_ZThn188_N8S20486C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20486C1[] = {
  0,
  ABISELECT(304,188),
  ABISELECT(256,156),
  ABISELECT(144,80),
  ABISELECT(128,72),
  ABISELECT(124,68),
  ABISELECT(112,60),
  ABISELECT(88,48),
  0,
  ABISELECT(72,40),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&_ZN8S20486C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C1D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20486C1D1Ev,_ZTv0_n32_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20486C1D0Ev,_ZTv0_n32_N8S20486C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C1D1Ev,_ZTv0_n28_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C1D0Ev,_ZTv0_n28_N8S20486C1D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C1D1Ev,_ZTv0_n24_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C1D0Ev,_ZTv0_n24_N8S20486C1D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  ABISELECT(160,108),
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20486C1D1Ev,_ZTv0_n40_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20486C1D0Ev,_ZTv0_n40_N8S20486C1D0Ev),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n80_N8S20486C1D1Ev,_ZTvn36_n40_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n80_N8S20486C1D0Ev,_ZTvn36_n40_N8S20486C1D0Ev),
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n80_N8S20486C1D1Ev,_ZTvn44_n40_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn72_n80_N8S20486C1D0Ev,_ZTvn44_n40_N8S20486C1D0Ev),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S20486C1D1Ev,_ZTvn20_n12_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S20486C1D0Ev,_ZTvn20_n12_N8S20486C1D0Ev),
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S20486C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20486C1[];
extern void _ZN8S20486C2D1Ev();
extern void _ZN8S20486C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C2__8S20486C1[] = {
  ABISELECT(60,32),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(-64,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&_ZN8S20486C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C2D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20486C2D1Ev,_ZThn4_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20486C2D0Ev,_ZThn4_N8S20486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C3__8S20486C2__8S20486C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C2D1Ev,_ZThn12_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C2D0Ev,_ZThn12_N8S20486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C2__8S20486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20486C2D1Ev,_ZThn24_N8S20486C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20486C2D0Ev,_ZThn24_N8S20486C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C2__8S20486C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20486C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev),
};
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C3__8S20486C1[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C3__8S20486C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C3__8S20486C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern void _ZN8S20486C7D1Ev();
extern void _ZN8S20486C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C1[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&_ZN8S20486C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20486C5__8S20486C7__8S20486C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20486C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev),
};
extern void _ZN9S20486C13D1Ev();
extern void _ZN9S20486C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C13__8S20486C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(160,108),
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&_ZN9S20486C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C13D0Ev,
};
extern void _ZN9S20486C14D1Ev();
extern void _ZN9S20486C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(112,76),
  ABISELECT(-56,-32),
  ABISELECT(-20,-12),
  ABISELECT(-144,-80),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&_ZN9S20486C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C14D0Ev,
};
extern void _ZN9S20486C15D1Ev();
extern void _ZN9S20486C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C159S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&_ZN9S20486C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C159S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20486C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D1Ev,_ZTv0_n12_N9S20486C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C15D0Ev,_ZTv0_n12_N9S20486C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(56,32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D1Ev,_ZTv0_n24_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C14D0Ev,_ZTv0_n24_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20486C14D1Ev,_ZThn76_N9S20486C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20486C14D0Ev,_ZThn76_N9S20486C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20486C16__9S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C59S20486C16__A2__9S20486C149S20486C13__8S20486C1[] = {
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20486C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D1Ev,_ZTvn20_n12_N9S20486C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C14D0Ev,_ZTvn20_n12_N9S20486C14D0Ev),
};
extern void _ZN9S20486C18D1Ev();
extern void _ZN9S20486C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20486C189S20486C13__8S20486C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&_ZN9S20486C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20486C18D0Ev,
};
extern void _ZN8S20486C3D1Ev();
extern void _ZN8S20486C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20486C39S20486C189S20486C13__A1__8S20486C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&_ZN8S20486C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20486C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C7__8S20486C39S20486C189S20486C13__A1__8S20486C1[] = {
  ABISELECT(128,76),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__A1__8S20486C39S20486C189S20486C13__A1__8S20486C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20486C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C189S20486C13__8S20486C1[] = {
  ABISELECT(128,76),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D1Ev,_ZTv0_n24_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C18D0Ev,_ZTv0_n24_N9S20486C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C189S20486C13__8S20486C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20486C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D1Ev,_ZTv0_n12_N9S20486C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C18D0Ev,_ZTv0_n12_N9S20486C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C5__9S20486C13__8S20486C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20486C13D1Ev,_ZTv0_n24_N9S20486C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20486C13D0Ev,_ZTv0_n24_N9S20486C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C7__9S20486C13__8S20486C1[] = {
  ABISELECT(56,32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-88,-48),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C13D1Ev,_ZTv0_n24_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20486C13D0Ev,_ZTv0_n24_N9S20486C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20486C13D1Ev,_ZThn76_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20486C13D0Ev,_ZThn76_N9S20486C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20486C16__9S20486C13__8S20486C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S20486C13D1Ev,_ZTvn20_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S20486C13D0Ev,_ZTvn20_n12_N9S20486C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20486C59S20486C16__A2__9S20486C13__8S20486C1[] = {
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C13D1Ev,_ZTvn20_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S20486C13D0Ev,_ZTvn20_n12_N9S20486C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S20486C13D1Ev,_ZThn108_N9S20486C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S20486C13D0Ev,_ZThn108_N9S20486C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20486C17__A1__9S20486C13__8S20486C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev),
};
extern void ABISELECT(_ZThn72_N9S20486C13D1Ev,_ZThn44_N9S20486C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20486C13D0Ev,_ZThn44_N9S20486C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20486C18__9S20486C13__8S20486C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-92,-56),
  ABISELECT(-104,-64),
  ABISELECT(-128,-76),
  ABISELECT(-216,-124),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20486C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20486C13D1Ev,_ZThn44_N9S20486C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20486C13D0Ev,_ZThn44_N9S20486C13D0Ev),
};
static  VTT_ENTRY vtt_S20486C1[] = {
  {&(_ZTV8S20486C1[13]),  13,91},
  {&(_ZTV8S20486C1[23]),  23,91},
  {&(_ZTV8S20486C1[32]),  32,91},
  {&(_ZTV8S20486C1[40]),  40,91},
  {&(_ZTV8S20486C1[45]),  45,91},
  {&(_ZTV8S20486C1[50]),  50,91},
  {&(_ZTV8S20486C1[62]),  62,91},
  {&(_ZTV8S20486C1[80]),  80,91},
  {&(_ZTV8S20486C1[84]),  84,91},
  {&(_ZTV8S20486C1[66]),  66,91},
  {&(_ZTV8S20486C1[89]),  89,91},
  {&(_ZTV8S20486C1[75]),  75,91},
  {&(_tg__ZTV8S20486C2__8S20486C1[7]),  7,9},
  {&(_tg__ZTV8S20486C3__8S20486C2__8S20486C1[7]),  7,9},
  {&(_tg__ZTV8S20486C7__8S20486C2__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C2__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C3__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C7__8S20486C3__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C3__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C7__8S20486C1[5]),  5,7},
  {&(_tg__ZTV8S20486C5__8S20486C7__8S20486C1[3]),  3,5},
  {&(_tg__ZTV9S20486C13__8S20486C1[9]),  9,11},
  {&(_tg__ZTV9S20486C149S20486C13__8S20486C1[7]),  7,9},
  {&(_tg__ZTV9S20486C159S20486C149S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C159S20486C149S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C149S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C7__9S20486C149S20486C13__8S20486C1[6]),  6,8},
  {&(_tg__ZTV9S20486C16__9S20486C149S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C59S20486C16__A2__9S20486C149S20486C13__8S20486C1[2]),  2,4},
  {&(_tg__ZTV9S20486C189S20486C13__8S20486C1[7]),  7,9},
  {&(_tg__ZTV8S20486C39S20486C189S20486C13__A1__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C7__8S20486C39S20486C189S20486C13__A1__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C5__A1__8S20486C39S20486C189S20486C13__A1__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C7__9S20486C189S20486C13__8S20486C1[6]),  6,8},
  {&(_tg__ZTV8S20486C5__9S20486C189S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C5__9S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C7__9S20486C13__8S20486C1[6]),  6,8},
  {&(_tg__ZTV9S20486C16__9S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV8S20486C59S20486C16__A2__9S20486C13__8S20486C1[2]),  2,4},
  {&(_tg__ZTV9S20486C17__A1__9S20486C13__8S20486C1[3]),  3,5},
  {&(_tg__ZTV9S20486C18__9S20486C13__8S20486C1[7]),  7,9},
};
extern VTBL_ENTRY _ZTI8S20486C1[];
extern  VTBL_ENTRY _ZTV8S20486C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20486C1[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C13D0Ev,_ZTv0_n12_N9S20486C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20486C13D0Ev,_ZThn108_N9S20486C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C13D0Ev,_ZThn76_N9S20486C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C13D1Ev,_ZTv0_n12_N9S20486C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20486C13D1Ev,_ZThn108_N9S20486C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C13D1Ev,_ZThn76_N9S20486C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D0Ev,_ZTv0_n12_N9S20486C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C14D0Ev,_ZThn76_N9S20486C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20486C14D1Ev,_ZTv0_n12_N9S20486C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20486C14D1Ev,_ZThn76_N9S20486C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D0Ev,_ZTv0_n12_N8S20486C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D0Ev,_ZThn12_N8S20486C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C7D1Ev,_ZTv0_n12_N8S20486C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C7D1Ev,_ZThn12_N8S20486C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D0Ev,_ZTv0_n12_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D0Ev,_ZThn20_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C3D1Ev,_ZTv0_n12_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20486C3D1Ev,_ZThn20_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D0Ev,_ZTv0_n24_N8S20486C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D0Ev,_ZThn8_N8S20486C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C3D1Ev,_ZTv0_n24_N8S20486C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20486C3D1Ev,_ZThn8_N8S20486C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C2D0Ev,_ZTv0_n12_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20486C2D0Ev,_ZThn24_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C2D1Ev,_ZTv0_n12_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20486C2D1Ev,_ZThn24_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C2D0Ev,_ZTv0_n24_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C2D0Ev,_ZThn12_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C2D1Ev,_ZTv0_n24_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20486C2D1Ev,_ZThn12_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C2D0Ev,_ZTv0_n28_N8S20486C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20486C2D0Ev,_ZThn4_N8S20486C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C2D1Ev,_ZTv0_n28_N8S20486C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20486C2D1Ev,_ZThn4_N8S20486C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20486C1D0Ev,_ZTv0_n40_N8S20486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20486C1D0Ev,_ZThn80_N8S20486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20486C1D1Ev,_ZTv0_n40_N8S20486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20486C1D1Ev,_ZThn80_N8S20486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C1D0Ev,_ZTv0_n12_N8S20486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20486C1D0Ev,_ZThn188_N8S20486C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20486C1D0Ev,_ZThn156_N8S20486C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20486C1D0Ev,_ZThn72_N8S20486C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20486C1D0Ev,_ZThn60_N8S20486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20486C1D1Ev,_ZTv0_n12_N8S20486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20486C1D1Ev,_ZThn188_N8S20486C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20486C1D1Ev,_ZThn156_N8S20486C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20486C1D1Ev,_ZThn72_N8S20486C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20486C1D1Ev,_ZThn60_N8S20486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C1D0Ev,_ZTv0_n24_N8S20486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20486C1D0Ev,_ZThn48_N8S20486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20486C1D1Ev,_ZTv0_n24_N8S20486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20486C1D1Ev,_ZThn48_N8S20486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C1D0Ev,_ZTv0_n28_N8S20486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20486C1D0Ev,_ZThn40_N8S20486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20486C1D1Ev,_ZTv0_n28_N8S20486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20486C1D1Ev,_ZThn40_N8S20486C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20486C1D0Ev,_ZTv0_n32_N8S20486C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20486C1D0Ev,_ZThn36_N8S20486C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20486C1D1Ev,_ZTv0_n32_N8S20486C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20486C1D1Ev,_ZThn36_N8S20486C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20486C1 = {  "S20486C1", // class name
  bases_S20486C1, 41,
  &(vtc_S20486C1[0]), // expected_vtbl_contents
  &(vtt_S20486C1[0]), // expected_vtt_contents
  ABISELECT(336,208), // object size
  NSPAIRA(_ZTI8S20486C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20486C1),91, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20486C1),41, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C2  : S2014C38 {
  ::S2014C38 s19238c2f0;
  virtual  ~S19238C2(); // _ZN8S19238C2D1Ev
  S19238C2(); // tgen
};
//SIG(-1 S19238C2) C1{ BC2{ m} vd FC2}


 S19238C2 ::~S19238C2(){ note_dtor("S19238C2", this);}
S19238C2 ::S19238C2(){ note_ctor("S19238C2", this);} // tgen

static void Test_S19238C2()
{
  extern Class_Descriptor cd_S19238C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19238C2, buf);
    S19238C2 *dp, &lv = *(dp=new (buf) S19238C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19238C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C2)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19238C2");
    check_field_offset(lv, s19238c2f0, ABISELECT(8,4), "S19238C2.s19238c2f0");
    test_class_info(&lv, &cd_S19238C2);
    dp->~S19238C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C2(Test_S19238C2, "S19238C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19238C2C1Ev();
extern void _ZN8S19238C2D1Ev();
Name_Map name_map_S19238C2[] = {
  NSPAIR(_ZN8S19238C2C1Ev),
  NSPAIR(_ZN8S19238C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19238C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19238C2[];
extern void _ZN8S19238C2D1Ev();
extern void _ZN8S19238C2D0Ev();
static  VTBL_ENTRY vtc_S19238C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C2[0]),
  (VTBL_ENTRY)&_ZN8S19238C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
Class_Descriptor cd_S19238C2 = {  "S19238C2", // class name
  bases_S19238C2, 1,
  &(vtc_S19238C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19238C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19238C2),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  S19238C5_nt  : virtual S2014C28 {
  ~S19238C5_nt(); // tgen
  S19238C5_nt(); // tgen
};
//SIG(-1 S19238C5_nt) C1{ VBC2{ m}}


S19238C5_nt ::~S19238C5_nt(){ note_dtor("S19238C5_nt", this);} // tgen
S19238C5_nt ::S19238C5_nt(){ note_ctor("S19238C5_nt", this);} // tgen

//skip512 S19238C5_nt

#else // __cplusplus

extern void _ZN11S19238C5_ntC1Ev();
extern void _ZN11S19238C5_ntD1Ev();
Name_Map name_map_S19238C5_nt[] = {
  NSPAIR(_ZN11S19238C5_ntC1Ev),
  NSPAIR(_ZN11S19238C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19238C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI11S19238C5_nt[];
static  VTBL_ENTRY vtc_S19238C5_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19238C5_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19238C5_nt[];
static  VTT_ENTRY vtt_S19238C5_nt[] = {
  {&(_ZTV11S19238C5_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S19238C5_nt[];
VTBL_ENTRY *P__ZTI11S19238C5_nt = _ZTI11S19238C5_nt; 
extern  VTBL_ENTRY _ZTV11S19238C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19238C5_nt[];
Class_Descriptor cd_S19238C5_nt = {  "S19238C5_nt", // class name
  bases_S19238C5_nt, 1,
  &(vtc_S19238C5_nt[0]), // expected_vtbl_contents
  &(vtt_S19238C5_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19238C5_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S19238C5_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19238C5_nt),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  S19238C8  : S2014C28 , S19238C2 , S2014C38 , S3222C8_nt {
  short s19238c8f0:16;
  __tsi64 s19238c8f1;
  ~S19238C8(); // tgen
  S19238C8(); // tgen
};
//SIG(-1 S19238C8) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 FL}


S19238C8 ::~S19238C8(){ note_dtor("S19238C8", this);} // tgen
S19238C8 ::S19238C8(){ note_ctor("S19238C8", this);} // tgen

static void Test_S19238C8()
{
  extern Class_Descriptor cd_S19238C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19238C8, buf);
    S19238C8 *dp, &lv = *(dp=new (buf) S19238C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19238C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C8)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19238C8");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*), 0, "S19238C8");
    check_base_class_offset(lv, (S19238C2*), 0, "S19238C8");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19238C8");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19238C8");
    set_bf_and_test(lv, s19238c8f0, ABISELECT(16,12), 0, 16, 1, "S19238C8");
    set_bf_and_test(lv, s19238c8f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19238C8");
    check_field_offset(lv, s19238c8f1, ABISELECT(24,16), "S19238C8.s19238c8f1");
    test_class_info(&lv, &cd_S19238C8);
    dp->~S19238C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C8(Test_S19238C8, "S19238C8", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S19238C8C1Ev();
extern void _ZN8S19238C8D1Ev();
Name_Map name_map_S19238C8[] = {
  NSPAIR(_ZN8S19238C8C1Ev),
  NSPAIR(_ZN8S19238C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19238C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S19238C8[];
extern void _ZN8S19238C8D1Ev();
extern void _ZN8S19238C8D0Ev();
static  VTBL_ENTRY vtc_S19238C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C8[0]),
  (VTBL_ENTRY)&_ZN8S19238C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C8D0Ev,
};
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
Class_Descriptor cd_S19238C8 = {  "S19238C8", // class name
  bases_S19238C8, 5,
  &(vtc_S19238C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S19238C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19238C8),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  S19238C7  : S19238C8 , S19238C2 {
  int s19238c7f0;
  ~S19238C7(); // tgen
  S19238C7(); // tgen
};
//SIG(-1 S19238C7) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 FL} BC4 Fi}


S19238C7 ::~S19238C7(){ note_dtor("S19238C7", this);} // tgen
S19238C7 ::S19238C7(){ note_ctor("S19238C7", this);} // tgen

static void Test_S19238C7()
{
  extern Class_Descriptor cd_S19238C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S19238C7, buf);
    S19238C7 *dp, &lv = *(dp=new (buf) S19238C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S19238C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C7)");
    check_base_class_offset(lv, (S2014C28*)(S19238C8*), 0, "S19238C7");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*), 0, "S19238C7");
    check_base_class_offset(lv, (S19238C2*)(S19238C8*), 0, "S19238C7");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*), ABISELECT(9,5), "S19238C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*), ABISELECT(12,8), "S19238C7");
    check_base_class_offset(lv, (S19238C8*), 0, "S19238C7");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(32,24), "S19238C7");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*), ABISELECT(32,24), "S19238C7");
    check_field_offset(lv, s19238c7f0, ABISELECT(44,32), "S19238C7.s19238c7f0");
    test_class_info(&lv, &cd_S19238C7);
    dp->~S19238C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C7(Test_S19238C7, "S19238C7", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN8S19238C7C1Ev();
extern void _ZN8S19238C7D1Ev();
Name_Map name_map_S19238C7[] = {
  NSPAIR(_ZN8S19238C7C1Ev),
  NSPAIR(_ZN8S19238C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
static Base_Class bases_S19238C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19238C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(32,24), //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 _ZTI8S19238C7[];
extern void _ZN8S19238C7D1Ev();
extern void _ZN8S19238C7D0Ev();
extern void ABISELECT(_ZThn32_N8S19238C7D1Ev,_ZThn24_N8S19238C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19238C7D0Ev,_ZThn24_N8S19238C7D0Ev)();
static  VTBL_ENTRY vtc_S19238C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C7[0]),
  (VTBL_ENTRY)&_ZN8S19238C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C7D0Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19238C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C7D1Ev,_ZThn24_N8S19238C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C7D0Ev,_ZThn24_N8S19238C7D0Ev),
};
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
Class_Descriptor cd_S19238C7 = {  "S19238C7", // class name
  bases_S19238C7, 8,
  &(vtc_S19238C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI8S19238C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19238C7),8, //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  S19238C4  : virtual S19238C5_nt , S19238C7 {
  int s19238c4f0;
  virtual  ~S19238C4(); // _ZN8S19238C4D2Ev
  virtual void  v1(); // _ZN8S19238C42v1Ev
  S19238C4(); // tgen
};
//SIG(-1 S19238C4) C1{ VBC2{ VBC3{ m}} BC4{ BC5{ BC3 BC6{ BC7{ m} vd FC7} BC7 BC8{ m Fi} Fs:16 FL} BC6 Fi} vd v1 Fi}


 S19238C4 ::~S19238C4(){ note_dtor("S19238C4", this);}
void  S19238C4 ::v1(){vfunc_called(this, "_ZN8S19238C42v1Ev");}
S19238C4 ::S19238C4(){ note_ctor("S19238C4", this);} // tgen

static void Test_S19238C4()
{
  extern Class_Descriptor cd_S19238C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S19238C4, buf);
    S19238C4 *dp, &lv = *(dp=new (buf) S19238C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S19238C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C4)");
    check_base_class_offset(lv, (S2014C28*)(S19238C5_nt*), ABISELECT(64,44), "S19238C4");
    check_base_class_offset(lv, (S19238C5_nt*), ABISELECT(56,40), "S19238C4");
    check_base_class_offset(lv, (S2014C28*)(S19238C8*)(S19238C7*), 0, "S19238C4");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*)(S19238C7*), 0, "S19238C4");
    check_base_class_offset(lv, (S19238C2*)(S19238C8*)(S19238C7*), 0, "S19238C4");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*)(S19238C7*), ABISELECT(9,5), "S19238C4");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*)(S19238C7*), ABISELECT(12,8), "S19238C4");
    check_base_class_offset(lv, (S19238C8*)(S19238C7*), 0, "S19238C4");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C7*), ABISELECT(32,24), "S19238C4");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C7*), ABISELECT(32,24), "S19238C4");
    check_base_class_offset(lv, (S19238C7*), 0, "S19238C4");
    check_field_offset(lv, s19238c4f0, ABISELECT(48,36), "S19238C4.s19238c4f0");
    test_class_info(&lv, &cd_S19238C4);
    dp->~S19238C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C4(Test_S19238C4, "S19238C4", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S19238C4C1Ev();
extern void _ZN8S19238C4D2Ev();
Name_Map name_map_S19238C4[] = {
  NSPAIR(_ZN8S19238C4C1Ev),
  NSPAIR(_ZN8S19238C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19238C5_nt;
extern VTBL_ENTRY _ZTI11S19238C5_nt[];
extern  VTBL_ENTRY _ZTV11S19238C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19238C5_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C7;
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
static Base_Class bases_S19238C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 1},
  {&cd_S19238C5_nt,    ABISELECT(56,40), //bcp->offset
    11, //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},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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_S19238C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(32,24), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19238C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19238C4[];
extern void _ZN8S19238C4D1Ev();
extern void _ZN8S19238C4D0Ev();
extern void _ZN8S19238C42v1Ev();
extern void ABISELECT(_ZThn32_N8S19238C4D1Ev,_ZThn24_N8S19238C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19238C4D0Ev,_ZThn24_N8S19238C4D0Ev)();
static  VTBL_ENTRY vtc_S19238C4[] = {
  ABISELECT(64,44),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C4[0]),
  (VTBL_ENTRY)&_ZN8S19238C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19238C42v1Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19238C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C4D1Ev,_ZThn24_N8S19238C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C4D0Ev,_ZThn24_N8S19238C4D0Ev),
  ABISELECT(8,4),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19238C4[0]),
};
extern VTBL_ENTRY _ZTV8S19238C4[];
static  VTBL_ENTRY _tg__ZTV11S19238C5_nt__8S19238C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19238C5_nt[0]),
};
static  VTT_ENTRY vtt_S19238C4[] = {
  {&(_ZTV8S19238C4[4]),  4,14},
  {&(_ZTV8S19238C4[14]),  14,14},
  {&(_tg__ZTV11S19238C5_nt__8S19238C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19238C4[];
extern  VTBL_ENTRY _ZTV8S19238C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19238C4[];
Class_Descriptor cd_S19238C4 = {  "S19238C4", // class name
  bases_S19238C4, 11,
  &(vtc_S19238C4[0]), // expected_vtbl_contents
  &(vtt_S19238C4[0]), // expected_vtt_contents
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S19238C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19238C4),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19238C4),3, //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  S19238C13  : virtual S19238C2 {
  __tsi64 s19238c13f0;
  ~S19238C13(); // tgen
  S19238C13(); // tgen
};
//SIG(-1 S19238C13) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19238C13 ::~S19238C13(){ note_dtor("S19238C13", this);} // tgen
S19238C13 ::S19238C13(){ note_ctor("S19238C13", this);} // tgen

static void Test_S19238C13()
{
  extern Class_Descriptor cd_S19238C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19238C13, buf);
    S19238C13 *dp, &lv = *(dp=new (buf) S19238C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19238C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C13)");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(16,12), "S19238C13");
    check_base_class_offset(lv, (S19238C2*), ABISELECT(16,12), "S19238C13");
    check_field_offset(lv, s19238c13f0, ABISELECT(8,4), "S19238C13.s19238c13f0");
    test_class_info(&lv, &cd_S19238C13);
    dp->~S19238C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C13(Test_S19238C13, "S19238C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19238C13C1Ev();
extern void _ZN9S19238C13D1Ev();
Name_Map name_map_S19238C13[] = {
  NSPAIR(_ZN9S19238C13C1Ev),
  NSPAIR(_ZN9S19238C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
static Base_Class bases_S19238C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19238C2,    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 _ZTI9S19238C13[];
extern void _ZN9S19238C13D1Ev();
extern void _ZN9S19238C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19238C13D1Ev,_ZThn12_N9S19238C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19238C13D0Ev,_ZThn12_N9S19238C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C13[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&_ZN9S19238C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C13[];
static  VTT_ENTRY vtt_S19238C13[] = {
  {&(_ZTV9S19238C13[3]),  3,10},
  {&(_ZTV9S19238C13[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19238C13[];
extern  VTBL_ENTRY _ZTV9S19238C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C13[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19238C13D0Ev,_ZThn12_N9S19238C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19238C13D1Ev,_ZThn12_N9S19238C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C13 = {  "S19238C13", // class name
  bases_S19238C13, 2,
  &(vtc_S19238C13[0]), // expected_vtbl_contents
  &(vtt_S19238C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19238C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19238C13),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C14  : virtual S2014C28 , virtual S19238C2 , virtual S3222C8_nt {
  void *s19238c14f0;
  ::S19762C18_nt s19238c14f1;
  virtual  ~S19238C14(); // _ZN9S19238C14D2Ev
  S19238C14(); // tgen
};
//SIG(-1 S19238C14) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19238C14 ::~S19238C14(){ note_dtor("S19238C14", this);}
S19238C14 ::S19238C14(){ note_ctor("S19238C14", this);} // tgen

static void Test_S19238C14()
{
  extern Class_Descriptor cd_S19238C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19238C14, buf);
    S19238C14 *dp, &lv = *(dp=new (buf) S19238C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19238C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C14)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19238C14");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(24,12), "S19238C14");
    check_base_class_offset(lv, (S19238C2*), ABISELECT(24,12), "S19238C14");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19238C14");
    check_field_offset(lv, s19238c14f0, ABISELECT(8,4), "S19238C14.s19238c14f0");
    check_field_offset(lv, s19238c14f1, ABISELECT(16,8), "S19238C14.s19238c14f1");
    test_class_info(&lv, &cd_S19238C14);
    dp->~S19238C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C14(Test_S19238C14, "S19238C14", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19238C14C1Ev();
extern void _ZN9S19238C14D2Ev();
Name_Map name_map_S19238C14[] = {
  NSPAIR(_ZN9S19238C14C1Ev),
  NSPAIR(_ZN9S19238C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19238C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19238C14[];
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C14[];
static  VTT_ENTRY vtt_S19238C14[] = {
  {&(_ZTV9S19238C14[5]),  5,12},
  {&(_ZTV9S19238C14[10]),  10,12},
};
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C14 = {  "S19238C14", // class name
  bases_S19238C14, 4,
  &(vtc_S19238C14[0]), // expected_vtbl_contents
  &(vtt_S19238C14[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19238C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19238C14),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C12  : S19238C13 , virtual S2014C28 , virtual S3222C8_nt , virtual S19238C14 , virtual S19238C7 {
  long s19238c12f0;
  ::S19238C13 s19238c12f1;
  virtual  ~S19238C12(); // _ZN9S19238C12D2Ev
  S19238C12(); // tgen
};
//SIG(-1 S19238C12) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 FL} BC3 Fi} vd Fl FC2}


 S19238C12 ::~S19238C12(){ note_dtor("S19238C12", this);}
S19238C12 ::S19238C12(){ note_ctor("S19238C12", this);} // tgen

static void Test_S19238C12()
{
  extern Class_Descriptor cd_S19238C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19238C12, buf);
    S19238C12 *dp, &lv = *(dp=new (buf) S19238C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19238C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C12)");
    /*is_ambiguous_... S19238C12::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(56,36), "S19238C12");
    check_base_class_offset(lv, (S19238C2*)(S19238C13*), ABISELECT(56,36), "S19238C12");
    check_base_class_offset(lv, (S19238C2*)(S19238C14*), ABISELECT(56,36), "S19238C12");
    check_base_class_offset(lv, (S19238C13*), 0, "S19238C12");
    /*is_ambiguous_... S19238C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S19238C12");
    check_base_class_offset(lv, (S2014C28*)(S19238C14*), 0, "S19238C12");
    /*is_ambiguous_... S19238C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19238C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C14*), ABISELECT(68,44), "S19238C12");
    check_base_class_offset(lv, (S19238C14*), ABISELECT(72,48), "S19238C12");
    check_base_class_offset(lv, (S2014C28*)(S19238C8*)(S19238C7*), ABISELECT(96,60), "S19238C12");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(96,60), "S19238C12");
    check_base_class_offset(lv, (S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(96,60), "S19238C12");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*)(S19238C7*), ABISELECT(105,65), "S19238C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*)(S19238C7*), ABISELECT(108,68), "S19238C12");
    check_base_class_offset(lv, (S19238C8*)(S19238C7*), ABISELECT(96,60), "S19238C12");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C7*), ABISELECT(128,84), "S19238C12");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C7*), ABISELECT(128,84), "S19238C12");
    check_base_class_offset(lv, (S19238C7*), ABISELECT(96,60), "S19238C12");
    check_field_offset(lv, s19238c12f0, ABISELECT(16,12), "S19238C12.s19238c12f0");
    check_field_offset(lv, s19238c12f1, ABISELECT(24,16), "S19238C12.s19238c12f1");
    test_class_info(&lv, &cd_S19238C12);
    dp->~S19238C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C12(Test_S19238C12, "S19238C12", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN9S19238C12C1Ev();
extern void _ZN9S19238C12D2Ev();
Name_Map name_map_S19238C12[] = {
  NSPAIR(_ZN9S19238C12C1Ev),
  NSPAIR(_ZN9S19238C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C13;
extern VTBL_ENTRY _ZTI9S19238C13[];
extern  VTBL_ENTRY _ZTV9S19238C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C13[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C14;
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C7;
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
static Base_Class bases_S19238C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(56,36), //bcp->offset
    9, //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_S19238C13,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19238C14,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19238C2,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19238C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(128,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_S19238C2,    ABISELECT(128,84), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19238C7,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19238C12[];
extern void _ZN9S19238C12D1Ev();
extern void _ZN9S19238C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19238C12D1Ev,_ZThn36_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19238C12D0Ev,_ZThn36_N9S19238C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19238C12D1Ev,_ZThn48_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19238C12D0Ev,_ZThn48_N9S19238C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19238C12D1Ev,_ZThn60_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19238C12D0Ev,_ZThn60_N9S19238C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev)();
static  VTBL_ENTRY vtc_S19238C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&_ZN9S19238C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C12D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C12[];
extern void _ZN9S19238C13D1Ev();
extern void _ZN9S19238C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C13__9S19238C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&_ZN9S19238C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19238C13D1Ev,_ZThn36_N9S19238C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19238C13D0Ev,_ZThn36_N9S19238C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C13__9S19238C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev),
};
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C14__9S19238C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
static  VTT_ENTRY vtt_S19238C12[] = {
  {&(_ZTV9S19238C12[7]),  7,31},
  {&(_tg__ZTV9S19238C13__9S19238C12[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C13__9S19238C12[3]),  3,5},
  {&(_ZTV9S19238C12[12]),  12,31},
  {&(_ZTV9S19238C12[20]),  20,31},
  {&(_ZTV9S19238C12[25]),  25,31},
  {&(_ZTV9S19238C12[29]),  29,31},
  {&(_tg__ZTV9S19238C14__9S19238C12[5]),  5,7},
  {&(_tg__ZTV8S19238C2__9S19238C14__9S19238C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19238C12[];
extern  VTBL_ENTRY _ZTV9S19238C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C12[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C13D0Ev,_ZThn36_N9S19238C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C13D1Ev,_ZThn36_N9S19238C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C12D0Ev,_ZThn48_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C12D1Ev,_ZThn48_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19238C12D0Ev,_ZThn60_N9S19238C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C12D0Ev,_ZThn36_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19238C12D1Ev,_ZThn60_N9S19238C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C12D1Ev,_ZThn36_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C12 = {  "S19238C12", // class name
  bases_S19238C12, 15,
  &(vtc_S19238C12[0]), // expected_vtbl_contents
  &(vtt_S19238C12[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI9S19238C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19238C12),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C17  : S2014C38 , S19238C2 , virtual S2014C28 , virtual S19238C14 {
  virtual  ~S19238C17(); // _ZN9S19238C17D2Ev
  S19238C17(); // tgen
};
//SIG(-1 S19238C17) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19238C17 ::~S19238C17(){ note_dtor("S19238C17", this);}
S19238C17 ::S19238C17(){ note_ctor("S19238C17", this);} // tgen

static void Test_S19238C17()
{
  extern Class_Descriptor cd_S19238C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19238C17, buf);
    S19238C17 *dp, &lv = *(dp=new (buf) S19238C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19238C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C17)");
    /*is_ambiguous_... S19238C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19238C17");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), 0, "S19238C17");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*), 0, "S19238C17");
    check_base_class_offset(lv, (S2014C28*), 0, "S19238C17");
    check_base_class_offset(lv, (S2014C28*)(S19238C14*), 0, "S19238C17");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(40,20), "S19238C17");
    check_base_class_offset(lv, (S19238C2*)(S19238C14*), ABISELECT(40,20), "S19238C17");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C14*), ABISELECT(52,28), "S19238C17");
    check_base_class_offset(lv, (S19238C14*), ABISELECT(16,8), "S19238C17");
    test_class_info(&lv, &cd_S19238C17);
    dp->~S19238C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C17(Test_S19238C17, "S19238C17", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19238C17C1Ev();
extern void _ZN9S19238C17D2Ev();
Name_Map name_map_S19238C17[] = {
  NSPAIR(_ZN9S19238C17C1Ev),
  NSPAIR(_ZN9S19238C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C14;
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
static Base_Class bases_S19238C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19238C14,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19238C17[];
extern void _ZN9S19238C17D1Ev();
extern void _ZN9S19238C17D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19238C17D1Ev,_ZThn8_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19238C17D0Ev,_ZThn8_N9S19238C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn20_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn20_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C17[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&_ZN9S19238C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C17D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C17[];
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C17[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C14__9S19238C17[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
static  VTT_ENTRY vtt_S19238C17[] = {
  {&(_ZTV9S19238C17[6]),  6,21},
  {&(_ZTV9S19238C17[14]),  14,21},
  {&(_ZTV9S19238C17[19]),  19,21},
  {&(_tg__ZTV9S19238C14__9S19238C17[5]),  5,7},
  {&(_tg__ZTV8S19238C2__9S19238C14__9S19238C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19238C17[];
extern  VTBL_ENTRY _ZTV9S19238C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C17[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn20_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn20_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19238C17D0Ev,_ZThn8_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19238C17D1Ev,_ZThn8_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C17 = {  "S19238C17", // class name
  bases_S19238C17, 8,
  &(vtc_S19238C17[0]), // expected_vtbl_contents
  &(vtt_S19238C17[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19238C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19238C17),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C17),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C16  : virtual S19238C14 , S19238C17 , virtual S2014C38 {
  ::S3222C8_nt s19238c16f0[6];
  virtual  ~S19238C16(); // _ZN9S19238C16D2Ev
  S19238C16(); // tgen
};
//SIG(-1 S19238C16) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19238C16 ::~S19238C16(){ note_dtor("S19238C16", this);}
S19238C16 ::S19238C16(){ note_ctor("S19238C16", this);} // tgen

static void Test_S19238C16()
{
  extern Class_Descriptor cd_S19238C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19238C16, buf);
    S19238C16 *dp, &lv = *(dp=new (buf) S19238C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19238C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C16)");
    check_base_class_offset(lv, (S2014C28*)(S19238C14*), 0, "S19238C16");
    check_base_class_offset(lv, (S2014C28*)(S19238C17*), 0, "S19238C16");
    /*is_ambiguous_... S19238C16::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(64,44), "S19238C16");
    check_base_class_offset(lv, (S19238C2*)(S19238C14*), ABISELECT(64,44), "S19238C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C14*), ABISELECT(76,52), "S19238C16");
    check_base_class_offset(lv, (S19238C14*), ABISELECT(40,32), "S19238C16");
    check_base_class_offset(lv, (S19238C14*)(S19238C17*), ABISELECT(40,32), "S19238C16");
    /*is_ambiguous_... S19238C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C17*), ABISELECT(9,5), "S19238C16");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C17*), 0, "S19238C16");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C17*), 0, "S19238C16");
    check_base_class_offset(lv, (S19238C17*), 0, "S19238C16");
    /*is_ambiguous_... S19238C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S19238C16");
    check_field_offset(lv, s19238c16f0, ABISELECT(12,8), "S19238C16.s19238c16f0");
    test_class_info(&lv, &cd_S19238C16);
    dp->~S19238C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C16(Test_S19238C16, "S19238C16", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19238C16C1Ev();
extern void _ZN9S19238C16D2Ev();
Name_Map name_map_S19238C16[] = {
  NSPAIR(_ZN9S19238C16C1Ev),
  NSPAIR(_ZN9S19238C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C14;
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C17;
extern VTBL_ENTRY _ZTI9S19238C17[];
extern  VTBL_ENTRY _ZTV9S19238C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19238C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19238C14,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19238C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19238C16[];
extern void _ZN9S19238C16D1Ev();
extern void _ZN9S19238C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19238C16D1Ev,_ZThn44_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19238C16D0Ev,_ZThn44_N9S19238C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C16[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&_ZN9S19238C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C16D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C16[];
extern void _ZN9S19238C17D1Ev();
extern void _ZN9S19238C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C17__9S19238C16[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&_ZN9S19238C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C17__9S19238C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19238C17D1Ev,_ZThn44_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19238C17D0Ev,_ZThn44_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__A1__9S19238C17__9S19238C16[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev),
};
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C16[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C14__9S19238C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
static  VTT_ENTRY vtt_S19238C16[] = {
  {&(_ZTV9S19238C16[7]),  7,22},
  {&(_tg__ZTV9S19238C17__9S19238C16[6]),  6,8},
  {&(_tg__ZTV9S19238C14__9S19238C17__9S19238C16[6]),  6,8},
  {&(_tg__ZTV8S19238C2__A1__9S19238C17__9S19238C16[3]),  3,5},
  {&(_ZTV9S19238C16[15]),  15,22},
  {&(_ZTV9S19238C16[20]),  20,22},
  {&(_tg__ZTV9S19238C14__9S19238C16[5]),  5,7},
  {&(_tg__ZTV8S19238C2__9S19238C14__9S19238C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19238C16[];
extern  VTBL_ENTRY _ZTV9S19238C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C16[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D0Ev,_ZThn12_N9S19238C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19238C14D1Ev,_ZThn12_N9S19238C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19238C17D0Ev,_ZThn44_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19238C17D1Ev,_ZThn44_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19238C16D0Ev,_ZThn44_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19238C16D1Ev,_ZThn44_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C16 = {  "S19238C16", // class name
  bases_S19238C16, 10,
  &(vtc_S19238C16[0]), // expected_vtbl_contents
  &(vtt_S19238C16[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19238C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19238C16),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C16),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C11  : S19238C12 , S19238C2 , virtual S19238C8 , S19238C16 {
  virtual  ~S19238C11(); // _ZN9S19238C11D2Ev
  S19238C11(); // tgen
};
//SIG(-1 S19238C11) C1{ BC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 FL} BC4 Fi} vd Fl FC3} BC4 VBC11 BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} vd}


 S19238C11 ::~S19238C11(){ note_dtor("S19238C11", this);}
S19238C11 ::S19238C11(){ note_ctor("S19238C11", this);} // tgen

static void Test_S19238C11()
{
  extern Class_Descriptor cd_S19238C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,41)];
    init_test(&cd_S19238C11, buf);
    S19238C11 *dp, &lv = *(dp=new (buf) S19238C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,160), "sizeof(S19238C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C11)");
    /*is_ambiguous_... S19238C11::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(112,76), "S19238C11");
    check_base_class_offset(lv, (S19238C2*)(S19238C13*)(S19238C12*), ABISELECT(112,76), "S19238C11");
    check_base_class_offset(lv, (S19238C2*)(S19238C14*), ABISELECT(112,76), "S19238C11");
    check_base_class_offset(lv, (S19238C13*)(S19238C12*), 0, "S19238C11");
    /*is_ambiguous_... S19238C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19238C12*), 0, "S19238C11");
    check_base_class_offset(lv, (S2014C28*)(S19238C14*), 0, "S19238C11");
    check_base_class_offset(lv, (S2014C28*)(S19238C17*)(S19238C16*), 0, "S19238C11");
    /*is_ambiguous_... S19238C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19238C12*), ABISELECT(124,84), "S19238C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C14*), ABISELECT(124,84), "S19238C11");
    check_base_class_offset(lv, (S19238C14*)(S19238C12*), ABISELECT(128,88), "S19238C11");
    check_base_class_offset(lv, (S19238C14*)(S19238C16*), ABISELECT(128,88), "S19238C11");
    check_base_class_offset(lv, (S19238C14*)(S19238C17*)(S19238C16*), ABISELECT(128,88), "S19238C11");
    check_base_class_offset(lv, (S2014C28*)(S19238C8*)(S19238C7*), ABISELECT(152,100), "S19238C11");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(152,100), "S19238C11");
    check_base_class_offset(lv, (S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(152,100), "S19238C11");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*)(S19238C7*), ABISELECT(161,105), "S19238C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*)(S19238C7*), ABISELECT(164,108), "S19238C11");
    check_base_class_offset(lv, (S19238C8*)(S19238C7*), ABISELECT(152,100), "S19238C11");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C7*), ABISELECT(184,124), "S19238C11");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C7*), ABISELECT(184,124), "S19238C11");
    check_base_class_offset(lv, (S19238C7*)(S19238C12*), ABISELECT(152,100), "S19238C11");
    check_base_class_offset(lv, (S19238C12*), 0, "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(56,36), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*), ABISELECT(56,36), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19238C8*), ABISELECT(200,136), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*), ABISELECT(200,136), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C8*), ABISELECT(200,136), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*), ABISELECT(209,141), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*), ABISELECT(212,144), "S19238C11");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S19238C8*), ABISELECT(200,136), "S19238C11");
    /*is_ambiguous_... S19238C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C17*)(S19238C16*), ABISELECT(81,49), "S19238C11");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C17*)(S19238C16*), ABISELECT(72,44), "S19238C11");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C17*)(S19238C16*), ABISELECT(72,44), "S19238C11");
    check_base_class_offset(lv, (S19238C17*)(S19238C16*), ABISELECT(72,44), "S19238C11");
    /*is_ambiguous_... S19238C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C16*), 0, "S19238C11");
    check_base_class_offset(lv, (S19238C16*), ABISELECT(72,44), "S19238C11");
    test_class_info(&lv, &cd_S19238C11);
    dp->~S19238C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C11(Test_S19238C11, "S19238C11", ABISELECT(232,160));

#else // __cplusplus

extern void _ZN9S19238C11C1Ev();
extern void _ZN9S19238C11D2Ev();
Name_Map name_map_S19238C11[] = {
  NSPAIR(_ZN9S19238C11C1Ev),
  NSPAIR(_ZN9S19238C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C13;
extern VTBL_ENTRY _ZTI9S19238C13[];
extern  VTBL_ENTRY _ZTV9S19238C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C13[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C14;
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C7;
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
extern Class_Descriptor cd_S19238C12;
extern VTBL_ENTRY _ZTI9S19238C12[];
extern  VTBL_ENTRY _ZTV9S19238C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C12[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C17;
extern VTBL_ENTRY _ZTI9S19238C17[];
extern  VTBL_ENTRY _ZTV9S19238C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C16;
extern VTBL_ENTRY _ZTI9S19238C16[];
extern  VTBL_ENTRY _ZTV9S19238C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C16[];
static Base_Class bases_S19238C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(112,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
    1, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(112,76), //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
    2, //immediately_derived
  0, 1},
  {&cd_S19238C13,    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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(124,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
    5, //immediately_derived
  0, 1},
  {&cd_S19238C14,    ABISELECT(128,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(152,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
    8, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(161,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
    11, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(164,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
    11, //immediately_derived
  0, 0},
  {&cd_S19238C8,    ABISELECT(152,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(184,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_S19238C2,    ABISELECT(184,124), //bcp->offset
    42, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19238C7,    ABISELECT(152,100), //bcp->offset
    37, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19238C12,    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},
  {&cd_S2014C38,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(56,36), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    ABISELECT(200,136), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(209,141), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(212,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
    23, //immediately_derived
  0, 0},
  {&cd_S19238C8,    ABISELECT(200,136), //bcp->offset
    46, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19238C2,    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
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19238C17,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19238C16,    ABISELECT(72,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19238C11[];
extern void _ZN9S19238C11D1Ev();
extern void _ZN9S19238C11D0Ev();
extern void ABISELECT(_ZThn56_N9S19238C11D1Ev,_ZThn36_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19238C11D0Ev,_ZThn36_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19238C11D1Ev,_ZThn44_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19238C11D0Ev,_ZThn44_N9S19238C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C11D1Ev,_ZThn76_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C11D0Ev,_ZThn76_N9S19238C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19238C11D1Ev,_ZThn88_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19238C11D0Ev,_ZThn88_N9S19238C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19238C11D1Ev,_ZThn100_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19238C11D0Ev,_ZThn100_N9S19238C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19238C11D1Ev,_ZTvn24_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19238C11D0Ev,_ZTvn24_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S19238C11D1Ev,_ZThn136_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S19238C11D0Ev,_ZThn136_N9S19238C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C11[] = {
  0,
  ABISELECT(200,136),
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&_ZN9S19238C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C11D0Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19238C11D1Ev,_ZThn36_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19238C11D0Ev,_ZThn36_N9S19238C11D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19238C11D1Ev,_ZThn44_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19238C11D0Ev,_ZThn44_N9S19238C11D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C11D1Ev,_ZTvn24_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C11D0Ev,_ZTvn24_n12_N9S19238C11D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19238C11[];
extern void _ZN9S19238C12D1Ev();
extern void _ZN9S19238C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C12__9S19238C11[] = {
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&_ZN9S19238C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C12D0Ev,
};
extern void _ZN9S19238C13D1Ev();
extern void _ZN9S19238C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C139S19238C12__9S19238C11[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&_ZN9S19238C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C13D1Ev,_ZThn76_N9S19238C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C13D0Ev,_ZThn76_N9S19238C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C139S19238C12__9S19238C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C12D1Ev,_ZThn76_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C12D0Ev,_ZThn76_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C12__9S19238C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19238C12D1Ev,_ZThn88_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19238C12D0Ev,_ZThn88_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C12__9S19238C11[] = {
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn152_N9S19238C12D1Ev,_ZThn100_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn152_N9S19238C12D0Ev,_ZThn100_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C7__9S19238C12__9S19238C11[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C28S19238C7__A2__9S19238C12__9S19238C11[] = {
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev),
};
extern void _ZN9S19238C16D1Ev();
extern void _ZN9S19238C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C16__9S19238C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&_ZN9S19238C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C16D0Ev,
};
extern void _ZN9S19238C17D1Ev();
extern void _ZN9S19238C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C179S19238C16__9S19238C11[] = {
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&_ZN9S19238C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S19238C17D1Ev,_ZThn44_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S19238C17D0Ev,_ZThn44_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C179S19238C16__9S19238C11[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__A1__9S19238C179S19238C16__9S19238C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S19238C16D1Ev,_ZThn44_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S19238C16D0Ev,_ZThn44_N9S19238C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C16__9S19238C11[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C16__9S19238C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev),
};
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C11[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C14__9S19238C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
static  VTT_ENTRY vtt_S19238C11[] = {
  {&(_ZTV9S19238C11[9]),  9,51},
  {&(_tg__ZTV9S19238C12__9S19238C11[7]),  7,9},
  {&(_tg__ZTV9S19238C139S19238C12__9S19238C11[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C139S19238C12__9S19238C11[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C12__9S19238C11[3]),  3,5},
  {&(_tg__ZTV9S19238C14__9S19238C12__9S19238C11[6]),  6,8},
  {&(_tg__ZTV8S19238C7__9S19238C12__9S19238C11[3]),  3,5},
  {&(_tg__ZTV8S19238C28S19238C7__A2__9S19238C12__9S19238C11[2]),  2,4},
  {&(_tg__ZTV9S19238C16__9S19238C11[7]),  7,9},
  {&(_tg__ZTV9S19238C179S19238C16__9S19238C11[6]),  6,8},
  {&(_tg__ZTV9S19238C14__9S19238C179S19238C16__9S19238C11[6]),  6,8},
  {&(_tg__ZTV8S19238C2__A1__9S19238C179S19238C16__9S19238C11[3]),  3,5},
  {&(_tg__ZTV9S19238C14__9S19238C16__9S19238C11[6]),  6,8},
  {&(_tg__ZTV8S19238C2__9S19238C16__9S19238C11[3]),  3,5},
  {&(_ZTV9S19238C11[27]),  27,51},
  {&(_ZTV9S19238C11[35]),  35,51},
  {&(_ZTV9S19238C11[40]),  40,51},
  {&(_ZTV9S19238C11[44]),  44,51},
  {&(_ZTV9S19238C11[49]),  49,51},
  {&(_ZTV9S19238C11[22]),  22,51},
  {&(_tg__ZTV9S19238C14__9S19238C11[5]),  5,7},
  {&(_tg__ZTV8S19238C2__9S19238C14__9S19238C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19238C11[];
extern  VTBL_ENTRY _ZTV9S19238C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C11[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C16D0Ev,_ZThn44_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C16D1Ev,_ZThn44_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C17D0Ev,_ZThn44_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19238C17D1Ev,_ZThn44_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19238C12D0Ev,_ZThn88_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19238C12D1Ev,_ZThn88_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19238C12D0Ev,_ZThn100_N9S19238C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C12D0Ev,_ZThn76_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19238C12D1Ev,_ZThn100_N9S19238C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C12D1Ev,_ZThn76_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C13D0Ev,_ZThn76_N9S19238C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C13D1Ev,_ZThn76_N9S19238C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19238C11D0Ev,_ZThn88_N9S19238C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19238C11D1Ev,_ZThn88_N9S19238C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19238C11D0Ev,_ZThn136_N9S19238C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19238C11D0Ev,_ZThn100_N9S19238C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C11D0Ev,_ZThn76_N9S19238C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19238C11D1Ev,_ZThn136_N9S19238C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19238C11D1Ev,_ZThn100_N9S19238C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C11D1Ev,_ZThn76_N9S19238C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C11 = {  "S19238C11", // class name
  bases_S19238C11, 30,
  &(vtc_S19238C11[0]), // expected_vtbl_contents
  &(vtt_S19238C11[0]), // expected_vtt_contents
  ABISELECT(232,160), // object size
  NSPAIRA(_ZTI9S19238C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19238C11),51, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19238C11),22, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19238C1  : virtual S19238C2 , S19238C4 , virtual S2014C24 , S19238C11 {
  ~S19238C1(); // tgen
  S19238C1(); // tgen
};
//SIG(1 S19238C1) C1{ VBC2{ BC3{ m} vd FC3} BC4{ VBC5{ VBC6{ m}} BC7{ BC8{ BC6 BC2 BC3 BC9{ m Fi} Fs:16 FL} BC2 Fi} vd v1 Fi} VBC10{ m} BC11{ BC12{ BC13{ VBC2 FL} VBC6 VBC9 VBC14{ VBC6 VBC2 VBC9 vd Fp FC15{}} VBC7 vd Fl FC13} BC2 VBC8 BC16{ VBC14 BC17{ BC3 BC2 VBC6 VBC14 vd} VBC3 vd FC9[6]} vd}}


S19238C1 ::~S19238C1(){ note_dtor("S19238C1", this);} // tgen
S19238C1 ::S19238C1(){ note_ctor("S19238C1", this);} // tgen

static void Test_S19238C1()
{
  extern Class_Descriptor cd_S19238C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,53)];
    init_test(&cd_S19238C1, buf);
    S19238C1 *dp, &lv = *(dp=new (buf) S19238C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,208), "sizeof(S19238C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19238C1)");
    /*is_ambiguous_... S19238C1::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*), ABISELECT(168,116), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*), ABISELECT(168,116), "S19238C1");
    check_base_class_offset(lv, (S19238C2*)(S19238C13*)(S19238C12*)(S19238C11*), ABISELECT(168,116), "S19238C1");
    check_base_class_offset(lv, (S19238C2*)(S19238C14*), ABISELECT(168,116), "S19238C1");
    check_base_class_offset(lv, (S2014C28*)(S19238C5_nt*), ABISELECT(192,128), "S19238C1");
    /*is_ambiguous_... S19238C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19238C12*)(S19238C11*), ABISELECT(192,128), "S19238C1");
    check_base_class_offset(lv, (S2014C28*)(S19238C14*), ABISELECT(192,128), "S19238C1");
    check_base_class_offset(lv, (S2014C28*)(S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(192,128), "S19238C1");
    check_base_class_offset(lv, (S19238C5_nt*)(S19238C4*), ABISELECT(184,124), "S19238C1");
    check_base_class_offset(lv, (S2014C28*)(S19238C8*)(S19238C7*)(S19238C4*), 0, "S19238C1");
    check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*)(S19238C7*)(S19238C4*), 0, "S19238C1");
    check_base_class_offset(lv, (S19238C2*)(S19238C8*)(S19238C7*)(S19238C4*), 0, "S19238C1");
    /*is_ambiguous_... S19238C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*)(S19238C7*)(S19238C4*), ABISELECT(9,5), "S19238C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*)(S19238C7*)(S19238C4*), ABISELECT(12,8), "S19238C1");
    check_base_class_offset(lv, (S19238C8*)(S19238C7*)(S19238C4*), 0, "S19238C1");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C7*)(S19238C4*), ABISELECT(32,24), "S19238C1");
    /*is_ambiguous_... S19238C7::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C7*)(S19238C4*), ABISELECT(32,24), "S19238C1");
    check_base_class_offset(lv, (S19238C7*)(S19238C4*), 0, "S19238C1");
    check_base_class_offset(lv, (S19238C4*), 0, "S19238C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S19238C1");
    check_base_class_offset(lv, (S19238C13*)(S19238C12*)(S19238C11*), ABISELECT(56,40), "S19238C1");
    /*is_ambiguous_... S19238C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19238C12*)(S19238C11*), ABISELECT(192,128), "S19238C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19238C14*), ABISELECT(192,128), "S19238C1");
    check_base_class_offset(lv, (S19238C14*)(S19238C12*)(S19238C11*), ABISELECT(200,132), "S19238C1");
    check_base_class_offset(lv, (S19238C14*)(S19238C16*)(S19238C11*), ABISELECT(200,132), "S19238C1");
    check_base_class_offset(lv, (S19238C14*)(S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(200,132), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19238C8*)(S19238C7*), ABISELECT(224,144), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(224,144), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C8*)(S19238C7*), ABISELECT(224,144), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*)(S19238C7*), ABISELECT(233,149), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*)(S19238C7*), ABISELECT(236,152), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S19238C8*)(S19238C7*), ABISELECT(224,144), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C7*), ABISELECT(256,168), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C7 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C7*), ABISELECT(256,168), "S19238C1");
    check_base_class_offset(lv, (S19238C7*)(S19238C12*)(S19238C11*), ABISELECT(224,144), "S19238C1");
    check_base_class_offset(lv, (S19238C12*)(S19238C11*), ABISELECT(56,40), "S19238C1");
    /*is_ambiguous_... S19238C11::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C11*), ABISELECT(112,76), "S19238C1");
    /*is_ambiguous_... S19238C11::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C11*), ABISELECT(112,76), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19238C8*), ABISELECT(272,180), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C8*), ABISELECT(272,180), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C8 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C8*), ABISELECT(272,180), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C8*), ABISELECT(281,185), "S19238C1");
    /*is_ambiguous_... S19238C1::S19238C8 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19238C8*), ABISELECT(284,188), "S19238C1");
    /*is_ambiguous_... S19238C11::S19238C8 */ AMB_check_base_class_offset(lv, (S19238C8*)(S19238C11*), ABISELECT(272,180), "S19238C1");
    /*is_ambiguous_... S19238C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(137,89), "S19238C1");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C2*)(S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(128,84), "S19238C1");
    /*is_ambiguous_... S19238C17::S19238C2 */ AMB_check_base_class_offset(lv, (S19238C2*)(S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(128,84), "S19238C1");
    check_base_class_offset(lv, (S19238C17*)(S19238C16*)(S19238C11*), ABISELECT(128,84), "S19238C1");
    /*is_ambiguous_... S19238C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19238C16*)(S19238C11*), ABISELECT(304,204), "S19238C1");
    check_base_class_offset(lv, (S19238C16*)(S19238C11*), ABISELECT(128,84), "S19238C1");
    check_base_class_offset(lv, (S19238C11*), ABISELECT(56,40), "S19238C1");
    test_class_info(&lv, &cd_S19238C1);
    dp->~S19238C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19238C1(Test_S19238C1, "S19238C1", ABISELECT(312,208));

#else // __cplusplus

extern void _ZN8S19238C1C1Ev();
extern void _ZN8S19238C1D1Ev();
Name_Map name_map_S19238C1[] = {
  NSPAIR(_ZN8S19238C1C1Ev),
  NSPAIR(_ZN8S19238C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19238C5_nt;
extern VTBL_ENTRY _ZTI11S19238C5_nt[];
extern  VTBL_ENTRY _ZTV11S19238C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19238C5_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C7;
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
extern Class_Descriptor cd_S19238C4;
extern VTBL_ENTRY _ZTI8S19238C4[];
extern  VTBL_ENTRY _ZTV8S19238C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19238C4[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19238C13;
extern VTBL_ENTRY _ZTI9S19238C13[];
extern  VTBL_ENTRY _ZTV9S19238C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C13[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C14;
extern VTBL_ENTRY _ZTI9S19238C14[];
extern  VTBL_ENTRY _ZTV9S19238C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C7;
extern VTBL_ENTRY _ZTI8S19238C7[];
extern  VTBL_ENTRY _ZTV8S19238C7[];
extern Class_Descriptor cd_S19238C12;
extern VTBL_ENTRY _ZTI9S19238C12[];
extern  VTBL_ENTRY _ZTV9S19238C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C12[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19238C8;
extern VTBL_ENTRY _ZTI8S19238C8[];
extern  VTBL_ENTRY _ZTV8S19238C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C2;
extern VTBL_ENTRY _ZTI8S19238C2[];
extern  VTBL_ENTRY _ZTV8S19238C2[];
extern Class_Descriptor cd_S19238C17;
extern VTBL_ENTRY _ZTI9S19238C17[];
extern  VTBL_ENTRY _ZTV9S19238C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19238C16;
extern VTBL_ENTRY _ZTI9S19238C16[];
extern  VTBL_ENTRY _ZTV9S19238C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C16[];
extern Class_Descriptor cd_S19238C11;
extern VTBL_ENTRY _ZTI9S19238C11[];
extern  VTBL_ENTRY _ZTV9S19238C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19238C11[];
static Base_Class bases_S19238C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(168,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
    1, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(168,116), //bcp->offset
    42, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C28,    ABISELECT(192,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
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19238C5_nt,    ABISELECT(184,124), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    9, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    9, //immediately_derived
  0, 0},
  {&cd_S19238C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(32,24), //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
    12, //immediately_derived
  0, 0},
  {&cd_S19238C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19238C4,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19238C13,    ABISELECT(56,40), //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
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(192,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
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19238C14,    ABISELECT(200,132), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(224,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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    20, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(224,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
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(233,149), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(236,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
    23, //immediately_derived
  0, 0},
  {&cd_S19238C8,    ABISELECT(224,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
    5, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(256,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
    25, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(256,168), //bcp->offset
    63, //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19238C7,    ABISELECT(224,144), //bcp->offset
    58, //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
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19238C12,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(112,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
    29, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(112,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(272,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
    35, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(272,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
    32, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(272,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
    8, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(281,185), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(284,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
    35, //immediately_derived
  0, 0},
  {&cd_S19238C8,    ABISELECT(272,180), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(137,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
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(128,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
    38, //immediately_derived
  0, 0},
  {&cd_S19238C2,    ABISELECT(128,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
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19238C17,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(304,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
    41, //immediately_derived
  0, 1},
  {&cd_S19238C16,    ABISELECT(128,84), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19238C11,    ABISELECT(56,40), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19238C1[];
extern void _ZN8S19238C1D1Ev();
extern void _ZN8S19238C1D0Ev();
extern void _ZN8S19238C42v1Ev();
extern void ABISELECT(_ZThn32_N8S19238C1D1Ev,_ZThn24_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19238C1D0Ev,_ZThn24_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19238C1D1Ev,_ZThn40_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19238C1D0Ev,_ZThn40_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19238C1D1Ev,_ZThn76_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19238C1D0Ev,_ZThn76_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19238C1D1Ev,_ZThn84_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19238C1D0Ev,_ZThn84_N8S19238C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19238C1D1Ev,_ZThn116_N8S19238C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19238C1D0Ev,_ZThn116_N8S19238C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19238C1D1Ev,_ZTv0_n24_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19238C1D1Ev,_ZThn132_N8S19238C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19238C1D0Ev,_ZTv0_n24_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19238C1D0Ev,_ZThn132_N8S19238C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S19238C1D1Ev,_ZThn144_N8S19238C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S19238C1D0Ev,_ZThn144_N8S19238C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19238C1D1Ev,_ZTvn24_n12_N8S19238C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19238C1D0Ev,_ZTvn24_n12_N8S19238C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S19238C1D1Ev,_ZThn180_N8S19238C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S19238C1D0Ev,_ZThn180_N8S19238C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19238C1[] = {
  ABISELECT(304,204),
  ABISELECT(272,180),
  ABISELECT(224,144),
  ABISELECT(200,132),
  ABISELECT(192,128),
  0,
  ABISELECT(168,116),
  ABISELECT(192,128),
  ABISELECT(184,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&_ZN8S19238C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19238C42v1Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C1D1Ev,_ZThn24_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19238C1D0Ev,_ZThn24_N8S19238C1D0Ev),
  ABISELECT(248,164),
  ABISELECT(216,140),
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19238C1D1Ev,_ZThn40_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19238C1D0Ev,_ZThn40_N8S19238C1D0Ev),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19238C1D1Ev,_ZThn76_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19238C1D0Ev,_ZThn76_N8S19238C1D0Ev),
  ABISELECT(176,120),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19238C1D1Ev,_ZThn84_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19238C1D0Ev,_ZThn84_N8S19238C1D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  ABISELECT(-200,-132),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19238C1D1Ev,_ZTv0_n24_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19238C1D0Ev,_ZTv0_n24_N8S19238C1D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19238C1D1Ev,_ZTvn24_n12_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19238C1D0Ev,_ZTvn24_n12_N8S19238C1D0Ev),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S19238C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19238C1[];
extern void _ZN8S19238C4D1Ev();
extern void _ZN8S19238C4D0Ev();
extern void _ZN8S19238C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19238C4__8S19238C1[] = {
  ABISELECT(192,128),
  ABISELECT(184,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19238C4[0]),
  (VTBL_ENTRY)&_ZN8S19238C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19238C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19238C42v1Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19238C5_nt__8S19238C4__8S19238C1[] = {
  ABISELECT(8,4),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S19238C4[0]),
};
extern void _ZN9S19238C11D1Ev();
extern void _ZN9S19238C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C11__8S19238C1[] = {
  ABISELECT(248,164),
  ABISELECT(216,140),
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&_ZN9S19238C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C11D0Ev,
};
extern void _ZN9S19238C12D1Ev();
extern void _ZN9S19238C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&_ZN9S19238C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C12D0Ev,
};
extern void _ZN9S19238C13D1Ev();
extern void _ZN9S19238C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C139S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&_ZN9S19238C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C13D1Ev,_ZThn76_N9S19238C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C13D0Ev,_ZThn76_N9S19238C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C139S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C12D1Ev,_ZThn76_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C12D0Ev,_ZThn76_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19238C12D1Ev,_ZThn92_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19238C12D0Ev,_ZThn92_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZThn168_N9S19238C12D1Ev,_ZThn104_N9S19238C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev)();
extern void ABISELECT(_ZThn168_N9S19238C12D0Ev,_ZThn104_N9S19238C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C7__9S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C28S19238C7__A2__9S19238C129S19238C11__8S19238C1[] = {
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S19238C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D1Ev,_ZTvn24_n12_N9S19238C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C12D0Ev,_ZTvn24_n12_N9S19238C12D0Ev),
};
extern void _ZN9S19238C16D1Ev();
extern void _ZN9S19238C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(176,120),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&_ZN9S19238C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C16D0Ev,
};
extern void _ZN9S19238C17D1Ev();
extern void _ZN9S19238C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C179S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&_ZN9S19238C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn72_N9S19238C17D1Ev,_ZThn48_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn72_N9S19238C17D0Ev,_ZThn48_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C179S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__A1__9S19238C179S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S19238C16D1Ev,_ZThn48_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S19238C16D0Ev,_ZThn48_N9S19238C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C169S19238C11__8S19238C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19238C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19238C11D1Ev,_ZThn76_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19238C11D0Ev,_ZThn76_N9S19238C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C11__8S19238C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19238C11D1Ev,_ZThn92_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19238C11D0Ev,_ZThn92_N9S19238C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19238C14__9S19238C11__8S19238C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn168_N9S19238C11D1Ev,_ZThn104_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn168_N9S19238C11D0Ev,_ZThn104_N9S19238C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C7__9S19238C11__8S19238C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19238C11D1Ev,_ZTvn24_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19238C11D0Ev,_ZTvn24_n12_N9S19238C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C28S19238C7__A2__9S19238C11__8S19238C1[] = {
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C11D1Ev,_ZTvn24_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19238C11D0Ev,_ZTvn24_n12_N9S19238C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn216_N9S19238C11D1Ev,_ZThn140_N9S19238C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev)();
extern void ABISELECT(_ZThn216_N9S19238C11D0Ev,_ZThn140_N9S19238C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19238C8__A1__9S19238C11__8S19238C1[] = {
  ABISELECT(-216,-140),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev),
};
extern void ABISELECT(_ZThn72_N9S19238C11D1Ev,_ZThn44_N9S19238C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19238C11D0Ev,_ZThn44_N9S19238C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19238C16__9S19238C11__8S19238C1[] = {
  ABISELECT(176,120),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19238C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19238C11D1Ev,_ZThn44_N9S19238C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19238C11D0Ev,_ZThn44_N9S19238C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19238C5_nt__8S19238C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19238C5_nt[0]),
};
extern void _ZN9S19238C14D1Ev();
extern void _ZN9S19238C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19238C14__8S19238C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&_ZN9S19238C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19238C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19238C2__9S19238C14__8S19238C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19238C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D1Ev,_ZTv0_n12_N9S19238C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19238C14D0Ev,_ZTv0_n12_N9S19238C14D0Ev),
};
static  VTT_ENTRY vtt_S19238C1[] = {
  {&(_ZTV8S19238C1[11]),  11,72},
  {&(_tg__ZTV8S19238C4__8S19238C1[4]),  4,7},
  {&(_tg__ZTV11S19238C5_nt__8S19238C4__8S19238C1[3]),  3,3},
  {&(_tg__ZTV9S19238C11__8S19238C1[9]),  9,11},
  {&(_tg__ZTV9S19238C129S19238C11__8S19238C1[7]),  7,9},
  {&(_tg__ZTV9S19238C139S19238C129S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C139S19238C129S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C129S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV9S19238C14__9S19238C129S19238C11__8S19238C1[6]),  6,8},
  {&(_tg__ZTV8S19238C7__9S19238C129S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV8S19238C28S19238C7__A2__9S19238C129S19238C11__8S19238C1[2]),  2,4},
  {&(_tg__ZTV9S19238C169S19238C11__8S19238C1[7]),  7,9},
  {&(_tg__ZTV9S19238C179S19238C169S19238C11__8S19238C1[6]),  6,8},
  {&(_tg__ZTV9S19238C14__9S19238C179S19238C169S19238C11__8S19238C1[6]),  6,8},
  {&(_tg__ZTV8S19238C2__A1__9S19238C179S19238C169S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV9S19238C14__9S19238C169S19238C11__8S19238C1[6]),  6,8},
  {&(_tg__ZTV8S19238C2__9S19238C169S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV8S19238C2__9S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV9S19238C14__9S19238C11__8S19238C1[6]),  6,8},
  {&(_tg__ZTV8S19238C7__9S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV8S19238C28S19238C7__A2__9S19238C11__8S19238C1[2]),  2,4},
  {&(_tg__ZTV8S19238C8__A1__9S19238C11__8S19238C1[3]),  3,5},
  {&(_tg__ZTV9S19238C16__9S19238C11__8S19238C1[7]),  7,9},
  {&(_ZTV8S19238C1[45]),  45,72},
  {&(_ZTV8S19238C1[50]),  50,72},
  {&(_ZTV8S19238C1[27]),  27,72},
  {&(_ZTV8S19238C1[56]),  56,72},
  {&(_ZTV8S19238C1[61]),  61,72},
  {&(_ZTV8S19238C1[65]),  65,72},
  {&(_ZTV8S19238C1[70]),  70,72},
  {&(_ZTV8S19238C1[40]),  40,72},
  {&(_tg__ZTV11S19238C5_nt__8S19238C1[3]),  3,3},
  {&(_tg__ZTV9S19238C14__8S19238C1[5]),  5,7},
  {&(_tg__ZTV8S19238C2__9S19238C14__8S19238C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19238C1[];
extern  VTBL_ENTRY _ZTV8S19238C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19238C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C11D0Ev,_ZTv0_n24_N9S19238C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19238C11D0Ev,_ZThn92_N9S19238C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C11D1Ev,_ZTv0_n24_N9S19238C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19238C11D1Ev,_ZThn92_N9S19238C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C11D0Ev,_ZTv0_n12_N9S19238C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19238C11D0Ev,_ZThn140_N9S19238C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19238C11D0Ev,_ZThn104_N9S19238C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C11D0Ev,_ZThn76_N9S19238C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C11D1Ev,_ZTv0_n12_N9S19238C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19238C11D1Ev,_ZThn140_N9S19238C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19238C11D1Ev,_ZThn104_N9S19238C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C11D1Ev,_ZThn76_N9S19238C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D0Ev,_ZTv0_n12_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D0Ev,_ZThn32_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C16D1Ev,_ZTv0_n12_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C16D1Ev,_ZThn32_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D0Ev,_ZTv0_n24_N9S19238C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C16D0Ev,_ZThn48_N9S19238C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C16D1Ev,_ZTv0_n24_N9S19238C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C16D1Ev,_ZThn48_N9S19238C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D0Ev,_ZTv0_n12_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D0Ev,_ZThn32_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C17D1Ev,_ZTv0_n12_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19238C17D1Ev,_ZThn32_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D0Ev,_ZTv0_n24_N9S19238C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C17D0Ev,_ZThn48_N9S19238C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C17D1Ev,_ZTv0_n24_N9S19238C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19238C17D1Ev,_ZThn48_N9S19238C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D0Ev,_ZTv0_n24_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19238C12D0Ev,_ZThn92_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19238C12D1Ev,_ZTv0_n24_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19238C12D1Ev,_ZThn92_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D0Ev,_ZTv0_n12_N9S19238C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19238C12D0Ev,_ZThn104_N9S19238C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C12D0Ev,_ZThn76_N9S19238C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C12D1Ev,_ZTv0_n12_N9S19238C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19238C12D1Ev,_ZThn104_N9S19238C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C12D1Ev,_ZThn76_N9S19238C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D0Ev,_ZTv0_n12_N9S19238C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C13D0Ev,_ZThn76_N9S19238C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19238C13D1Ev,_ZTv0_n12_N9S19238C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19238C13D1Ev,_ZThn76_N9S19238C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19238C1D0Ev,_ZTv0_n24_N8S19238C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19238C1D0Ev,_ZThn132_N8S19238C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19238C1D1Ev,_ZTv0_n24_N8S19238C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19238C1D1Ev,_ZThn132_N8S19238C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19238C1D0Ev,_ZTv0_n12_N8S19238C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19238C1D0Ev,_ZThn180_N8S19238C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19238C1D0Ev,_ZThn144_N8S19238C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19238C1D0Ev,_ZThn116_N8S19238C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19238C1D1Ev,_ZTv0_n12_N8S19238C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19238C1D1Ev,_ZThn180_N8S19238C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19238C1D1Ev,_ZThn144_N8S19238C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19238C1D1Ev,_ZThn116_N8S19238C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19238C1 = {  "S19238C1", // class name
  bases_S19238C1, 43,
  &(vtc_S19238C1[0]), // expected_vtbl_contents
  &(vtt_S19238C1[0]), // expected_vtt_contents
  ABISELECT(312,208), // object size
  NSPAIRA(_ZTI8S19238C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19238C1),72, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19238C1),34, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C2  : S2014C38 {
  ::S2014C38 s19237c2f0;
  virtual  ~S19237C2(); // _ZN8S19237C2D1Ev
  S19237C2(); // tgen
};
//SIG(-1 S19237C2) C1{ BC2{ m} vd FC2}


 S19237C2 ::~S19237C2(){ note_dtor("S19237C2", this);}
S19237C2 ::S19237C2(){ note_ctor("S19237C2", this);} // tgen

static void Test_S19237C2()
{
  extern Class_Descriptor cd_S19237C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19237C2, buf);
    S19237C2 *dp, &lv = *(dp=new (buf) S19237C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19237C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C2)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19237C2");
    check_field_offset(lv, s19237c2f0, ABISELECT(8,4), "S19237C2.s19237c2f0");
    test_class_info(&lv, &cd_S19237C2);
    dp->~S19237C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C2(Test_S19237C2, "S19237C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19237C2C1Ev();
extern void _ZN8S19237C2D1Ev();
Name_Map name_map_S19237C2[] = {
  NSPAIR(_ZN8S19237C2C1Ev),
  NSPAIR(_ZN8S19237C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19237C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19237C2[];
extern void _ZN8S19237C2D1Ev();
extern void _ZN8S19237C2D0Ev();
static  VTBL_ENTRY vtc_S19237C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C2[0]),
  (VTBL_ENTRY)&_ZN8S19237C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
Class_Descriptor cd_S19237C2 = {  "S19237C2", // class name
  bases_S19237C2, 1,
  &(vtc_S19237C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19237C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19237C2),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  S19237C5  : virtual S2014C28 {
  ~S19237C5(); // tgen
  S19237C5(); // tgen
};
//SIG(-1 S19237C5) C1{ VBC2{ m}}


S19237C5 ::~S19237C5(){ note_dtor("S19237C5", this);} // tgen
S19237C5 ::S19237C5(){ note_ctor("S19237C5", this);} // tgen

static void Test_S19237C5()
{
  extern Class_Descriptor cd_S19237C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19237C5, buf);
    S19237C5 *dp, &lv = *(dp=new (buf) S19237C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19237C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C5)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19237C5");
    test_class_info(&lv, &cd_S19237C5);
    dp->~S19237C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C5(Test_S19237C5, "S19237C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19237C5C1Ev();
extern void _ZN8S19237C5D1Ev();
Name_Map name_map_S19237C5[] = {
  NSPAIR(_ZN8S19237C5C1Ev),
  NSPAIR(_ZN8S19237C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19237C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19237C5[];
static  VTBL_ENTRY vtc_S19237C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C5[0]),
};
extern VTBL_ENTRY _ZTV8S19237C5[];
static  VTT_ENTRY vtt_S19237C5[] = {
  {&(_ZTV8S19237C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19237C5[];
extern  VTBL_ENTRY _ZTV8S19237C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C5[];
Class_Descriptor cd_S19237C5 = {  "S19237C5", // class name
  bases_S19237C5, 1,
  &(vtc_S19237C5[0]), // expected_vtbl_contents
  &(vtt_S19237C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19237C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19237C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19237C5),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  S19237C8  : S2014C28 , S19237C2 , S2014C38 , S3222C8_nt {
  short s19237c8f0:16;
  long s19237c8f1;
  ~S19237C8(); // tgen
  S19237C8(); // tgen
};
//SIG(-1 S19237C8) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 Fl}


S19237C8 ::~S19237C8(){ note_dtor("S19237C8", this);} // tgen
S19237C8 ::S19237C8(){ note_ctor("S19237C8", this);} // tgen

static void Test_S19237C8()
{
  extern Class_Descriptor cd_S19237C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19237C8, buf);
    S19237C8 *dp, &lv = *(dp=new (buf) S19237C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19237C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C8)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19237C8");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*), 0, "S19237C8");
    check_base_class_offset(lv, (S19237C2*), 0, "S19237C8");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19237C8");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19237C8");
    set_bf_and_test(lv, s19237c8f0, ABISELECT(16,12), 0, 16, 1, "S19237C8");
    set_bf_and_test(lv, s19237c8f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19237C8");
    check_field_offset(lv, s19237c8f1, ABISELECT(24,16), "S19237C8.s19237c8f1");
    test_class_info(&lv, &cd_S19237C8);
    dp->~S19237C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C8(Test_S19237C8, "S19237C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19237C8C1Ev();
extern void _ZN8S19237C8D1Ev();
Name_Map name_map_S19237C8[] = {
  NSPAIR(_ZN8S19237C8C1Ev),
  NSPAIR(_ZN8S19237C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19237C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI8S19237C8[];
extern void _ZN8S19237C8D1Ev();
extern void _ZN8S19237C8D0Ev();
static  VTBL_ENTRY vtc_S19237C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C8[0]),
  (VTBL_ENTRY)&_ZN8S19237C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C8D0Ev,
};
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
Class_Descriptor cd_S19237C8 = {  "S19237C8", // class name
  bases_S19237C8, 5,
  &(vtc_S19237C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19237C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19237C8),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  S19237C7  : S19237C8 , S19237C2 {
  int s19237c7f0;
  ~S19237C7(); // tgen
  S19237C7(); // tgen
};
//SIG(-1 S19237C7) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 Fl} BC4 Fi}


S19237C7 ::~S19237C7(){ note_dtor("S19237C7", this);} // tgen
S19237C7 ::S19237C7(){ note_ctor("S19237C7", this);} // tgen

static void Test_S19237C7()
{
  extern Class_Descriptor cd_S19237C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19237C7, buf);
    S19237C7 *dp, &lv = *(dp=new (buf) S19237C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19237C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C7)");
    check_base_class_offset(lv, (S2014C28*)(S19237C8*), 0, "S19237C7");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*), 0, "S19237C7");
    check_base_class_offset(lv, (S19237C2*)(S19237C8*), 0, "S19237C7");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*), ABISELECT(9,5), "S19237C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*), ABISELECT(12,8), "S19237C7");
    check_base_class_offset(lv, (S19237C8*), 0, "S19237C7");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(32,20), "S19237C7");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*), ABISELECT(32,20), "S19237C7");
    check_field_offset(lv, s19237c7f0, ABISELECT(44,28), "S19237C7.s19237c7f0");
    test_class_info(&lv, &cd_S19237C7);
    dp->~S19237C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C7(Test_S19237C7, "S19237C7", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19237C7C1Ev();
extern void _ZN8S19237C7D1Ev();
Name_Map name_map_S19237C7[] = {
  NSPAIR(_ZN8S19237C7C1Ev),
  NSPAIR(_ZN8S19237C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
static Base_Class bases_S19237C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19237C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(32,20), //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 _ZTI8S19237C7[];
extern void _ZN8S19237C7D1Ev();
extern void _ZN8S19237C7D0Ev();
extern void ABISELECT(_ZThn32_N8S19237C7D1Ev,_ZThn20_N8S19237C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19237C7D0Ev,_ZThn20_N8S19237C7D0Ev)();
static  VTBL_ENTRY vtc_S19237C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C7[0]),
  (VTBL_ENTRY)&_ZN8S19237C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C7D0Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19237C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C7D1Ev,_ZThn20_N8S19237C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C7D0Ev,_ZThn20_N8S19237C7D0Ev),
};
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
Class_Descriptor cd_S19237C7 = {  "S19237C7", // class name
  bases_S19237C7, 8,
  &(vtc_S19237C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19237C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19237C7),8, //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  S19237C4  : virtual S19237C5 , S19237C7 {
  int s19237c4f0;
  virtual  ~S19237C4(); // _ZN8S19237C4D2Ev
  virtual void  v1(); // _ZN8S19237C42v1Ev
  S19237C4(); // tgen
};
//SIG(-1 S19237C4) C1{ VBC2{ VBC3{ m}} BC4{ BC5{ BC3 BC6{ BC7{ m} vd FC7} BC7 BC8{ m Fi} Fs:16 Fl} BC6 Fi} vd v1 Fi}


 S19237C4 ::~S19237C4(){ note_dtor("S19237C4", this);}
void  S19237C4 ::v1(){vfunc_called(this, "_ZN8S19237C42v1Ev");}
S19237C4 ::S19237C4(){ note_ctor("S19237C4", this);} // tgen

static void Test_S19237C4()
{
  extern Class_Descriptor cd_S19237C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S19237C4, buf);
    S19237C4 *dp, &lv = *(dp=new (buf) S19237C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S19237C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C4)");
    check_base_class_offset(lv, (S2014C28*)(S19237C5*), ABISELECT(64,40), "S19237C4");
    check_base_class_offset(lv, (S19237C5*), ABISELECT(56,36), "S19237C4");
    check_base_class_offset(lv, (S2014C28*)(S19237C8*)(S19237C7*), 0, "S19237C4");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*)(S19237C7*), 0, "S19237C4");
    check_base_class_offset(lv, (S19237C2*)(S19237C8*)(S19237C7*), 0, "S19237C4");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*)(S19237C7*), ABISELECT(9,5), "S19237C4");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*)(S19237C7*), ABISELECT(12,8), "S19237C4");
    check_base_class_offset(lv, (S19237C8*)(S19237C7*), 0, "S19237C4");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C7*), ABISELECT(32,20), "S19237C4");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C7*), ABISELECT(32,20), "S19237C4");
    check_base_class_offset(lv, (S19237C7*), 0, "S19237C4");
    check_field_offset(lv, s19237c4f0, ABISELECT(48,32), "S19237C4.s19237c4f0");
    test_class_info(&lv, &cd_S19237C4);
    dp->~S19237C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C4(Test_S19237C4, "S19237C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S19237C4C1Ev();
extern void _ZN8S19237C4D2Ev();
Name_Map name_map_S19237C4[] = {
  NSPAIR(_ZN8S19237C4C1Ev),
  NSPAIR(_ZN8S19237C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19237C5;
extern VTBL_ENTRY _ZTI8S19237C5[];
extern  VTBL_ENTRY _ZTV8S19237C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C7;
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
static Base_Class bases_S19237C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    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
    1, //immediately_derived
  0, 1},
  {&cd_S19237C5,    ABISELECT(56,36), //bcp->offset
    11, //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},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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_S19237C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(32,20), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19237C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19237C4[];
extern void _ZN8S19237C4D1Ev();
extern void _ZN8S19237C4D0Ev();
extern void _ZN8S19237C42v1Ev();
extern void ABISELECT(_ZThn32_N8S19237C4D1Ev,_ZThn20_N8S19237C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19237C4D0Ev,_ZThn20_N8S19237C4D0Ev)();
static  VTBL_ENTRY vtc_S19237C4[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C4[0]),
  (VTBL_ENTRY)&_ZN8S19237C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19237C42v1Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19237C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C4D1Ev,_ZThn20_N8S19237C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C4D0Ev,_ZThn20_N8S19237C4D0Ev),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19237C4[0]),
};
extern VTBL_ENTRY _ZTV8S19237C4[];
static  VTBL_ENTRY _tg__ZTV8S19237C5__8S19237C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C5[0]),
};
static  VTT_ENTRY vtt_S19237C4[] = {
  {&(_ZTV8S19237C4[4]),  4,14},
  {&(_ZTV8S19237C4[14]),  14,14},
  {&(_tg__ZTV8S19237C5__8S19237C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19237C4[];
extern  VTBL_ENTRY _ZTV8S19237C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C4[];
Class_Descriptor cd_S19237C4 = {  "S19237C4", // class name
  bases_S19237C4, 11,
  &(vtc_S19237C4[0]), // expected_vtbl_contents
  &(vtt_S19237C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S19237C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19237C4),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19237C4),3, //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  S19237C13  : virtual S19237C2 {
  __tsi64 s19237c13f0;
  ~S19237C13(); // tgen
  S19237C13(); // tgen
};
//SIG(-1 S19237C13) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19237C13 ::~S19237C13(){ note_dtor("S19237C13", this);} // tgen
S19237C13 ::S19237C13(){ note_ctor("S19237C13", this);} // tgen

static void Test_S19237C13()
{
  extern Class_Descriptor cd_S19237C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19237C13, buf);
    S19237C13 *dp, &lv = *(dp=new (buf) S19237C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19237C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C13)");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(16,12), "S19237C13");
    check_base_class_offset(lv, (S19237C2*), ABISELECT(16,12), "S19237C13");
    check_field_offset(lv, s19237c13f0, ABISELECT(8,4), "S19237C13.s19237c13f0");
    test_class_info(&lv, &cd_S19237C13);
    dp->~S19237C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C13(Test_S19237C13, "S19237C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19237C13C1Ev();
extern void _ZN9S19237C13D1Ev();
Name_Map name_map_S19237C13[] = {
  NSPAIR(_ZN9S19237C13C1Ev),
  NSPAIR(_ZN9S19237C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
static Base_Class bases_S19237C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19237C2,    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 _ZTI9S19237C13[];
extern void _ZN9S19237C13D1Ev();
extern void _ZN9S19237C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19237C13D1Ev,_ZThn12_N9S19237C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S19237C13D0Ev,_ZThn12_N9S19237C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C13[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&_ZN9S19237C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C13[];
static  VTT_ENTRY vtt_S19237C13[] = {
  {&(_ZTV9S19237C13[3]),  3,10},
  {&(_ZTV9S19237C13[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19237C13[];
extern  VTBL_ENTRY _ZTV9S19237C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C13[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19237C13D0Ev,_ZThn12_N9S19237C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19237C13D1Ev,_ZThn12_N9S19237C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C13 = {  "S19237C13", // class name
  bases_S19237C13, 2,
  &(vtc_S19237C13[0]), // expected_vtbl_contents
  &(vtt_S19237C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19237C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19237C13),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C13),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C14  : virtual S2014C28 , virtual S19237C2 , virtual S3222C8_nt {
  void *s19237c14f0;
  ::S19762C18_nt s19237c14f1;
  virtual  ~S19237C14(); // _ZN9S19237C14D2Ev
  S19237C14(); // tgen
};
//SIG(-1 S19237C14) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19237C14 ::~S19237C14(){ note_dtor("S19237C14", this);}
S19237C14 ::S19237C14(){ note_ctor("S19237C14", this);} // tgen

static void Test_S19237C14()
{
  extern Class_Descriptor cd_S19237C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19237C14, buf);
    S19237C14 *dp, &lv = *(dp=new (buf) S19237C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19237C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C14)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19237C14");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(24,12), "S19237C14");
    check_base_class_offset(lv, (S19237C2*), ABISELECT(24,12), "S19237C14");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19237C14");
    check_field_offset(lv, s19237c14f0, ABISELECT(8,4), "S19237C14.s19237c14f0");
    check_field_offset(lv, s19237c14f1, ABISELECT(16,8), "S19237C14.s19237c14f1");
    test_class_info(&lv, &cd_S19237C14);
    dp->~S19237C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C14(Test_S19237C14, "S19237C14", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19237C14C1Ev();
extern void _ZN9S19237C14D2Ev();
Name_Map name_map_S19237C14[] = {
  NSPAIR(_ZN9S19237C14C1Ev),
  NSPAIR(_ZN9S19237C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19237C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19237C14[];
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C14[];
static  VTT_ENTRY vtt_S19237C14[] = {
  {&(_ZTV9S19237C14[5]),  5,12},
  {&(_ZTV9S19237C14[10]),  10,12},
};
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C14 = {  "S19237C14", // class name
  bases_S19237C14, 4,
  &(vtc_S19237C14[0]), // expected_vtbl_contents
  &(vtt_S19237C14[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19237C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19237C14),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C12  : S19237C13 , virtual S2014C28 , virtual S3222C8_nt , virtual S19237C14 , virtual S19237C7 {
  long s19237c12f0;
  ::S19237C13 s19237c12f1;
  virtual  ~S19237C12(); // _ZN9S19237C12D2Ev
  S19237C12(); // tgen
};
//SIG(-1 S19237C12) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 Fl} BC3 Fi} vd Fl FC2}


 S19237C12 ::~S19237C12(){ note_dtor("S19237C12", this);}
S19237C12 ::S19237C12(){ note_ctor("S19237C12", this);} // tgen

static void Test_S19237C12()
{
  extern Class_Descriptor cd_S19237C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S19237C12, buf);
    S19237C12 *dp, &lv = *(dp=new (buf) S19237C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S19237C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C12)");
    /*is_ambiguous_... S19237C12::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(56,36), "S19237C12");
    check_base_class_offset(lv, (S19237C2*)(S19237C13*), ABISELECT(56,36), "S19237C12");
    check_base_class_offset(lv, (S19237C2*)(S19237C14*), ABISELECT(56,36), "S19237C12");
    check_base_class_offset(lv, (S19237C13*), 0, "S19237C12");
    /*is_ambiguous_... S19237C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S19237C12");
    check_base_class_offset(lv, (S2014C28*)(S19237C14*), 0, "S19237C12");
    /*is_ambiguous_... S19237C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19237C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C14*), ABISELECT(68,44), "S19237C12");
    check_base_class_offset(lv, (S19237C14*), ABISELECT(72,48), "S19237C12");
    check_base_class_offset(lv, (S2014C28*)(S19237C8*)(S19237C7*), ABISELECT(96,60), "S19237C12");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(96,60), "S19237C12");
    check_base_class_offset(lv, (S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(96,60), "S19237C12");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*)(S19237C7*), ABISELECT(105,65), "S19237C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*)(S19237C7*), ABISELECT(108,68), "S19237C12");
    check_base_class_offset(lv, (S19237C8*)(S19237C7*), ABISELECT(96,60), "S19237C12");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C7*), ABISELECT(128,80), "S19237C12");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C7*), ABISELECT(128,80), "S19237C12");
    check_base_class_offset(lv, (S19237C7*), ABISELECT(96,60), "S19237C12");
    check_field_offset(lv, s19237c12f0, ABISELECT(16,12), "S19237C12.s19237c12f0");
    check_field_offset(lv, s19237c12f1, ABISELECT(24,16), "S19237C12.s19237c12f1");
    test_class_info(&lv, &cd_S19237C12);
    dp->~S19237C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C12(Test_S19237C12, "S19237C12", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN9S19237C12C1Ev();
extern void _ZN9S19237C12D2Ev();
Name_Map name_map_S19237C12[] = {
  NSPAIR(_ZN9S19237C12C1Ev),
  NSPAIR(_ZN9S19237C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C13;
extern VTBL_ENTRY _ZTI9S19237C13[];
extern  VTBL_ENTRY _ZTV9S19237C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C13[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C14;
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C7;
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
static Base_Class bases_S19237C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(56,36), //bcp->offset
    9, //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_S19237C13,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19237C14,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19237C2,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19237C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(128,80), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19237C7,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19237C12[];
extern void _ZN9S19237C12D1Ev();
extern void _ZN9S19237C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19237C12D1Ev,_ZThn36_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19237C12D0Ev,_ZThn36_N9S19237C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19237C12D1Ev,_ZThn48_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19237C12D0Ev,_ZThn48_N9S19237C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19237C12D1Ev,_ZThn60_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19237C12D0Ev,_ZThn60_N9S19237C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev)();
static  VTBL_ENTRY vtc_S19237C12[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&_ZN9S19237C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C12D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C12[];
extern void _ZN9S19237C13D1Ev();
extern void _ZN9S19237C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C13__9S19237C12[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&_ZN9S19237C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19237C13D1Ev,_ZThn36_N9S19237C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19237C13D0Ev,_ZThn36_N9S19237C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C13__9S19237C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev),
};
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C12[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C14__9S19237C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
static  VTT_ENTRY vtt_S19237C12[] = {
  {&(_ZTV9S19237C12[7]),  7,31},
  {&(_tg__ZTV9S19237C13__9S19237C12[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C13__9S19237C12[3]),  3,5},
  {&(_ZTV9S19237C12[12]),  12,31},
  {&(_ZTV9S19237C12[20]),  20,31},
  {&(_ZTV9S19237C12[25]),  25,31},
  {&(_ZTV9S19237C12[29]),  29,31},
  {&(_tg__ZTV9S19237C14__9S19237C12[5]),  5,7},
  {&(_tg__ZTV8S19237C2__9S19237C14__9S19237C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19237C12[];
extern  VTBL_ENTRY _ZTV9S19237C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C12[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C13D0Ev,_ZThn36_N9S19237C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C13D1Ev,_ZThn36_N9S19237C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C12D0Ev,_ZThn48_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C12D1Ev,_ZThn48_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19237C12D0Ev,_ZThn60_N9S19237C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C12D0Ev,_ZThn36_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19237C12D1Ev,_ZThn60_N9S19237C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C12D1Ev,_ZThn36_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C12 = {  "S19237C12", // class name
  bases_S19237C12, 15,
  &(vtc_S19237C12[0]), // expected_vtbl_contents
  &(vtt_S19237C12[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI9S19237C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19237C12),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C17  : S2014C38 , S19237C2 , virtual S2014C28 , virtual S19237C14 {
  virtual  ~S19237C17(); // _ZN9S19237C17D2Ev
  S19237C17(); // tgen
};
//SIG(-1 S19237C17) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19237C17 ::~S19237C17(){ note_dtor("S19237C17", this);}
S19237C17 ::S19237C17(){ note_ctor("S19237C17", this);} // tgen

static void Test_S19237C17()
{
  extern Class_Descriptor cd_S19237C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19237C17, buf);
    S19237C17 *dp, &lv = *(dp=new (buf) S19237C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19237C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C17)");
    /*is_ambiguous_... S19237C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19237C17");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), 0, "S19237C17");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*), 0, "S19237C17");
    check_base_class_offset(lv, (S2014C28*), 0, "S19237C17");
    check_base_class_offset(lv, (S2014C28*)(S19237C14*), 0, "S19237C17");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(40,20), "S19237C17");
    check_base_class_offset(lv, (S19237C2*)(S19237C14*), ABISELECT(40,20), "S19237C17");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C14*), ABISELECT(52,28), "S19237C17");
    check_base_class_offset(lv, (S19237C14*), ABISELECT(16,8), "S19237C17");
    test_class_info(&lv, &cd_S19237C17);
    dp->~S19237C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C17(Test_S19237C17, "S19237C17", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19237C17C1Ev();
extern void _ZN9S19237C17D2Ev();
Name_Map name_map_S19237C17[] = {
  NSPAIR(_ZN9S19237C17C1Ev),
  NSPAIR(_ZN9S19237C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C14;
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
static Base_Class bases_S19237C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19237C14,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19237C17[];
extern void _ZN9S19237C17D1Ev();
extern void _ZN9S19237C17D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19237C17D1Ev,_ZThn8_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19237C17D0Ev,_ZThn8_N9S19237C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn20_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn20_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C17[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&_ZN9S19237C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C17D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C17[];
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C17[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C14__9S19237C17[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
static  VTT_ENTRY vtt_S19237C17[] = {
  {&(_ZTV9S19237C17[6]),  6,21},
  {&(_ZTV9S19237C17[14]),  14,21},
  {&(_ZTV9S19237C17[19]),  19,21},
  {&(_tg__ZTV9S19237C14__9S19237C17[5]),  5,7},
  {&(_tg__ZTV8S19237C2__9S19237C14__9S19237C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19237C17[];
extern  VTBL_ENTRY _ZTV9S19237C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C17[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn20_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn20_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19237C17D0Ev,_ZThn8_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19237C17D1Ev,_ZThn8_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C17 = {  "S19237C17", // class name
  bases_S19237C17, 8,
  &(vtc_S19237C17[0]), // expected_vtbl_contents
  &(vtt_S19237C17[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19237C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19237C17),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C17),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C16  : virtual S19237C14 , S19237C17 , virtual S2014C38 {
  ::S3222C8_nt s19237c16f0[6];
  virtual  ~S19237C16(); // _ZN9S19237C16D2Ev
  S19237C16(); // tgen
};
//SIG(-1 S19237C16) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19237C16 ::~S19237C16(){ note_dtor("S19237C16", this);}
S19237C16 ::S19237C16(){ note_ctor("S19237C16", this);} // tgen

static void Test_S19237C16()
{
  extern Class_Descriptor cd_S19237C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19237C16, buf);
    S19237C16 *dp, &lv = *(dp=new (buf) S19237C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19237C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C16)");
    check_base_class_offset(lv, (S2014C28*)(S19237C14*), 0, "S19237C16");
    check_base_class_offset(lv, (S2014C28*)(S19237C17*), 0, "S19237C16");
    /*is_ambiguous_... S19237C16::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(64,44), "S19237C16");
    check_base_class_offset(lv, (S19237C2*)(S19237C14*), ABISELECT(64,44), "S19237C16");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C14*), ABISELECT(76,52), "S19237C16");
    check_base_class_offset(lv, (S19237C14*), ABISELECT(40,32), "S19237C16");
    check_base_class_offset(lv, (S19237C14*)(S19237C17*), ABISELECT(40,32), "S19237C16");
    /*is_ambiguous_... S19237C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C17*), ABISELECT(9,5), "S19237C16");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C17*), 0, "S19237C16");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C17*), 0, "S19237C16");
    check_base_class_offset(lv, (S19237C17*), 0, "S19237C16");
    /*is_ambiguous_... S19237C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S19237C16");
    check_field_offset(lv, s19237c16f0, ABISELECT(12,8), "S19237C16.s19237c16f0");
    test_class_info(&lv, &cd_S19237C16);
    dp->~S19237C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C16(Test_S19237C16, "S19237C16", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19237C16C1Ev();
extern void _ZN9S19237C16D2Ev();
Name_Map name_map_S19237C16[] = {
  NSPAIR(_ZN9S19237C16C1Ev),
  NSPAIR(_ZN9S19237C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C14;
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C17;
extern VTBL_ENTRY _ZTI9S19237C17[];
extern  VTBL_ENTRY _ZTV9S19237C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19237C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19237C14,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19237C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19237C16[];
extern void _ZN9S19237C16D1Ev();
extern void _ZN9S19237C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S19237C16D1Ev,_ZThn44_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S19237C16D0Ev,_ZThn44_N9S19237C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C16[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&_ZN9S19237C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C16D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C16[];
extern void _ZN9S19237C17D1Ev();
extern void _ZN9S19237C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C17__9S19237C16[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&_ZN9S19237C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C17__9S19237C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19237C17D1Ev,_ZThn44_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19237C17D0Ev,_ZThn44_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__A1__9S19237C17__9S19237C16[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev),
};
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C16[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C14__9S19237C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
static  VTT_ENTRY vtt_S19237C16[] = {
  {&(_ZTV9S19237C16[7]),  7,22},
  {&(_tg__ZTV9S19237C17__9S19237C16[6]),  6,8},
  {&(_tg__ZTV9S19237C14__9S19237C17__9S19237C16[6]),  6,8},
  {&(_tg__ZTV8S19237C2__A1__9S19237C17__9S19237C16[3]),  3,5},
  {&(_ZTV9S19237C16[15]),  15,22},
  {&(_ZTV9S19237C16[20]),  20,22},
  {&(_tg__ZTV9S19237C14__9S19237C16[5]),  5,7},
  {&(_tg__ZTV8S19237C2__9S19237C14__9S19237C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19237C16[];
extern  VTBL_ENTRY _ZTV9S19237C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C16[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D0Ev,_ZThn12_N9S19237C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19237C14D1Ev,_ZThn12_N9S19237C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19237C17D0Ev,_ZThn44_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19237C17D1Ev,_ZThn44_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19237C16D0Ev,_ZThn44_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19237C16D1Ev,_ZThn44_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C16 = {  "S19237C16", // class name
  bases_S19237C16, 10,
  &(vtc_S19237C16[0]), // expected_vtbl_contents
  &(vtt_S19237C16[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19237C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19237C16),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C16),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C11  : S19237C12 , S19237C2 , virtual S19237C8 , S19237C16 {
  virtual  ~S19237C11(); // _ZN9S19237C11D2Ev
  S19237C11(); // tgen
};
//SIG(-1 S19237C11) C1{ BC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC4 VBC11 BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} vd}


 S19237C11 ::~S19237C11(){ note_dtor("S19237C11", this);}
S19237C11 ::S19237C11(){ note_ctor("S19237C11", this);} // tgen

static void Test_S19237C11()
{
  extern Class_Descriptor cd_S19237C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,39)];
    init_test(&cd_S19237C11, buf);
    S19237C11 *dp, &lv = *(dp=new (buf) S19237C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,152), "sizeof(S19237C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C11)");
    /*is_ambiguous_... S19237C11::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(112,76), "S19237C11");
    check_base_class_offset(lv, (S19237C2*)(S19237C13*)(S19237C12*), ABISELECT(112,76), "S19237C11");
    check_base_class_offset(lv, (S19237C2*)(S19237C14*), ABISELECT(112,76), "S19237C11");
    check_base_class_offset(lv, (S19237C13*)(S19237C12*), 0, "S19237C11");
    /*is_ambiguous_... S19237C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19237C12*), 0, "S19237C11");
    check_base_class_offset(lv, (S2014C28*)(S19237C14*), 0, "S19237C11");
    check_base_class_offset(lv, (S2014C28*)(S19237C17*)(S19237C16*), 0, "S19237C11");
    /*is_ambiguous_... S19237C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19237C12*), ABISELECT(124,84), "S19237C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C14*), ABISELECT(124,84), "S19237C11");
    check_base_class_offset(lv, (S19237C14*)(S19237C12*), ABISELECT(128,88), "S19237C11");
    check_base_class_offset(lv, (S19237C14*)(S19237C16*), ABISELECT(128,88), "S19237C11");
    check_base_class_offset(lv, (S19237C14*)(S19237C17*)(S19237C16*), ABISELECT(128,88), "S19237C11");
    check_base_class_offset(lv, (S2014C28*)(S19237C8*)(S19237C7*), ABISELECT(152,100), "S19237C11");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(152,100), "S19237C11");
    check_base_class_offset(lv, (S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(152,100), "S19237C11");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*)(S19237C7*), ABISELECT(161,105), "S19237C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*)(S19237C7*), ABISELECT(164,108), "S19237C11");
    check_base_class_offset(lv, (S19237C8*)(S19237C7*), ABISELECT(152,100), "S19237C11");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C7*), ABISELECT(184,120), "S19237C11");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C7*), ABISELECT(184,120), "S19237C11");
    check_base_class_offset(lv, (S19237C7*)(S19237C12*), ABISELECT(152,100), "S19237C11");
    check_base_class_offset(lv, (S19237C12*), 0, "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(56,36), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*), ABISELECT(56,36), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19237C8*), ABISELECT(200,132), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*), ABISELECT(200,132), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C8*), ABISELECT(200,132), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*), ABISELECT(209,137), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*), ABISELECT(212,140), "S19237C11");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S19237C8*), ABISELECT(200,132), "S19237C11");
    /*is_ambiguous_... S19237C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C17*)(S19237C16*), ABISELECT(81,49), "S19237C11");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C17*)(S19237C16*), ABISELECT(72,44), "S19237C11");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C17*)(S19237C16*), ABISELECT(72,44), "S19237C11");
    check_base_class_offset(lv, (S19237C17*)(S19237C16*), ABISELECT(72,44), "S19237C11");
    /*is_ambiguous_... S19237C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C16*), 0, "S19237C11");
    check_base_class_offset(lv, (S19237C16*), ABISELECT(72,44), "S19237C11");
    test_class_info(&lv, &cd_S19237C11);
    dp->~S19237C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C11(Test_S19237C11, "S19237C11", ABISELECT(232,152));

#else // __cplusplus

extern void _ZN9S19237C11C1Ev();
extern void _ZN9S19237C11D2Ev();
Name_Map name_map_S19237C11[] = {
  NSPAIR(_ZN9S19237C11C1Ev),
  NSPAIR(_ZN9S19237C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C13;
extern VTBL_ENTRY _ZTI9S19237C13[];
extern  VTBL_ENTRY _ZTV9S19237C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C13[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C14;
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C7;
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
extern Class_Descriptor cd_S19237C12;
extern VTBL_ENTRY _ZTI9S19237C12[];
extern  VTBL_ENTRY _ZTV9S19237C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C12[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C17;
extern VTBL_ENTRY _ZTI9S19237C17[];
extern  VTBL_ENTRY _ZTV9S19237C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C16;
extern VTBL_ENTRY _ZTI9S19237C16[];
extern  VTBL_ENTRY _ZTV9S19237C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C16[];
static Base_Class bases_S19237C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(112,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
    1, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(112,76), //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
    2, //immediately_derived
  0, 1},
  {&cd_S19237C13,    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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(124,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
    5, //immediately_derived
  0, 1},
  {&cd_S19237C14,    ABISELECT(128,88), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(152,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
    8, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(152,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(161,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
    11, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(164,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
    11, //immediately_derived
  0, 0},
  {&cd_S19237C8,    ABISELECT(152,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(184,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_S19237C2,    ABISELECT(184,120), //bcp->offset
    42, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19237C7,    ABISELECT(152,100), //bcp->offset
    37, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19237C12,    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},
  {&cd_S2014C38,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(56,36), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(209,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(212,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
    23, //immediately_derived
  0, 0},
  {&cd_S19237C8,    ABISELECT(200,132), //bcp->offset
    46, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(81,49), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19237C2,    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
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19237C17,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19237C16,    ABISELECT(72,44), //bcp->offset
    15, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19237C11[];
extern void _ZN9S19237C11D1Ev();
extern void _ZN9S19237C11D0Ev();
extern void ABISELECT(_ZThn56_N9S19237C11D1Ev,_ZThn36_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S19237C11D0Ev,_ZThn36_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19237C11D1Ev,_ZThn44_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19237C11D0Ev,_ZThn44_N9S19237C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C11D1Ev,_ZThn76_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C11D0Ev,_ZThn76_N9S19237C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19237C11D1Ev,_ZThn88_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19237C11D0Ev,_ZThn88_N9S19237C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S19237C11D1Ev,_ZThn100_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S19237C11D0Ev,_ZThn100_N9S19237C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N9S19237C11D1Ev,_ZTvn20_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19237C11D0Ev,_ZTvn20_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S19237C11D1Ev,_ZThn132_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S19237C11D0Ev,_ZThn132_N9S19237C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C11[] = {
  0,
  ABISELECT(200,132),
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&_ZN9S19237C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C11D0Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19237C11D1Ev,_ZThn36_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19237C11D0Ev,_ZThn36_N9S19237C11D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19237C11D1Ev,_ZThn44_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19237C11D0Ev,_ZThn44_N9S19237C11D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C11D1Ev,_ZTvn20_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C11D0Ev,_ZTvn20_n12_N9S19237C11D0Ev),
  ABISELECT(-200,-132),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19237C11[];
extern void _ZN9S19237C12D1Ev();
extern void _ZN9S19237C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C12__9S19237C11[] = {
  ABISELECT(152,100),
  ABISELECT(128,88),
  ABISELECT(124,84),
  0,
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&_ZN9S19237C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C12D0Ev,
};
extern void _ZN9S19237C13D1Ev();
extern void _ZN9S19237C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C139S19237C12__9S19237C11[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&_ZN9S19237C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C13D1Ev,_ZThn76_N9S19237C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C13D0Ev,_ZThn76_N9S19237C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C139S19237C12__9S19237C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C12D1Ev,_ZThn76_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C12D0Ev,_ZThn76_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C12__9S19237C11[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19237C12D1Ev,_ZThn88_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19237C12D0Ev,_ZThn88_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C12__9S19237C11[] = {
  ABISELECT(-128,-88),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn152_N9S19237C12D1Ev,_ZThn100_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn152_N9S19237C12D0Ev,_ZThn100_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C7__9S19237C12__9S19237C11[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C28S19237C7__A2__9S19237C12__9S19237C11[] = {
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev),
};
extern void _ZN9S19237C16D1Ev();
extern void _ZN9S19237C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C16__9S19237C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&_ZN9S19237C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C16D0Ev,
};
extern void _ZN9S19237C17D1Ev();
extern void _ZN9S19237C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C179S19237C16__9S19237C11[] = {
  ABISELECT(52,40),
  ABISELECT(40,32),
  ABISELECT(56,44),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&_ZN9S19237C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S19237C17D1Ev,_ZThn44_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S19237C17D0Ev,_ZThn44_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C179S19237C16__9S19237C11[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__A1__9S19237C179S19237C16__9S19237C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S19237C16D1Ev,_ZThn44_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S19237C16D0Ev,_ZThn44_N9S19237C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C16__9S19237C11[] = {
  ABISELECT(-56,-44),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C16__9S19237C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev),
};
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C11[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C14__9S19237C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
static  VTT_ENTRY vtt_S19237C11[] = {
  {&(_ZTV9S19237C11[9]),  9,51},
  {&(_tg__ZTV9S19237C12__9S19237C11[7]),  7,9},
  {&(_tg__ZTV9S19237C139S19237C12__9S19237C11[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C139S19237C12__9S19237C11[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C12__9S19237C11[3]),  3,5},
  {&(_tg__ZTV9S19237C14__9S19237C12__9S19237C11[6]),  6,8},
  {&(_tg__ZTV8S19237C7__9S19237C12__9S19237C11[3]),  3,5},
  {&(_tg__ZTV8S19237C28S19237C7__A2__9S19237C12__9S19237C11[2]),  2,4},
  {&(_tg__ZTV9S19237C16__9S19237C11[7]),  7,9},
  {&(_tg__ZTV9S19237C179S19237C16__9S19237C11[6]),  6,8},
  {&(_tg__ZTV9S19237C14__9S19237C179S19237C16__9S19237C11[6]),  6,8},
  {&(_tg__ZTV8S19237C2__A1__9S19237C179S19237C16__9S19237C11[3]),  3,5},
  {&(_tg__ZTV9S19237C14__9S19237C16__9S19237C11[6]),  6,8},
  {&(_tg__ZTV8S19237C2__9S19237C16__9S19237C11[3]),  3,5},
  {&(_ZTV9S19237C11[27]),  27,51},
  {&(_ZTV9S19237C11[35]),  35,51},
  {&(_ZTV9S19237C11[40]),  40,51},
  {&(_ZTV9S19237C11[44]),  44,51},
  {&(_ZTV9S19237C11[49]),  49,51},
  {&(_ZTV9S19237C11[22]),  22,51},
  {&(_tg__ZTV9S19237C14__9S19237C11[5]),  5,7},
  {&(_tg__ZTV8S19237C2__9S19237C14__9S19237C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19237C11[];
extern  VTBL_ENTRY _ZTV9S19237C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C11[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C16D0Ev,_ZThn44_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C16D1Ev,_ZThn44_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C17D0Ev,_ZThn44_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19237C17D1Ev,_ZThn44_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19237C12D0Ev,_ZThn88_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19237C12D1Ev,_ZThn88_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19237C12D0Ev,_ZThn100_N9S19237C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C12D0Ev,_ZThn76_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19237C12D1Ev,_ZThn100_N9S19237C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C12D1Ev,_ZThn76_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C13D0Ev,_ZThn76_N9S19237C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C13D1Ev,_ZThn76_N9S19237C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19237C11D0Ev,_ZThn88_N9S19237C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19237C11D1Ev,_ZThn88_N9S19237C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19237C11D0Ev,_ZThn132_N9S19237C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19237C11D0Ev,_ZThn100_N9S19237C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C11D0Ev,_ZThn76_N9S19237C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19237C11D1Ev,_ZThn132_N9S19237C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19237C11D1Ev,_ZThn100_N9S19237C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C11D1Ev,_ZThn76_N9S19237C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C11 = {  "S19237C11", // class name
  bases_S19237C11, 30,
  &(vtc_S19237C11[0]), // expected_vtbl_contents
  &(vtt_S19237C11[0]), // expected_vtt_contents
  ABISELECT(232,152), // object size
  NSPAIRA(_ZTI9S19237C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19237C11),51, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19237C11),22, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19237C1  : virtual S19237C2 , S19237C4 , virtual S2014C24 , S19237C11 {
  ~S19237C1(); // tgen
  S19237C1(); // tgen
};
//SIG(1 S19237C1) C1{ VBC2{ BC3{ m} vd FC3} BC4{ VBC5{ VBC6{ m}} BC7{ BC8{ BC6 BC2 BC3 BC9{ m Fi} Fs:16 Fl} BC2 Fi} vd v1 Fi} VBC10{ m} BC11{ BC12{ BC13{ VBC2 FL} VBC6 VBC9 VBC14{ VBC6 VBC2 VBC9 vd Fp FC15{}} VBC7 vd Fl FC13} BC2 VBC8 BC16{ VBC14 BC17{ BC3 BC2 VBC6 VBC14 vd} VBC3 vd FC9[6]} vd}}


S19237C1 ::~S19237C1(){ note_dtor("S19237C1", this);} // tgen
S19237C1 ::S19237C1(){ note_ctor("S19237C1", this);} // tgen

static void Test_S19237C1()
{
  extern Class_Descriptor cd_S19237C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,50)];
    init_test(&cd_S19237C1, buf);
    S19237C1 *dp, &lv = *(dp=new (buf) S19237C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,196), "sizeof(S19237C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19237C1)");
    /*is_ambiguous_... S19237C1::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*), ABISELECT(168,112), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*), ABISELECT(168,112), "S19237C1");
    check_base_class_offset(lv, (S19237C2*)(S19237C13*)(S19237C12*)(S19237C11*), ABISELECT(168,112), "S19237C1");
    check_base_class_offset(lv, (S19237C2*)(S19237C14*), ABISELECT(168,112), "S19237C1");
    check_base_class_offset(lv, (S2014C28*)(S19237C5*), ABISELECT(192,124), "S19237C1");
    /*is_ambiguous_... S19237C12::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19237C12*)(S19237C11*), ABISELECT(192,124), "S19237C1");
    check_base_class_offset(lv, (S2014C28*)(S19237C14*), ABISELECT(192,124), "S19237C1");
    check_base_class_offset(lv, (S2014C28*)(S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(192,124), "S19237C1");
    check_base_class_offset(lv, (S19237C5*)(S19237C4*), ABISELECT(184,120), "S19237C1");
    check_base_class_offset(lv, (S2014C28*)(S19237C8*)(S19237C7*)(S19237C4*), 0, "S19237C1");
    check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*)(S19237C7*)(S19237C4*), 0, "S19237C1");
    check_base_class_offset(lv, (S19237C2*)(S19237C8*)(S19237C7*)(S19237C4*), 0, "S19237C1");
    /*is_ambiguous_... S19237C8::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*)(S19237C7*)(S19237C4*), ABISELECT(9,5), "S19237C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*)(S19237C7*)(S19237C4*), ABISELECT(12,8), "S19237C1");
    check_base_class_offset(lv, (S19237C8*)(S19237C7*)(S19237C4*), 0, "S19237C1");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C7*)(S19237C4*), ABISELECT(32,20), "S19237C1");
    /*is_ambiguous_... S19237C7::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C7*)(S19237C4*), ABISELECT(32,20), "S19237C1");
    check_base_class_offset(lv, (S19237C7*)(S19237C4*), 0, "S19237C1");
    check_base_class_offset(lv, (S19237C4*), 0, "S19237C1");
    check_base_class_offset(lv, (S2014C24*), 0, "S19237C1");
    check_base_class_offset(lv, (S19237C13*)(S19237C12*)(S19237C11*), ABISELECT(56,36), "S19237C1");
    /*is_ambiguous_... S19237C12::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19237C12*)(S19237C11*), ABISELECT(192,124), "S19237C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19237C14*), ABISELECT(192,124), "S19237C1");
    check_base_class_offset(lv, (S19237C14*)(S19237C12*)(S19237C11*), ABISELECT(200,128), "S19237C1");
    check_base_class_offset(lv, (S19237C14*)(S19237C16*)(S19237C11*), ABISELECT(200,128), "S19237C1");
    check_base_class_offset(lv, (S19237C14*)(S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(200,128), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19237C8*)(S19237C7*), ABISELECT(224,140), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(224,140), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C8*)(S19237C7*), ABISELECT(224,140), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*)(S19237C7*), ABISELECT(233,145), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*)(S19237C7*), ABISELECT(236,148), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S19237C8*)(S19237C7*), ABISELECT(224,140), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C7*), ABISELECT(256,160), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C7 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C7*), ABISELECT(256,160), "S19237C1");
    check_base_class_offset(lv, (S19237C7*)(S19237C12*)(S19237C11*), ABISELECT(224,140), "S19237C1");
    check_base_class_offset(lv, (S19237C12*)(S19237C11*), ABISELECT(56,36), "S19237C1");
    /*is_ambiguous_... S19237C11::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C11*), ABISELECT(112,72), "S19237C1");
    /*is_ambiguous_... S19237C11::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C11*), ABISELECT(112,72), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19237C8*), ABISELECT(272,172), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C8*), ABISELECT(272,172), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C8 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C8*), ABISELECT(272,172), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C8 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C8*), ABISELECT(281,177), "S19237C1");
    /*is_ambiguous_... S19237C1::S19237C8 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19237C8*), ABISELECT(284,180), "S19237C1");
    /*is_ambiguous_... S19237C11::S19237C8 */ AMB_check_base_class_offset(lv, (S19237C8*)(S19237C11*), ABISELECT(272,172), "S19237C1");
    /*is_ambiguous_... S19237C17::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(137,85), "S19237C1");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C2*)(S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(128,80), "S19237C1");
    /*is_ambiguous_... S19237C17::S19237C2 */ AMB_check_base_class_offset(lv, (S19237C2*)(S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(128,80), "S19237C1");
    check_base_class_offset(lv, (S19237C17*)(S19237C16*)(S19237C11*), ABISELECT(128,80), "S19237C1");
    /*is_ambiguous_... S19237C16::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19237C16*)(S19237C11*), ABISELECT(304,192), "S19237C1");
    check_base_class_offset(lv, (S19237C16*)(S19237C11*), ABISELECT(128,80), "S19237C1");
    check_base_class_offset(lv, (S19237C11*), ABISELECT(56,36), "S19237C1");
    test_class_info(&lv, &cd_S19237C1);
    dp->~S19237C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19237C1(Test_S19237C1, "S19237C1", ABISELECT(312,196));

#else // __cplusplus

extern void _ZN8S19237C1C1Ev();
extern void _ZN8S19237C1D1Ev();
Name_Map name_map_S19237C1[] = {
  NSPAIR(_ZN8S19237C1C1Ev),
  NSPAIR(_ZN8S19237C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19237C5;
extern VTBL_ENTRY _ZTI8S19237C5[];
extern  VTBL_ENTRY _ZTV8S19237C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C5[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C7;
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
extern Class_Descriptor cd_S19237C4;
extern VTBL_ENTRY _ZTI8S19237C4[];
extern  VTBL_ENTRY _ZTV8S19237C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C4[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19237C13;
extern VTBL_ENTRY _ZTI9S19237C13[];
extern  VTBL_ENTRY _ZTV9S19237C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C13[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C14;
extern VTBL_ENTRY _ZTI9S19237C14[];
extern  VTBL_ENTRY _ZTV9S19237C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C14[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C7;
extern VTBL_ENTRY _ZTI8S19237C7[];
extern  VTBL_ENTRY _ZTV8S19237C7[];
extern Class_Descriptor cd_S19237C12;
extern VTBL_ENTRY _ZTI9S19237C12[];
extern  VTBL_ENTRY _ZTV9S19237C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C12[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19237C8;
extern VTBL_ENTRY _ZTI8S19237C8[];
extern  VTBL_ENTRY _ZTV8S19237C8[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C2;
extern VTBL_ENTRY _ZTI8S19237C2[];
extern  VTBL_ENTRY _ZTV8S19237C2[];
extern Class_Descriptor cd_S19237C17;
extern VTBL_ENTRY _ZTI9S19237C17[];
extern  VTBL_ENTRY _ZTV9S19237C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C17[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19237C16;
extern VTBL_ENTRY _ZTI9S19237C16[];
extern  VTBL_ENTRY _ZTV9S19237C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C16[];
extern Class_Descriptor cd_S19237C11;
extern VTBL_ENTRY _ZTI9S19237C11[];
extern  VTBL_ENTRY _ZTV9S19237C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19237C11[];
static Base_Class bases_S19237C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    ABISELECT(168,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
    1, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(168,112), //bcp->offset
    42, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C28,    ABISELECT(192,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
    3, //immediately_derived
  0, 1},
  {&cd_S19237C5,    ABISELECT(184,120), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19237C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    9, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    9, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    9, //immediately_derived
  0, 0},
  {&cd_S19237C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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_S19237C2,    ABISELECT(32,20), //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
    12, //immediately_derived
  0, 0},
  {&cd_S19237C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19237C4,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19237C13,    ABISELECT(56,36), //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
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(192,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
    17, //immediately_derived
  0, 1},
  {&cd_S19237C14,    ABISELECT(200,128), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(224,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
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    20, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(224,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
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(233,145), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(236,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
    23, //immediately_derived
  0, 0},
  {&cd_S19237C8,    ABISELECT(224,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
    26, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(256,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
    25, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(256,160), //bcp->offset
    63, //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
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19237C7,    ABISELECT(224,140), //bcp->offset
    58, //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
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19237C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(112,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
    29, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(112,72), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(272,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
    35, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(272,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
    32, //immediately_derived
  0, 0},
  {&cd_S19237C2,    ABISELECT(272,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
    8, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(281,177), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(284,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
    35, //immediately_derived
  0, 0},
  {&cd_S19237C8,    ABISELECT(272,172), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(137,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
    39, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    38, //immediately_derived
  0, 0},
  {&cd_S19237C2,    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
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19237C17,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(304,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
    -1, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19237C16,    ABISELECT(128,80), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19237C11,    ABISELECT(56,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19237C1[];
extern void _ZN8S19237C1D1Ev();
extern void _ZN8S19237C1D0Ev();
extern void _ZN8S19237C42v1Ev();
extern void ABISELECT(_ZThn32_N8S19237C1D1Ev,_ZThn20_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19237C1D0Ev,_ZThn20_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19237C1D1Ev,_ZThn36_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19237C1D0Ev,_ZThn36_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19237C1D1Ev,_ZThn72_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19237C1D0Ev,_ZThn72_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19237C1D1Ev,_ZThn80_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19237C1D0Ev,_ZThn80_N8S19237C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19237C1D1Ev,_ZThn112_N8S19237C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19237C1D0Ev,_ZThn112_N8S19237C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19237C1D1Ev,_ZTv0_n24_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19237C1D1Ev,_ZThn128_N8S19237C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19237C1D0Ev,_ZTv0_n24_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19237C1D0Ev,_ZThn128_N8S19237C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S19237C1D1Ev,_ZThn140_N8S19237C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S19237C1D0Ev,_ZThn140_N8S19237C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19237C1D1Ev,_ZTvn20_n12_N8S19237C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19237C1D0Ev,_ZTvn20_n12_N8S19237C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S19237C1D1Ev,_ZThn172_N8S19237C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S19237C1D0Ev,_ZThn172_N8S19237C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19237C1[] = {
  ABISELECT(304,192),
  ABISELECT(272,172),
  ABISELECT(224,140),
  ABISELECT(200,128),
  ABISELECT(192,124),
  0,
  ABISELECT(168,112),
  ABISELECT(192,124),
  ABISELECT(184,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&_ZN8S19237C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19237C42v1Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C1D1Ev,_ZThn20_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19237C1D0Ev,_ZThn20_N8S19237C1D0Ev),
  ABISELECT(248,156),
  ABISELECT(216,136),
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19237C1D1Ev,_ZThn36_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19237C1D0Ev,_ZThn36_N8S19237C1D0Ev),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19237C1D1Ev,_ZThn72_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19237C1D0Ev,_ZThn72_N8S19237C1D0Ev),
  ABISELECT(176,112),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19237C1D1Ev,_ZThn80_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S19237C1D0Ev,_ZThn80_N8S19237C1D0Ev),
  ABISELECT(-168,-112),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  ABISELECT(-200,-128),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19237C1D1Ev,_ZTv0_n24_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19237C1D0Ev,_ZTv0_n24_N8S19237C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19237C1D1Ev,_ZTvn20_n12_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19237C1D0Ev,_ZTvn20_n12_N8S19237C1D0Ev),
  ABISELECT(-272,-172),
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI8S19237C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19237C1[];
extern void _ZN8S19237C4D1Ev();
extern void _ZN8S19237C4D0Ev();
extern void _ZN8S19237C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19237C4__8S19237C1[] = {
  ABISELECT(192,124),
  ABISELECT(184,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C4[0]),
  (VTBL_ENTRY)&_ZN8S19237C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19237C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19237C42v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19237C5__8S19237C4__8S19237C1[] = {
  ABISELECT(8,4),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI8S19237C4[0]),
};
extern void _ZN9S19237C11D1Ev();
extern void _ZN9S19237C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C11__8S19237C1[] = {
  ABISELECT(248,156),
  ABISELECT(216,136),
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&_ZN9S19237C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C11D0Ev,
};
extern void _ZN9S19237C12D1Ev();
extern void _ZN9S19237C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(168,104),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(136,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&_ZN9S19237C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C12D0Ev,
};
extern void _ZN9S19237C13D1Ev();
extern void _ZN9S19237C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C139S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&_ZN9S19237C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C13D1Ev,_ZThn76_N9S19237C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C13D0Ev,_ZThn76_N9S19237C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C139S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C12D1Ev,_ZThn76_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C12D0Ev,_ZThn76_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19237C12D1Ev,_ZThn92_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19237C12D0Ev,_ZThn92_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZThn168_N9S19237C12D1Ev,_ZThn104_N9S19237C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev)();
extern void ABISELECT(_ZThn168_N9S19237C12D0Ev,_ZThn104_N9S19237C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C7__9S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C28S19237C7__A2__9S19237C129S19237C11__8S19237C1[] = {
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI9S19237C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D1Ev,_ZTvn20_n12_N9S19237C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C12D0Ev,_ZTvn20_n12_N9S19237C12D0Ev),
};
extern void _ZN9S19237C16D1Ev();
extern void _ZN9S19237C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(176,112),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&_ZN9S19237C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C16D0Ev,
};
extern void _ZN9S19237C17D1Ev();
extern void _ZN9S19237C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C179S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&_ZN9S19237C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C17D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn72_N9S19237C17D1Ev,_ZThn48_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn72_N9S19237C17D0Ev,_ZThn48_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C179S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__A1__9S19237C179S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S19237C16D1Ev,_ZThn48_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S19237C16D0Ev,_ZThn48_N9S19237C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C169S19237C11__8S19237C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19237C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19237C11D1Ev,_ZThn76_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19237C11D0Ev,_ZThn76_N9S19237C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C11__8S19237C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S19237C11D1Ev,_ZThn92_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S19237C11D0Ev,_ZThn92_N9S19237C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19237C14__9S19237C11__8S19237C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn168_N9S19237C11D1Ev,_ZThn104_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn168_N9S19237C11D0Ev,_ZThn104_N9S19237C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C7__9S19237C11__8S19237C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N9S19237C11D1Ev,_ZTvn20_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N9S19237C11D0Ev,_ZTvn20_n12_N9S19237C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C28S19237C7__A2__9S19237C11__8S19237C1[] = {
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C11D1Ev,_ZTvn20_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N9S19237C11D0Ev,_ZTvn20_n12_N9S19237C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn216_N9S19237C11D1Ev,_ZThn136_N9S19237C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev)();
extern void ABISELECT(_ZThn216_N9S19237C11D0Ev,_ZThn136_N9S19237C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19237C8__A1__9S19237C11__8S19237C1[] = {
  ABISELECT(-216,-136),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev),
};
extern void ABISELECT(_ZThn72_N9S19237C11D1Ev,_ZThn44_N9S19237C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19237C11D0Ev,_ZThn44_N9S19237C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19237C16__9S19237C11__8S19237C1[] = {
  ABISELECT(176,112),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(72,48),
  ABISELECT(64,44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19237C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19237C11D1Ev,_ZThn44_N9S19237C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S19237C11D0Ev,_ZThn44_N9S19237C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19237C5__8S19237C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19237C5[0]),
};
extern void _ZN9S19237C14D1Ev();
extern void _ZN9S19237C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19237C14__8S19237C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&_ZN9S19237C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19237C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19237C2__9S19237C14__8S19237C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19237C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D1Ev,_ZTv0_n12_N9S19237C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19237C14D0Ev,_ZTv0_n12_N9S19237C14D0Ev),
};
static  VTT_ENTRY vtt_S19237C1[] = {
  {&(_ZTV8S19237C1[11]),  11,72},
  {&(_tg__ZTV8S19237C4__8S19237C1[4]),  4,7},
  {&(_tg__ZTV8S19237C5__8S19237C4__8S19237C1[3]),  3,3},
  {&(_tg__ZTV9S19237C11__8S19237C1[9]),  9,11},
  {&(_tg__ZTV9S19237C129S19237C11__8S19237C1[7]),  7,9},
  {&(_tg__ZTV9S19237C139S19237C129S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C139S19237C129S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C129S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV9S19237C14__9S19237C129S19237C11__8S19237C1[6]),  6,8},
  {&(_tg__ZTV8S19237C7__9S19237C129S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV8S19237C28S19237C7__A2__9S19237C129S19237C11__8S19237C1[2]),  2,4},
  {&(_tg__ZTV9S19237C169S19237C11__8S19237C1[7]),  7,9},
  {&(_tg__ZTV9S19237C179S19237C169S19237C11__8S19237C1[6]),  6,8},
  {&(_tg__ZTV9S19237C14__9S19237C179S19237C169S19237C11__8S19237C1[6]),  6,8},
  {&(_tg__ZTV8S19237C2__A1__9S19237C179S19237C169S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV9S19237C14__9S19237C169S19237C11__8S19237C1[6]),  6,8},
  {&(_tg__ZTV8S19237C2__9S19237C169S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV8S19237C2__9S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV9S19237C14__9S19237C11__8S19237C1[6]),  6,8},
  {&(_tg__ZTV8S19237C7__9S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV8S19237C28S19237C7__A2__9S19237C11__8S19237C1[2]),  2,4},
  {&(_tg__ZTV8S19237C8__A1__9S19237C11__8S19237C1[3]),  3,5},
  {&(_tg__ZTV9S19237C16__9S19237C11__8S19237C1[7]),  7,9},
  {&(_ZTV8S19237C1[45]),  45,72},
  {&(_ZTV8S19237C1[50]),  50,72},
  {&(_ZTV8S19237C1[27]),  27,72},
  {&(_ZTV8S19237C1[56]),  56,72},
  {&(_ZTV8S19237C1[61]),  61,72},
  {&(_ZTV8S19237C1[65]),  65,72},
  {&(_ZTV8S19237C1[70]),  70,72},
  {&(_ZTV8S19237C1[40]),  40,72},
  {&(_tg__ZTV8S19237C5__8S19237C1[3]),  3,3},
  {&(_tg__ZTV9S19237C14__8S19237C1[5]),  5,7},
  {&(_tg__ZTV8S19237C2__9S19237C14__8S19237C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19237C1[];
extern  VTBL_ENTRY _ZTV8S19237C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19237C1[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C11D0Ev,_ZTv0_n24_N9S19237C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19237C11D0Ev,_ZThn92_N9S19237C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C11D1Ev,_ZTv0_n24_N9S19237C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19237C11D1Ev,_ZThn92_N9S19237C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C11D0Ev,_ZTv0_n12_N9S19237C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19237C11D0Ev,_ZThn136_N9S19237C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19237C11D0Ev,_ZThn104_N9S19237C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C11D0Ev,_ZThn76_N9S19237C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C11D1Ev,_ZTv0_n12_N9S19237C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19237C11D1Ev,_ZThn136_N9S19237C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19237C11D1Ev,_ZThn104_N9S19237C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C11D1Ev,_ZThn76_N9S19237C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D0Ev,_ZTv0_n12_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D0Ev,_ZThn32_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C16D1Ev,_ZTv0_n12_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C16D1Ev,_ZThn32_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D0Ev,_ZTv0_n24_N9S19237C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C16D0Ev,_ZThn48_N9S19237C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C16D1Ev,_ZTv0_n24_N9S19237C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C16D1Ev,_ZThn48_N9S19237C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D0Ev,_ZTv0_n12_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D0Ev,_ZThn32_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C17D1Ev,_ZTv0_n12_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19237C17D1Ev,_ZThn32_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D0Ev,_ZTv0_n24_N9S19237C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C17D0Ev,_ZThn48_N9S19237C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C17D1Ev,_ZTv0_n24_N9S19237C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19237C17D1Ev,_ZThn48_N9S19237C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D0Ev,_ZTv0_n24_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19237C12D0Ev,_ZThn92_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19237C12D1Ev,_ZTv0_n24_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19237C12D1Ev,_ZThn92_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D0Ev,_ZTv0_n12_N9S19237C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19237C12D0Ev,_ZThn104_N9S19237C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C12D0Ev,_ZThn76_N9S19237C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C12D1Ev,_ZTv0_n12_N9S19237C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19237C12D1Ev,_ZThn104_N9S19237C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C12D1Ev,_ZThn76_N9S19237C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D0Ev,_ZTv0_n12_N9S19237C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C13D0Ev,_ZThn76_N9S19237C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19237C13D1Ev,_ZTv0_n12_N9S19237C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19237C13D1Ev,_ZThn76_N9S19237C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19237C1D0Ev,_ZTv0_n24_N8S19237C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19237C1D0Ev,_ZThn128_N8S19237C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19237C1D1Ev,_ZTv0_n24_N8S19237C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19237C1D1Ev,_ZThn128_N8S19237C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19237C1D0Ev,_ZTv0_n12_N8S19237C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19237C1D0Ev,_ZThn172_N8S19237C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19237C1D0Ev,_ZThn140_N8S19237C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19237C1D0Ev,_ZThn112_N8S19237C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19237C1D1Ev,_ZTv0_n12_N8S19237C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19237C1D1Ev,_ZThn172_N8S19237C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19237C1D1Ev,_ZThn140_N8S19237C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19237C1D1Ev,_ZThn112_N8S19237C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19237C1 = {  "S19237C1", // class name
  bases_S19237C1, 43,
  &(vtc_S19237C1[0]), // expected_vtbl_contents
  &(vtt_S19237C1[0]), // expected_vtt_contents
  ABISELECT(312,196), // object size
  NSPAIRA(_ZTI8S19237C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19237C1),72, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19237C1),34, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C4  : S2014C38 {
  ::S2014C38 s19437c4f0;
  virtual  ~S19437C4(); // _ZN8S19437C4D1Ev
  S19437C4(); // tgen
};
//SIG(-1 S19437C4) C1{ BC2{ m} vd FC2}


 S19437C4 ::~S19437C4(){ note_dtor("S19437C4", this);}
S19437C4 ::S19437C4(){ note_ctor("S19437C4", this);} // tgen

static void Test_S19437C4()
{
  extern Class_Descriptor cd_S19437C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19437C4, buf);
    S19437C4 *dp, &lv = *(dp=new (buf) S19437C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19437C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C4)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19437C4");
    check_field_offset(lv, s19437c4f0, ABISELECT(8,4), "S19437C4.s19437c4f0");
    test_class_info(&lv, &cd_S19437C4);
    dp->~S19437C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C4(Test_S19437C4, "S19437C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19437C4C1Ev();
extern void _ZN8S19437C4D1Ev();
Name_Map name_map_S19437C4[] = {
  NSPAIR(_ZN8S19437C4C1Ev),
  NSPAIR(_ZN8S19437C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19437C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19437C4[];
extern void _ZN8S19437C4D1Ev();
extern void _ZN8S19437C4D0Ev();
static  VTBL_ENTRY vtc_S19437C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C4[0]),
  (VTBL_ENTRY)&_ZN8S19437C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C4D0Ev,
};
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
Class_Descriptor cd_S19437C4 = {  "S19437C4", // class name
  bases_S19437C4, 1,
  &(vtc_S19437C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19437C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19437C4),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  S19437C3  : virtual S19437C4 {
  __tsi64 s19437c3f0;
  ~S19437C3(); // tgen
  S19437C3(); // tgen
};
//SIG(-1 S19437C3) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19437C3 ::~S19437C3(){ note_dtor("S19437C3", this);} // tgen
S19437C3 ::S19437C3(){ note_ctor("S19437C3", this);} // tgen

static void Test_S19437C3()
{
  extern Class_Descriptor cd_S19437C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19437C3, buf);
    S19437C3 *dp, &lv = *(dp=new (buf) S19437C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19437C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C3)");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(16,12), "S19437C3");
    check_base_class_offset(lv, (S19437C4*), ABISELECT(16,12), "S19437C3");
    check_field_offset(lv, s19437c3f0, ABISELECT(8,4), "S19437C3.s19437c3f0");
    test_class_info(&lv, &cd_S19437C3);
    dp->~S19437C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C3(Test_S19437C3, "S19437C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19437C3C1Ev();
extern void _ZN8S19437C3D1Ev();
Name_Map name_map_S19437C3[] = {
  NSPAIR(_ZN8S19437C3C1Ev),
  NSPAIR(_ZN8S19437C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
static Base_Class bases_S19437C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19437C4,    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 _ZTI8S19437C3[];
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19437C3[];
static  VTT_ENTRY vtt_S19437C3[] = {
  {&(_ZTV8S19437C3[3]),  3,10},
  {&(_ZTV8S19437C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C3 = {  "S19437C3", // class name
  bases_S19437C3, 2,
  &(vtc_S19437C3[0]), // expected_vtbl_contents
  &(vtt_S19437C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19437C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19437C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19437C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C2  : S19437C3 {
  virtual  ~S19437C2(); // _ZN8S19437C2D2Ev
  S19437C2(); // tgen
};
//SIG(-1 S19437C2) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} vd}


 S19437C2 ::~S19437C2(){ note_dtor("S19437C2", this);}
S19437C2 ::S19437C2(){ note_ctor("S19437C2", this);} // tgen

static void Test_S19437C2()
{
  extern Class_Descriptor cd_S19437C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19437C2, buf);
    S19437C2 *dp, &lv = *(dp=new (buf) S19437C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19437C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C2)");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(16,12), "S19437C2");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*), ABISELECT(16,12), "S19437C2");
    check_base_class_offset(lv, (S19437C3*), 0, "S19437C2");
    test_class_info(&lv, &cd_S19437C2);
    dp->~S19437C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C2(Test_S19437C2, "S19437C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19437C2C1Ev();
extern void _ZN8S19437C2D2Ev();
Name_Map name_map_S19437C2[] = {
  NSPAIR(_ZN8S19437C2C1Ev),
  NSPAIR(_ZN8S19437C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
static Base_Class bases_S19437C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19437C4,    ABISELECT(16,12), //bcp->offset
    5, //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_S19437C3,    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 _ZTI8S19437C2[];
extern void _ZN8S19437C2D1Ev();
extern void _ZN8S19437C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C2D1Ev,_ZThn12_N8S19437C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C2D0Ev,_ZThn12_N8S19437C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C2[0]),
  (VTBL_ENTRY)&_ZN8S19437C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C2D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19437C2[];
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C3__8S19437C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C3__8S19437C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
static  VTT_ENTRY vtt_S19437C2[] = {
  {&(_ZTV8S19437C2[3]),  3,10},
  {&(_tg__ZTV8S19437C3__8S19437C2[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C3__8S19437C2[3]),  3,5},
  {&(_ZTV8S19437C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19437C2[];
extern  VTBL_ENTRY _ZTV8S19437C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C2[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C2D0Ev,_ZThn12_N8S19437C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C2D1Ev,_ZThn12_N8S19437C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C2 = {  "S19437C2", // class name
  bases_S19437C2, 3,
  &(vtc_S19437C2[0]), // expected_vtbl_contents
  &(vtt_S19437C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19437C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19437C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19437C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C10  : virtual S2014C28 , virtual S19437C4 , virtual S3222C8_nt {
  void *s19437c10f0;
  ::S19762C18_nt s19437c10f1;
  virtual  ~S19437C10(); // _ZN9S19437C10D2Ev
  S19437C10(); // tgen
};
//SIG(-1 S19437C10) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19437C10 ::~S19437C10(){ note_dtor("S19437C10", this);}
S19437C10 ::S19437C10(){ note_ctor("S19437C10", this);} // tgen

static void Test_S19437C10()
{
  extern Class_Descriptor cd_S19437C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19437C10, buf);
    S19437C10 *dp, &lv = *(dp=new (buf) S19437C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19437C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C10)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19437C10");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(24,12), "S19437C10");
    check_base_class_offset(lv, (S19437C4*), ABISELECT(24,12), "S19437C10");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19437C10");
    check_field_offset(lv, s19437c10f0, ABISELECT(8,4), "S19437C10.s19437c10f0");
    check_field_offset(lv, s19437c10f1, ABISELECT(16,8), "S19437C10.s19437c10f1");
    test_class_info(&lv, &cd_S19437C10);
    dp->~S19437C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C10(Test_S19437C10, "S19437C10", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19437C10C1Ev();
extern void _ZN9S19437C10D2Ev();
Name_Map name_map_S19437C10[] = {
  NSPAIR(_ZN9S19437C10C1Ev),
  NSPAIR(_ZN9S19437C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19437C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19437C10[];
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C10[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19437C10[];
static  VTT_ENTRY vtt_S19437C10[] = {
  {&(_ZTV9S19437C10[5]),  5,12},
  {&(_ZTV9S19437C10[10]),  10,12},
};
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C10 = {  "S19437C10", // class name
  bases_S19437C10, 4,
  &(vtc_S19437C10[0]), // expected_vtbl_contents
  &(vtt_S19437C10[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19437C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19437C10),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19437C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C13  : S2014C28 , S19437C4 , S2014C38 , S3222C8_nt {
  short s19437c13f0:16;
  __tsi64 s19437c13f1;
  ~S19437C13(); // tgen
  S19437C13(); // tgen
};
//SIG(-1 S19437C13) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 FL}


S19437C13 ::~S19437C13(){ note_dtor("S19437C13", this);} // tgen
S19437C13 ::S19437C13(){ note_ctor("S19437C13", this);} // tgen

static void Test_S19437C13()
{
  extern Class_Descriptor cd_S19437C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19437C13, buf);
    S19437C13 *dp, &lv = *(dp=new (buf) S19437C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S19437C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C13)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19437C13");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*), 0, "S19437C13");
    check_base_class_offset(lv, (S19437C4*), 0, "S19437C13");
    /*is_ambiguous_... S19437C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19437C13");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19437C13");
    set_bf_and_test(lv, s19437c13f0, ABISELECT(16,12), 0, 16, 1, "S19437C13");
    set_bf_and_test(lv, s19437c13f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19437C13");
    check_field_offset(lv, s19437c13f1, ABISELECT(24,16), "S19437C13.s19437c13f1");
    test_class_info(&lv, &cd_S19437C13);
    dp->~S19437C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C13(Test_S19437C13, "S19437C13", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S19437C13C1Ev();
extern void _ZN9S19437C13D1Ev();
Name_Map name_map_S19437C13[] = {
  NSPAIR(_ZN9S19437C13C1Ev),
  NSPAIR(_ZN9S19437C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19437C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI9S19437C13[];
extern void _ZN9S19437C13D1Ev();
extern void _ZN9S19437C13D0Ev();
static  VTBL_ENTRY vtc_S19437C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C13[0]),
  (VTBL_ENTRY)&_ZN9S19437C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C13D0Ev,
};
extern VTBL_ENTRY _ZTI9S19437C13[];
extern  VTBL_ENTRY _ZTV9S19437C13[];
Class_Descriptor cd_S19437C13 = {  "S19437C13", // class name
  bases_S19437C13, 5,
  &(vtc_S19437C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S19437C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19437C13),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  S19437C12  : S19437C13 , S19437C4 {
  int s19437c12f0;
  ~S19437C12(); // tgen
  S19437C12(); // tgen
};
//SIG(-1 S19437C12) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 FL} BC4 Fi}


S19437C12 ::~S19437C12(){ note_dtor("S19437C12", this);} // tgen
S19437C12 ::S19437C12(){ note_ctor("S19437C12", this);} // tgen

static void Test_S19437C12()
{
  extern Class_Descriptor cd_S19437C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S19437C12, buf);
    S19437C12 *dp, &lv = *(dp=new (buf) S19437C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S19437C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C12)");
    check_base_class_offset(lv, (S2014C28*)(S19437C13*), 0, "S19437C12");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C13*), 0, "S19437C12");
    check_base_class_offset(lv, (S19437C4*)(S19437C13*), 0, "S19437C12");
    /*is_ambiguous_... S19437C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C13*), ABISELECT(9,5), "S19437C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C13*), ABISELECT(12,8), "S19437C12");
    check_base_class_offset(lv, (S19437C13*), 0, "S19437C12");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(32,24), "S19437C12");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*), ABISELECT(32,24), "S19437C12");
    check_field_offset(lv, s19437c12f0, ABISELECT(44,32), "S19437C12.s19437c12f0");
    test_class_info(&lv, &cd_S19437C12);
    dp->~S19437C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C12(Test_S19437C12, "S19437C12", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN9S19437C12C1Ev();
extern void _ZN9S19437C12D1Ev();
Name_Map name_map_S19437C12[] = {
  NSPAIR(_ZN9S19437C12C1Ev),
  NSPAIR(_ZN9S19437C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C13;
extern VTBL_ENTRY _ZTI9S19437C13[];
extern  VTBL_ENTRY _ZTV9S19437C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
static Base_Class bases_S19437C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19437C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(32,24), //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 _ZTI9S19437C12[];
extern void _ZN9S19437C12D1Ev();
extern void _ZN9S19437C12D0Ev();
extern void ABISELECT(_ZThn32_N9S19437C12D1Ev,_ZThn24_N9S19437C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19437C12D0Ev,_ZThn24_N9S19437C12D0Ev)();
static  VTBL_ENTRY vtc_S19437C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C12[0]),
  (VTBL_ENTRY)&_ZN9S19437C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C12D0Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19437C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19437C12D1Ev,_ZThn24_N9S19437C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19437C12D0Ev,_ZThn24_N9S19437C12D0Ev),
};
extern VTBL_ENTRY _ZTI9S19437C12[];
extern  VTBL_ENTRY _ZTV9S19437C12[];
Class_Descriptor cd_S19437C12 = {  "S19437C12", // class name
  bases_S19437C12, 8,
  &(vtc_S19437C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI9S19437C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19437C12),8, //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  S19437C7  : S19437C3 , virtual S2014C28 , virtual S3222C8_nt , virtual S19437C10 , virtual S19437C12 {
  long s19437c7f0;
  ::S19437C3 s19437c7f1;
  virtual  ~S19437C7(); // _ZN8S19437C7D2Ev
  S19437C7(); // tgen
};
//SIG(-1 S19437C7) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 FL} BC3 Fi} vd Fl FC2}


 S19437C7 ::~S19437C7(){ note_dtor("S19437C7", this);}
S19437C7 ::S19437C7(){ note_ctor("S19437C7", this);} // tgen

static void Test_S19437C7()
{
  extern Class_Descriptor cd_S19437C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19437C7, buf);
    S19437C7 *dp, &lv = *(dp=new (buf) S19437C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19437C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C7)");
    /*is_ambiguous_... S19437C7::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(56,36), "S19437C7");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*), ABISELECT(56,36), "S19437C7");
    check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(56,36), "S19437C7");
    check_base_class_offset(lv, (S19437C3*), 0, "S19437C7");
    /*is_ambiguous_... S19437C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S19437C7");
    check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C7");
    /*is_ambiguous_... S19437C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19437C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(68,44), "S19437C7");
    check_base_class_offset(lv, (S19437C10*), ABISELECT(72,48), "S19437C7");
    check_base_class_offset(lv, (S2014C28*)(S19437C13*)(S19437C12*), ABISELECT(96,60), "S19437C7");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(96,60), "S19437C7");
    check_base_class_offset(lv, (S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(96,60), "S19437C7");
    /*is_ambiguous_... S19437C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C13*)(S19437C12*), ABISELECT(105,65), "S19437C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C13*)(S19437C12*), ABISELECT(108,68), "S19437C7");
    check_base_class_offset(lv, (S19437C13*)(S19437C12*), ABISELECT(96,60), "S19437C7");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C12*), ABISELECT(128,84), "S19437C7");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C12*), ABISELECT(128,84), "S19437C7");
    check_base_class_offset(lv, (S19437C12*), ABISELECT(96,60), "S19437C7");
    check_field_offset(lv, s19437c7f0, ABISELECT(16,12), "S19437C7.s19437c7f0");
    check_field_offset(lv, s19437c7f1, ABISELECT(24,16), "S19437C7.s19437c7f1");
    test_class_info(&lv, &cd_S19437C7);
    dp->~S19437C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C7(Test_S19437C7, "S19437C7", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19437C7C1Ev();
extern void _ZN8S19437C7D2Ev();
Name_Map name_map_S19437C7[] = {
  NSPAIR(_ZN8S19437C7C1Ev),
  NSPAIR(_ZN8S19437C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C13;
extern VTBL_ENTRY _ZTI9S19437C13[];
extern  VTBL_ENTRY _ZTV9S19437C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C12;
extern VTBL_ENTRY _ZTI9S19437C12[];
extern  VTBL_ENTRY _ZTV9S19437C12[];
static Base_Class bases_S19437C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(56,36), //bcp->offset
    9, //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_S19437C3,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19437C10,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19437C4,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19437C13,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(128,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_S19437C4,    ABISELECT(128,84), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19437C12,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19437C7[];
extern void _ZN8S19437C7D1Ev();
extern void _ZN8S19437C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C7D1Ev,_ZThn36_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19437C7D0Ev,_ZThn36_N8S19437C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn72_N8S19437C7D1Ev,_ZThn48_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn72_N8S19437C7D0Ev,_ZThn48_N8S19437C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S19437C7D1Ev,_ZThn60_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S19437C7D0Ev,_ZThn60_N8S19437C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev)();
static  VTBL_ENTRY vtc_S19437C7[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&_ZN8S19437C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C7D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19437C7[];
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C3__8S19437C7[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C3D1Ev,_ZThn36_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19437C3D0Ev,_ZThn36_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C3__8S19437C7[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__8S19437C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
static  VTT_ENTRY vtt_S19437C7[] = {
  {&(_ZTV8S19437C7[7]),  7,31},
  {&(_tg__ZTV8S19437C3__8S19437C7[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C3__8S19437C7[3]),  3,5},
  {&(_ZTV8S19437C7[12]),  12,31},
  {&(_ZTV8S19437C7[20]),  20,31},
  {&(_ZTV8S19437C7[25]),  25,31},
  {&(_ZTV8S19437C7[29]),  29,31},
  {&(_tg__ZTV9S19437C10__8S19437C7[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__8S19437C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19437C7[];
extern  VTBL_ENTRY _ZTV8S19437C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C7[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C3D0Ev,_ZThn36_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C3D1Ev,_ZThn36_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19437C7D0Ev,_ZThn48_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19437C7D1Ev,_ZThn48_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19437C7D0Ev,_ZThn60_N8S19437C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C7D0Ev,_ZThn36_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19437C7D1Ev,_ZThn60_N8S19437C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C7D1Ev,_ZThn36_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C7 = {  "S19437C7", // class name
  bases_S19437C7, 15,
  &(vtc_S19437C7[0]), // expected_vtbl_contents
  &(vtt_S19437C7[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19437C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19437C7),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19437C7),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C15  : S2014C38 , S19437C4 , virtual S2014C28 , virtual S19437C10 {
  virtual  ~S19437C15(); // _ZN9S19437C15D2Ev
  S19437C15(); // tgen
};
//SIG(-1 S19437C15) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19437C15 ::~S19437C15(){ note_dtor("S19437C15", this);}
S19437C15 ::S19437C15(){ note_ctor("S19437C15", this);} // tgen

static void Test_S19437C15()
{
  extern Class_Descriptor cd_S19437C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19437C15, buf);
    S19437C15 *dp, &lv = *(dp=new (buf) S19437C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19437C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C15)");
    /*is_ambiguous_... S19437C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19437C15");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), 0, "S19437C15");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*), 0, "S19437C15");
    check_base_class_offset(lv, (S2014C28*), 0, "S19437C15");
    check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C15");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(40,20), "S19437C15");
    check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(40,20), "S19437C15");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(52,28), "S19437C15");
    check_base_class_offset(lv, (S19437C10*), ABISELECT(16,8), "S19437C15");
    test_class_info(&lv, &cd_S19437C15);
    dp->~S19437C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C15(Test_S19437C15, "S19437C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19437C15C1Ev();
extern void _ZN9S19437C15D2Ev();
Name_Map name_map_S19437C15[] = {
  NSPAIR(_ZN9S19437C15C1Ev),
  NSPAIR(_ZN9S19437C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
static Base_Class bases_S19437C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19437C10,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19437C15[];
extern void _ZN9S19437C15D1Ev();
extern void _ZN9S19437C15D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S19437C15D1Ev,_ZThn8_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S19437C15D0Ev,_ZThn8_N9S19437C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19437C15D1Ev,_ZThn20_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19437C15D0Ev,_ZThn20_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C15[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&_ZN9S19437C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19437C15[];
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C15[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__9S19437C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
static  VTT_ENTRY vtt_S19437C15[] = {
  {&(_ZTV9S19437C15[6]),  6,21},
  {&(_ZTV9S19437C15[14]),  14,21},
  {&(_ZTV9S19437C15[19]),  19,21},
  {&(_tg__ZTV9S19437C10__9S19437C15[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__9S19437C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19437C15[];
extern  VTBL_ENTRY _ZTV9S19437C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C15[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C15D0Ev,_ZThn20_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C15D1Ev,_ZThn20_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19437C15D0Ev,_ZThn8_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19437C15D1Ev,_ZThn8_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C15 = {  "S19437C15", // class name
  bases_S19437C15, 8,
  &(vtc_S19437C15[0]), // expected_vtbl_contents
  &(vtt_S19437C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19437C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19437C15),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19437C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C14  : virtual S19437C10 , S19437C15 , virtual S2014C38 {
  ::S3222C8_nt s19437c14f0[6];
  virtual  ~S19437C14(); // _ZN9S19437C14D2Ev
  S19437C14(); // tgen
};
//SIG(-1 S19437C14) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19437C14 ::~S19437C14(){ note_dtor("S19437C14", this);}
S19437C14 ::S19437C14(){ note_ctor("S19437C14", this);} // tgen

static void Test_S19437C14()
{
  extern Class_Descriptor cd_S19437C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19437C14, buf);
    S19437C14 *dp, &lv = *(dp=new (buf) S19437C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19437C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C14)");
    check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C14");
    check_base_class_offset(lv, (S2014C28*)(S19437C15*), 0, "S19437C14");
    /*is_ambiguous_... S19437C14::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(64,44), "S19437C14");
    check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(64,44), "S19437C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(76,52), "S19437C14");
    check_base_class_offset(lv, (S19437C10*), ABISELECT(40,32), "S19437C14");
    check_base_class_offset(lv, (S19437C10*)(S19437C15*), ABISELECT(40,32), "S19437C14");
    /*is_ambiguous_... S19437C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C15*), ABISELECT(9,5), "S19437C14");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C15*), 0, "S19437C14");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C15*), 0, "S19437C14");
    check_base_class_offset(lv, (S19437C15*), 0, "S19437C14");
    /*is_ambiguous_... S19437C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S19437C14");
    check_field_offset(lv, s19437c14f0, ABISELECT(12,8), "S19437C14.s19437c14f0");
    test_class_info(&lv, &cd_S19437C14);
    dp->~S19437C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C14(Test_S19437C14, "S19437C14", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19437C14C1Ev();
extern void _ZN9S19437C14D2Ev();
Name_Map name_map_S19437C14[] = {
  NSPAIR(_ZN9S19437C14C1Ev),
  NSPAIR(_ZN9S19437C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C15;
extern VTBL_ENTRY _ZTI9S19437C15[];
extern  VTBL_ENTRY _ZTV9S19437C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19437C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19437C10,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19437C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19437C14[];
extern void _ZN9S19437C14D1Ev();
extern void _ZN9S19437C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev)();
extern void ABISELECT(_ZThn40_N9S19437C14D1Ev,_ZThn32_N9S19437C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev)();
extern void ABISELECT(_ZThn40_N9S19437C14D0Ev,_ZThn32_N9S19437C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19437C14D1Ev,_ZThn44_N9S19437C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19437C14D0Ev,_ZThn44_N9S19437C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C14[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&_ZN9S19437C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C14D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19437C14[];
extern void _ZN9S19437C15D1Ev();
extern void _ZN9S19437C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C15__9S19437C14[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&_ZN9S19437C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19437C15D1Ev,_ZThn32_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19437C15D0Ev,_ZThn32_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C15__9S19437C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S19437C15D1Ev,_ZThn44_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S19437C15D0Ev,_ZThn44_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__A1__9S19437C15__9S19437C14[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__9S19437C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
static  VTT_ENTRY vtt_S19437C14[] = {
  {&(_ZTV9S19437C14[7]),  7,22},
  {&(_tg__ZTV9S19437C15__9S19437C14[6]),  6,8},
  {&(_tg__ZTV9S19437C10__9S19437C15__9S19437C14[6]),  6,8},
  {&(_tg__ZTV8S19437C4__A1__9S19437C15__9S19437C14[3]),  3,5},
  {&(_ZTV9S19437C14[15]),  15,22},
  {&(_ZTV9S19437C14[20]),  20,22},
  {&(_tg__ZTV9S19437C10__9S19437C14[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__9S19437C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19437C14[];
extern  VTBL_ENTRY _ZTV9S19437C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C14[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D0Ev,_ZThn12_N9S19437C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19437C10D1Ev,_ZThn12_N9S19437C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19437C15D0Ev,_ZThn44_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19437C15D1Ev,_ZThn44_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C15D0Ev,_ZThn32_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C15D1Ev,_ZThn32_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19437C14D0Ev,_ZThn44_N9S19437C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19437C14D1Ev,_ZThn44_N9S19437C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C14D0Ev,_ZThn32_N9S19437C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19437C14D1Ev,_ZThn32_N9S19437C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C14 = {  "S19437C14", // class name
  bases_S19437C14, 10,
  &(vtc_S19437C14[0]), // expected_vtbl_contents
  &(vtt_S19437C14[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19437C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19437C14),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19437C14),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C16  : virtual S19437C3 , virtual S3222C8_nt {
  unsigned char s19437c16f0:1;
  ~S19437C16(); // tgen
  S19437C16(); // tgen
};
//SIG(-1 S19437C16) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S19437C16 ::~S19437C16(){ note_dtor("S19437C16", this);} // tgen
S19437C16 ::S19437C16(){ note_ctor("S19437C16", this);} // tgen

static void Test_S19437C16()
{
  extern Class_Descriptor cd_S19437C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19437C16, buf);
    S19437C16 *dp, &lv = *(dp=new (buf) S19437C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19437C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C16)");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(32,20), "S19437C16");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*), ABISELECT(32,20), "S19437C16");
    check_base_class_offset(lv, (S19437C3*), ABISELECT(16,8), "S19437C16");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S19437C16");
    set_bf_and_test(lv, s19437c16f0, ABISELECT(8,4), 0, 1, 1, "S19437C16");
    test_class_info(&lv, &cd_S19437C16);
    dp->~S19437C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C16(Test_S19437C16, "S19437C16", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19437C16C1Ev();
extern void _ZN9S19437C16D1Ev();
Name_Map name_map_S19437C16[] = {
  NSPAIR(_ZN9S19437C16C1Ev),
  NSPAIR(_ZN9S19437C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19437C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(32,20), //bcp->offset
    13, //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_S19437C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19437C16[];
extern void _ZN9S19437C16D1Ev();
extern void _ZN9S19437C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19437C16D1Ev,_ZThn8_N9S19437C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S19437C16D0Ev,_ZThn8_N9S19437C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19437C16D1Ev,_ZThn20_N9S19437C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19437C16D0Ev,_ZThn20_N9S19437C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C16[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&_ZN9S19437C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19437C16[];
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C3__9S19437C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C3__9S19437C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
static  VTT_ENTRY vtt_S19437C16[] = {
  {&(_ZTV9S19437C16[5]),  5,18},
  {&(_ZTV9S19437C16[11]),  11,18},
  {&(_ZTV9S19437C16[16]),  16,18},
  {&(_tg__ZTV8S19437C3__9S19437C16[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C3__9S19437C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19437C16[];
extern  VTBL_ENTRY _ZTV9S19437C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C16[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19437C16D0Ev,_ZThn20_N9S19437C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19437C16D1Ev,_ZThn20_N9S19437C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19437C16D0Ev,_ZThn8_N9S19437C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19437C16D1Ev,_ZThn8_N9S19437C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C16 = {  "S19437C16", // class name
  bases_S19437C16, 4,
  &(vtc_S19437C16[0]), // expected_vtbl_contents
  &(vtt_S19437C16[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19437C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19437C16),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19437C16),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C6  : virtual S19437C7 , S19437C14 , S19437C16 , S19437C10 {
  ~S19437C6(); // tgen
  S19437C6(); // tgen
};
//SIG(-1 S19437C6) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 FL} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S19437C6 ::~S19437C6(){ note_dtor("S19437C6", this);} // tgen
S19437C6 ::S19437C6(){ note_ctor("S19437C6", this);} // tgen

static void Test_S19437C6()
{
  extern Class_Descriptor cd_S19437C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S19437C6, buf);
    S19437C6 *dp, &lv = *(dp=new (buf) S19437C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S19437C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C6)");
    /*is_ambiguous_... S19437C6::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(136,88), "S19437C6");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*)(S19437C7*), ABISELECT(136,88), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(136,88), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C3 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C3*), ABISELECT(136,88), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(136,88), "S19437C6");
    check_base_class_offset(lv, (S19437C3*)(S19437C7*), ABISELECT(80,52), "S19437C6");
    /*is_ambiguous_... S19437C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C7*), 0, "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C6");
    check_base_class_offset(lv, (S2014C28*)(S19437C15*)(S19437C14*), 0, "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C6");
    /*is_ambiguous_... S19437C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C7*), ABISELECT(148,96), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(148,96), "S19437C6");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C16*), ABISELECT(148,96), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(148,96), "S19437C6");
    check_base_class_offset(lv, (S19437C10*)(S19437C7*), ABISELECT(152,100), "S19437C6");
    check_base_class_offset(lv, (S19437C10*)(S19437C14*), ABISELECT(152,100), "S19437C6");
    check_base_class_offset(lv, (S19437C10*)(S19437C15*)(S19437C14*), ABISELECT(152,100), "S19437C6");
    check_base_class_offset(lv, (S2014C28*)(S19437C13*)(S19437C12*), ABISELECT(176,112), "S19437C6");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(176,112), "S19437C6");
    check_base_class_offset(lv, (S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(176,112), "S19437C6");
    /*is_ambiguous_... S19437C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C13*)(S19437C12*), ABISELECT(185,117), "S19437C6");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C13*)(S19437C12*), ABISELECT(188,120), "S19437C6");
    check_base_class_offset(lv, (S19437C13*)(S19437C12*), ABISELECT(176,112), "S19437C6");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C12*), ABISELECT(208,136), "S19437C6");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C12*), ABISELECT(208,136), "S19437C6");
    check_base_class_offset(lv, (S19437C12*)(S19437C7*), ABISELECT(176,112), "S19437C6");
    check_base_class_offset(lv, (S19437C7*), ABISELECT(80,52), "S19437C6");
    /*is_ambiguous_... S19437C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C15*)(S19437C14*), ABISELECT(9,5), "S19437C6");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C15*)(S19437C14*), 0, "S19437C6");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C15*)(S19437C14*), 0, "S19437C6");
    check_base_class_offset(lv, (S19437C15*)(S19437C14*), 0, "S19437C6");
    /*is_ambiguous_... S19437C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C14*), ABISELECT(224,148), "S19437C6");
    check_base_class_offset(lv, (S19437C14*), 0, "S19437C6");
    check_base_class_offset(lv, (S19437C3*)(S19437C16*), ABISELECT(224,148), "S19437C6");
    check_base_class_offset(lv, (S19437C16*), ABISELECT(40,32), "S19437C6");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C10*), ABISELECT(56,40), "S19437C6");
    test_class_info(&lv, &cd_S19437C6);
    dp->~S19437C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C6(Test_S19437C6, "S19437C6", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN8S19437C6C1Ev();
extern void _ZN8S19437C6D1Ev();
Name_Map name_map_S19437C6[] = {
  NSPAIR(_ZN8S19437C6C1Ev),
  NSPAIR(_ZN8S19437C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C13;
extern VTBL_ENTRY _ZTI9S19437C13[];
extern  VTBL_ENTRY _ZTV9S19437C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C12;
extern VTBL_ENTRY _ZTI9S19437C12[];
extern  VTBL_ENTRY _ZTV9S19437C12[];
extern Class_Descriptor cd_S19437C7;
extern VTBL_ENTRY _ZTI8S19437C7[];
extern  VTBL_ENTRY _ZTV8S19437C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C15;
extern VTBL_ENTRY _ZTI9S19437C15[];
extern  VTBL_ENTRY _ZTV9S19437C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C14;
extern VTBL_ENTRY _ZTI9S19437C14[];
extern  VTBL_ENTRY _ZTV9S19437C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C14[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S19437C16;
extern VTBL_ENTRY _ZTI9S19437C16[];
extern  VTBL_ENTRY _ZTV9S19437C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C16[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
static Base_Class bases_S19437C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19437C3,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S19437C10,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S19437C13,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    ABISELECT(208,136), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19437C12,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19437C7,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19437C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S19437C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19437C3,    ABISELECT(224,148), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19437C16,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19437C10,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19437C6[];
extern void _ZN8S19437C6D1Ev();
extern void _ZN8S19437C6D0Ev();
extern void ABISELECT(_ZThn40_N8S19437C6D1Ev,_ZThn32_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S19437C6D0Ev,_ZThn32_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19437C6D1Ev,_ZThn40_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C6D0Ev,_ZThn40_N8S19437C6D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19437C6D1Ev,_ZThn52_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19437C6D0Ev,_ZThn52_N8S19437C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn136_N8S19437C6D1Ev,_ZThn88_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn136_N8S19437C6D0Ev,_ZThn88_N8S19437C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn152_N8S19437C6D1Ev,_ZThn100_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn152_N8S19437C6D0Ev,_ZThn100_N8S19437C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19437C6D1Ev,_ZThn112_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19437C6D0Ev,_ZThn112_N8S19437C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19437C6D1Ev,_ZTvn24_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C6D0Ev,_ZTvn24_n12_N8S19437C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn224_N8S19437C6D1Ev,_ZThn148_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn224_N8S19437C6D0Ev,_ZThn148_N8S19437C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C6[] = {
  ABISELECT(224,148),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&_ZN8S19437C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C6D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19437C6D1Ev,_ZThn32_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19437C6D0Ev,_ZThn32_N8S19437C6D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19437C6D1Ev,_ZThn40_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19437C6D0Ev,_ZThn40_N8S19437C6D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C6D1Ev,_ZTvn24_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C6D0Ev,_ZTvn24_n12_N8S19437C6D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-88,-60),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19437C6[];
extern void _ZN9S19437C14D1Ev();
extern void _ZN9S19437C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C14__8S19437C6[] = {
  ABISELECT(224,148),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&_ZN9S19437C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C14D0Ev,
};
extern void _ZN9S19437C15D1Ev();
extern void _ZN9S19437C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C159S19437C14__8S19437C6[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&_ZN9S19437C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S19437C15D1Ev,_ZThn100_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S19437C15D0Ev,_ZThn100_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C159S19437C14__8S19437C6[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19437C15D1Ev,_ZThn88_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19437C15D0Ev,_ZThn88_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__A1__9S19437C159S19437C14__8S19437C6[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19437C14D1Ev,_ZThn100_N9S19437C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19437C14D0Ev,_ZThn100_N9S19437C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C14__8S19437C6[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19437C14D1Ev,_ZThn88_N9S19437C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19437C14D0Ev,_ZThn88_N9S19437C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C14__8S19437C6[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev),
};
extern void _ZN9S19437C16D1Ev();
extern void _ZN9S19437C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C16__8S19437C6[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&_ZN9S19437C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S19437C16D1Ev,_ZThn116_N9S19437C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S19437C16D0Ev,_ZThn116_N9S19437C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C3__9S19437C16__8S19437C6[] = {
  ABISELECT(-184,-116),
  ABISELECT(-88,-60),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19437C16D1Ev,_ZThn56_N9S19437C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19437C16D0Ev,_ZThn56_N9S19437C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C16__8S19437C6[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__A__8S19437C6[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19437C10D1Ev,_ZThn48_N9S19437C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19437C10D0Ev,_ZThn48_N9S19437C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__A__8S19437C6[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
extern void _ZN8S19437C7D1Ev();
extern void _ZN8S19437C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C7__8S19437C6[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&_ZN8S19437C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C7D0Ev,
};
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C38S19437C7__8S19437C6[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C3D1Ev,_ZThn36_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19437C3D0Ev,_ZThn36_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C38S19437C7__8S19437C6[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C7D1Ev,_ZThn36_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19437C7D0Ev,_ZThn36_N8S19437C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C7__8S19437C6[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn72_N8S19437C7D1Ev,_ZThn48_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn72_N8S19437C7D0Ev,_ZThn48_N8S19437C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C7__8S19437C6[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S19437C7D1Ev,_ZThn60_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S19437C7D0Ev,_ZThn60_N8S19437C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C12__8S19437C7__8S19437C6[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C49S19437C12__A2__8S19437C7__8S19437C6[] = {
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C6[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__8S19437C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C3__A1__8S19437C6[] = {
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C3__A1__8S19437C6[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
static  VTT_ENTRY vtt_S19437C6[] = {
  {&(_ZTV8S19437C6[10]),  10,64},
  {&(_tg__ZTV9S19437C14__8S19437C6[7]),  7,9},
  {&(_tg__ZTV9S19437C159S19437C14__8S19437C6[6]),  6,8},
  {&(_tg__ZTV9S19437C10__9S19437C159S19437C14__8S19437C6[6]),  6,8},
  {&(_tg__ZTV8S19437C4__A1__9S19437C159S19437C14__8S19437C6[3]),  3,5},
  {&(_tg__ZTV9S19437C10__9S19437C14__8S19437C6[6]),  6,8},
  {&(_tg__ZTV8S19437C4__9S19437C14__8S19437C6[3]),  3,5},
  {&(_tg__ZTV9S19437C16__8S19437C6[5]),  5,7},
  {&(_tg__ZTV8S19437C3__9S19437C16__8S19437C6[4]),  4,6},
  {&(_tg__ZTV8S19437C4__9S19437C16__8S19437C6[3]),  3,5},
  {&(_tg__ZTV9S19437C10__A__8S19437C6[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__A__8S19437C6[3]),  3,5},
  {&(_ZTV8S19437C6[34]),  34,64},
  {&(_ZTV8S19437C6[39]),  39,64},
  {&(_ZTV8S19437C6[47]),  47,64},
  {&(_ZTV8S19437C6[52]),  52,64},
  {&(_ZTV8S19437C6[56]),  56,64},
  {&(_ZTV8S19437C6[17]),  17,64},
  {&(_ZTV8S19437C6[62]),  62,64},
  {&(_ZTV8S19437C6[24]),  24,64},
  {&(_tg__ZTV8S19437C7__8S19437C6[7]),  7,9},
  {&(_tg__ZTV8S19437C38S19437C7__8S19437C6[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C38S19437C7__8S19437C6[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C7__8S19437C6[3]),  3,5},
  {&(_tg__ZTV9S19437C10__8S19437C7__8S19437C6[6]),  6,8},
  {&(_tg__ZTV9S19437C12__8S19437C7__8S19437C6[3]),  3,5},
  {&(_tg__ZTV8S19437C49S19437C12__A2__8S19437C7__8S19437C6[2]),  2,4},
  {&(_tg__ZTV9S19437C10__8S19437C6[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__8S19437C6[3]),  3,5},
  {&(_tg__ZTV8S19437C3__A1__8S19437C6[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C3__A1__8S19437C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19437C6[];
extern  VTBL_ENTRY _ZTV8S19437C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C6[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19437C7D0Ev,_ZThn48_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19437C7D1Ev,_ZThn48_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19437C7D0Ev,_ZThn60_N8S19437C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C7D0Ev,_ZThn36_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19437C7D1Ev,_ZThn60_N8S19437C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C7D1Ev,_ZThn36_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C3D0Ev,_ZThn36_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19437C3D1Ev,_ZThn36_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19437C10D0Ev,_ZThn48_N9S19437C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19437C10D1Ev,_ZThn48_N9S19437C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19437C16D0Ev,_ZThn56_N9S19437C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19437C16D1Ev,_ZThn56_N9S19437C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19437C16D0Ev,_ZThn116_N9S19437C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19437C16D1Ev,_ZThn116_N9S19437C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19437C14D0Ev,_ZThn88_N9S19437C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19437C14D1Ev,_ZThn88_N9S19437C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19437C14D0Ev,_ZThn100_N9S19437C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19437C14D1Ev,_ZThn100_N9S19437C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19437C15D0Ev,_ZThn88_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19437C15D1Ev,_ZThn88_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19437C15D0Ev,_ZThn100_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19437C15D1Ev,_ZThn100_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19437C6D0Ev,_ZThn148_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19437C6D1Ev,_ZThn148_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19437C6D0Ev,_ZThn100_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19437C6D1Ev,_ZThn100_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19437C6D0Ev,_ZThn112_N8S19437C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19437C6D0Ev,_ZThn88_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19437C6D1Ev,_ZThn112_N8S19437C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19437C6D1Ev,_ZThn88_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19437C6D0Ev,_ZThn52_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19437C6D1Ev,_ZThn52_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C6 = {  "S19437C6", // class name
  bases_S19437C6, 25,
  &(vtc_S19437C6[0]), // expected_vtbl_contents
  &(vtt_S19437C6[0]), // expected_vtt_contents
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI8S19437C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19437C6),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19437C6),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19437C1  : virtual S19437C2 , virtual S2014C38 , virtual S19437C6 , virtual S19437C15 {
  void *s19437c1f0;
  virtual  ~S19437C1(); // _ZN8S19437C1D2Ev
  S19437C1(); // tgen
};
//SIG(1 S19437C1) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} vd} VBC5 VBC6{ VBC7{ BC3 VBC8{ m} VBC9{ m Fi} VBC10{ VBC8 VBC4 VBC9 vd Fp FC11{}} VBC12{ BC13{ BC8 BC4 BC5 BC9 Fs:16 FL} BC4 Fi} vd Fl FC3} BC14{ VBC10 BC15{ BC5 BC4 VBC8 VBC10 vd} VBC5 vd FC9[6]} BC16{ VBC3 VBC9 Fc:1} BC10} VBC15 vd Fp}


 S19437C1 ::~S19437C1(){ note_dtor("S19437C1", this);}
S19437C1 ::S19437C1(){ note_ctor("S19437C1", this);} // tgen

static void Test_S19437C1()
{
  extern Class_Descriptor cd_S19437C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,48)];
    init_test(&cd_S19437C1, buf);
    S19437C1 *dp, &lv = *(dp=new (buf) S19437C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,188), "sizeof(S19437C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19437C1)");
    /*is_ambiguous_... S19437C1::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*), ABISELECT(32,20), "S19437C1");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*)(S19437C2*), ABISELECT(32,20), "S19437C1");
    check_base_class_offset(lv, (S19437C4*)(S19437C3*)(S19437C7*), ABISELECT(32,20), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C10*), ABISELECT(32,20), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C3 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C3*), ABISELECT(32,20), "S19437C1");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C10*)(S19437C6*), ABISELECT(32,20), "S19437C1");
    check_base_class_offset(lv, (S19437C3*)(S19437C2*), ABISELECT(16,8), "S19437C1");
    check_base_class_offset(lv, (S19437C2*), ABISELECT(16,8), "S19437C1");
    /*is_ambiguous_... S19437C1::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), 0, "S19437C1");
    /*is_ambiguous_... S19437C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C14*)(S19437C6*), 0, "S19437C1");
    check_base_class_offset(lv, (S19437C3*)(S19437C7*), ABISELECT(128,80), "S19437C1");
    /*is_ambiguous_... S19437C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C7*), 0, "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C10*), 0, "S19437C1");
    check_base_class_offset(lv, (S2014C28*)(S19437C15*)(S19437C14*)(S19437C6*), 0, "S19437C1");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C10*)(S19437C6*), 0, "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19437C15*), 0, "S19437C1");
    /*is_ambiguous_... S19437C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C7*), ABISELECT(184,116), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*), ABISELECT(184,116), "S19437C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C16*)(S19437C6*), ABISELECT(184,116), "S19437C1");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19437C10*)(S19437C6*), ABISELECT(184,116), "S19437C1");
    check_base_class_offset(lv, (S19437C10*)(S19437C7*), ABISELECT(192,120), "S19437C1");
    check_base_class_offset(lv, (S19437C10*)(S19437C14*)(S19437C6*), ABISELECT(192,120), "S19437C1");
    check_base_class_offset(lv, (S19437C10*)(S19437C15*)(S19437C14*)(S19437C6*), ABISELECT(192,120), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S19437C10*)(S19437C15*), ABISELECT(192,120), "S19437C1");
    check_base_class_offset(lv, (S2014C28*)(S19437C13*)(S19437C12*), ABISELECT(216,132), "S19437C1");
    check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(216,132), "S19437C1");
    check_base_class_offset(lv, (S19437C4*)(S19437C13*)(S19437C12*), ABISELECT(216,132), "S19437C1");
    /*is_ambiguous_... S19437C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C13*)(S19437C12*), ABISELECT(225,137), "S19437C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19437C13*)(S19437C12*), ABISELECT(228,140), "S19437C1");
    check_base_class_offset(lv, (S19437C13*)(S19437C12*), ABISELECT(216,132), "S19437C1");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C12*), ABISELECT(248,156), "S19437C1");
    /*is_ambiguous_... S19437C12::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C12*), ABISELECT(248,156), "S19437C1");
    check_base_class_offset(lv, (S19437C12*)(S19437C7*), ABISELECT(216,132), "S19437C1");
    check_base_class_offset(lv, (S19437C7*)(S19437C6*), ABISELECT(128,80), "S19437C1");
    /*is_ambiguous_... S19437C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C15*)(S19437C14*)(S19437C6*), ABISELECT(57,33), "S19437C1");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C15*)(S19437C14*)(S19437C6*), ABISELECT(48,28), "S19437C1");
    /*is_ambiguous_... S19437C15::S19437C4 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C15*)(S19437C14*)(S19437C6*), ABISELECT(48,28), "S19437C1");
    check_base_class_offset(lv, (S19437C15*)(S19437C14*)(S19437C6*), ABISELECT(48,28), "S19437C1");
    check_base_class_offset(lv, (S19437C14*)(S19437C6*), ABISELECT(48,28), "S19437C1");
    check_base_class_offset(lv, (S19437C3*)(S19437C16*)(S19437C6*), ABISELECT(264,168), "S19437C1");
    check_base_class_offset(lv, (S19437C16*)(S19437C6*), ABISELECT(88,60), "S19437C1");
    /*is_ambiguous_... S19437C6::S19437C10 */ AMB_check_base_class_offset(lv, (S19437C10*)(S19437C6*), ABISELECT(104,68), "S19437C1");
    check_base_class_offset(lv, (S19437C6*), ABISELECT(48,28), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C15*), ABISELECT(289,185), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19437C4*)(S19437C15*), ABISELECT(280,180), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S19437C4*)(S19437C15*), ABISELECT(280,180), "S19437C1");
    /*is_ambiguous_... S19437C1::S19437C15 */ AMB_check_base_class_offset(lv, (S19437C15*), ABISELECT(280,180), "S19437C1");
    check_field_offset(lv, s19437c1f0, ABISELECT(8,4), "S19437C1.s19437c1f0");
    test_class_info(&lv, &cd_S19437C1);
    dp->~S19437C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19437C1(Test_S19437C1, "S19437C1", ABISELECT(296,188));

#else // __cplusplus

extern void _ZN8S19437C1C1Ev();
extern void _ZN8S19437C1D2Ev();
Name_Map name_map_S19437C1[] = {
  NSPAIR(_ZN8S19437C1C1Ev),
  NSPAIR(_ZN8S19437C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S19437C2;
extern VTBL_ENTRY _ZTI8S19437C2[];
extern  VTBL_ENTRY _ZTV8S19437C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19437C13;
extern VTBL_ENTRY _ZTI9S19437C13[];
extern  VTBL_ENTRY _ZTV9S19437C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C12;
extern VTBL_ENTRY _ZTI9S19437C12[];
extern  VTBL_ENTRY _ZTV9S19437C12[];
extern Class_Descriptor cd_S19437C7;
extern VTBL_ENTRY _ZTI8S19437C7[];
extern  VTBL_ENTRY _ZTV8S19437C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C15;
extern VTBL_ENTRY _ZTI9S19437C15[];
extern  VTBL_ENTRY _ZTV9S19437C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C15[];
extern Class_Descriptor cd_S19437C14;
extern VTBL_ENTRY _ZTI9S19437C14[];
extern  VTBL_ENTRY _ZTV9S19437C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C14[];
extern Class_Descriptor cd_S19437C3;
extern VTBL_ENTRY _ZTI8S19437C3[];
extern  VTBL_ENTRY _ZTV8S19437C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C3[];
extern Class_Descriptor cd_S19437C16;
extern VTBL_ENTRY _ZTI9S19437C16[];
extern  VTBL_ENTRY _ZTV9S19437C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C16[];
extern Class_Descriptor cd_S19437C10;
extern VTBL_ENTRY _ZTI9S19437C10[];
extern  VTBL_ENTRY _ZTV9S19437C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C10[];
extern Class_Descriptor cd_S19437C6;
extern VTBL_ENTRY _ZTI8S19437C6[];
extern  VTBL_ENTRY _ZTV8S19437C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C6[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19437C4;
extern VTBL_ENTRY _ZTI8S19437C4[];
extern  VTBL_ENTRY _ZTV8S19437C4[];
extern Class_Descriptor cd_S19437C15;
extern VTBL_ENTRY _ZTI9S19437C15[];
extern  VTBL_ENTRY _ZTV9S19437C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19437C15[];
static Base_Class bases_S19437C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(32,20), //bcp->offset
    21, //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_S19437C3,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19437C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19437C3,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    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
    8, //immediately_derived
  0, 1},
  {&cd_S19437C10,    ABISELECT(192,120), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19437C4,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(225,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(228,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
    14, //immediately_derived
  0, 0},
  {&cd_S19437C13,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(248,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
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(248,156), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19437C12,    ABISELECT(216,132), //bcp->offset
    71, //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
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19437C7,    ABISELECT(128,80), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19437C4,    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
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19437C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    23, //immediately_derived
  0, 0},
  {&cd_S19437C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19437C3,    ABISELECT(264,168), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19437C16,    ABISELECT(88,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19437C10,    ABISELECT(104,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19437C6,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(289,185), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(280,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
    30, //immediately_derived
  0, 0},
  {&cd_S19437C4,    ABISELECT(280,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
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19437C15,    ABISELECT(280,180), //bcp->offset
    86, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19437C1[];
extern void _ZN8S19437C1D1Ev();
extern void _ZN8S19437C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19437C1D1Ev,_ZTv0_n16_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C1D1Ev,_ZThn8_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19437C1D0Ev,_ZTv0_n16_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C1D0Ev,_ZThn8_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C1D1Ev,_ZTv0_n12_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19437C1D1Ev,_ZThn20_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C1D0Ev,_ZTv0_n12_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19437C1D0Ev,_ZThn20_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19437C1D1Ev,_ZTv0_n44_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19437C1D1Ev,_ZThn28_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19437C1D0Ev,_ZTv0_n44_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19437C1D0Ev,_ZThn28_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn40_n88_N8S19437C1D1Ev,_ZTvn32_n44_N8S19437C1D1Ev)();
extern void ABISELECT(_ZTvn40_n88_N8S19437C1D0Ev,_ZTvn32_n44_N8S19437C1D0Ev)();
extern void ABISELECT(_ZTvn56_n88_N8S19437C1D1Ev,_ZTvn40_n44_N8S19437C1D1Ev)();
extern void ABISELECT(_ZTvn56_n88_N8S19437C1D0Ev,_ZTvn40_n44_N8S19437C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19437C1D1Ev,_ZTv0_n32_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19437C1D1Ev,_ZThn80_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19437C1D0Ev,_ZTv0_n32_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19437C1D0Ev,_ZThn80_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C1D1Ev,_ZTv0_n24_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19437C1D1Ev,_ZThn120_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C1D0Ev,_ZTv0_n24_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19437C1D0Ev,_ZThn120_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C1D1Ev,_ZTv0_n12_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19437C1D1Ev,_ZThn132_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C1D0Ev,_ZTv0_n12_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19437C1D0Ev,_ZThn132_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19437C1D1Ev,_ZTvn24_n12_N8S19437C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C1D0Ev,_ZTvn24_n12_N8S19437C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19437C1D1Ev,_ZTv0_n16_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S19437C1D1Ev,_ZThn168_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19437C1D0Ev,_ZTv0_n16_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S19437C1D0Ev,_ZThn168_N8S19437C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19437C1D1Ev,_ZTv0_n28_N8S19437C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S19437C1D1Ev,_ZThn180_N8S19437C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19437C1D0Ev,_ZTv0_n28_N8S19437C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S19437C1D0Ev,_ZThn180_N8S19437C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19437C1[] = {
  ABISELECT(280,180),
  ABISELECT(264,168),
  ABISELECT(216,132),
  ABISELECT(192,120),
  ABISELECT(184,116),
  0,
  ABISELECT(128,80),
  ABISELECT(48,28),
  0,
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&_ZN8S19437C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C1D1Ev,_ZTv0_n16_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C1D0Ev,_ZTv0_n16_N8S19437C1D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C1D1Ev,_ZTv0_n12_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C1D0Ev,_ZTv0_n12_N8S19437C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(216,140),
  ABISELECT(168,104),
  ABISELECT(80,52),
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19437C1D1Ev,_ZTv0_n44_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19437C1D0Ev,_ZTv0_n44_N8S19437C1D0Ev),
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,108),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n88_N8S19437C1D1Ev,_ZTvn32_n44_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n88_N8S19437C1D0Ev,_ZTvn32_n44_N8S19437C1D0Ev),
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n88_N8S19437C1D1Ev,_ZTvn40_n44_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n88_N8S19437C1D0Ev,_ZTvn40_n44_N8S19437C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C1D1Ev,_ZTv0_n32_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C1D0Ev,_ZTv0_n32_N8S19437C1D0Ev),
  ABISELECT(-192,-120),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C1D1Ev,_ZTv0_n24_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C1D0Ev,_ZTv0_n24_N8S19437C1D0Ev),
  ABISELECT(-216,-132),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C1D1Ev,_ZTv0_n12_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C1D0Ev,_ZTv0_n12_N8S19437C1D0Ev),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C1D1Ev,_ZTvn24_n12_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C1D0Ev,_ZTvn24_n12_N8S19437C1D0Ev),
  ABISELECT(-264,-168),
  ABISELECT(-232,-148),
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C1D1Ev,_ZTv0_n16_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C1D0Ev,_ZTv0_n16_N8S19437C1D0Ev),
  ABISELECT(-280,-180),
  ABISELECT(-96,-64),
  ABISELECT(-248,-160),
  ABISELECT(-88,-60),
  ABISELECT(-280,-180),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI8S19437C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19437C1D1Ev,_ZTv0_n28_N8S19437C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19437C1D0Ev,_ZTv0_n28_N8S19437C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19437C1[];
extern void _ZN8S19437C2D1Ev();
extern void _ZN8S19437C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C2__8S19437C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C2[0]),
  (VTBL_ENTRY)&_ZN8S19437C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C2D0Ev,
};
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C38S19437C2__8S19437C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C38S19437C2__8S19437C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19437C2D1Ev,_ZThn12_N8S19437C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S19437C2D0Ev,_ZThn12_N8S19437C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C2__8S19437C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19437C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev),
};
extern void _ZN8S19437C6D1Ev();
extern void _ZN8S19437C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C6__8S19437C1[] = {
  ABISELECT(216,140),
  ABISELECT(168,104),
  ABISELECT(80,52),
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&_ZN8S19437C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C6D0Ev,
};
extern void _ZN9S19437C14D1Ev();
extern void _ZN9S19437C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&_ZN9S19437C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C14D0Ev,
};
extern void _ZN9S19437C15D1Ev();
extern void _ZN9S19437C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C159S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&_ZN9S19437C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S19437C15D1Ev,_ZThn92_N9S19437C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S19437C15D0Ev,_ZThn92_N9S19437C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C159S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__A1__9S19437C159S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19437C14D1Ev,_ZThn92_N9S19437C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19437C14D0Ev,_ZThn92_N9S19437C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C148S19437C6__8S19437C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19437C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D1Ev,_ZTv0_n12_N9S19437C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C14D0Ev,_ZTv0_n12_N9S19437C14D0Ev),
};
extern void _ZN9S19437C16D1Ev();
extern void _ZN9S19437C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C168S19437C6__8S19437C1[] = {
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&_ZN9S19437C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev)();
extern void ABISELECT(_ZThn176_N9S19437C16D1Ev,_ZThn108_N9S19437C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev)();
extern void ABISELECT(_ZThn176_N9S19437C16D0Ev,_ZThn108_N9S19437C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C3__9S19437C168S19437C6__8S19437C1[] = {
  ABISELECT(-176,-108),
  ABISELECT(-232,-148),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C168S19437C6__8S19437C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S19437C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D1Ev,_ZTv0_n12_N9S19437C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C16D0Ev,_ZTv0_n12_N9S19437C16D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C108S19437C6__A1__8S19437C1[] = {
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C108S19437C6__A1__8S19437C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19437C6D1Ev,_ZThn52_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19437C6D0Ev,_ZThn52_N8S19437C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C7__8S19437C6__8S19437C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C6__8S19437C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S19437C6D1Ev,_ZThn92_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S19437C6D0Ev,_ZThn92_N8S19437C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C6__8S19437C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn168_N8S19437C6D1Ev,_ZThn104_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn168_N8S19437C6D0Ev,_ZThn104_N8S19437C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C12__8S19437C6__8S19437C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19437C6D1Ev,_ZTvn24_n12_N8S19437C6D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C6D0Ev,_ZTvn24_n12_N8S19437C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C49S19437C12__A2__8S19437C6__8S19437C1[] = {
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C6D1Ev,_ZTvn24_n12_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C6D0Ev,_ZTvn24_n12_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZThn40_N8S19437C6D1Ev,_ZThn32_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S19437C6D0Ev,_ZThn32_N8S19437C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19437C16__8S19437C6__8S19437C1[] = {
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,108),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19437C6D1Ev,_ZThn32_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19437C6D0Ev,_ZThn32_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn216_N8S19437C6D1Ev,_ZThn140_N8S19437C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev)();
extern void ABISELECT(_ZThn216_N8S19437C6D0Ev,_ZThn140_N8S19437C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19437C3__A1__8S19437C6__8S19437C1[] = {
  ABISELECT(-216,-140),
  ABISELECT(-232,-148),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19437C6D1Ev,_ZThn40_N8S19437C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19437C6D0Ev,_ZThn40_N8S19437C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19437C10__A__8S19437C6__8S19437C1[] = {
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19437C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19437C6D1Ev,_ZThn40_N8S19437C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19437C6D0Ev,_ZThn40_N8S19437C6D0Ev),
};
extern void _ZN8S19437C7D1Ev();
extern void _ZN8S19437C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C7__8S19437C1[] = {
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&_ZN8S19437C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C7D0Ev,
};
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C38S19437C7__A1__8S19437C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C38S19437C7__A1__8S19437C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C7__8S19437C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S19437C7D1Ev,_ZThn40_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S19437C7D0Ev,_ZThn40_N8S19437C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C7__8S19437C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19437C7D1Ev,_ZThn52_N8S19437C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19437C7D0Ev,_ZThn52_N8S19437C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19437C12__8S19437C7__8S19437C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C49S19437C12__A2__8S19437C7__8S19437C1[] = {
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S19437C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D1Ev,_ZTvn24_n12_N8S19437C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19437C7D0Ev,_ZTvn24_n12_N8S19437C7D0Ev),
};
extern void _ZN9S19437C10D1Ev();
extern void _ZN9S19437C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C10__8S19437C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&_ZN9S19437C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__9S19437C10__8S19437C1[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S19437C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D1Ev,_ZTv0_n12_N9S19437C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C10D0Ev,_ZTv0_n12_N9S19437C10D0Ev),
};
extern void _ZN8S19437C3D1Ev();
extern void _ZN8S19437C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19437C3__A2__8S19437C1[] = {
  ABISELECT(-232,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&_ZN8S19437C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19437C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__8S19437C3__A2__8S19437C1[] = {
  ABISELECT(232,148),
  ABISELECT(232,148),
  (VTBL_ENTRY)&(_ZTI8S19437C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev),
};
extern void _ZN9S19437C15D1Ev();
extern void _ZN9S19437C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19437C15__A1__8S19437C1[] = {
  ABISELECT(-96,-64),
  ABISELECT(-248,-160),
  ABISELECT(-88,-60),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&_ZN9S19437C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19437C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19437C10__9S19437C15__A1__8S19437C1[] = {
  ABISELECT(88,60),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19437C4__A1__9S19437C15__A1__8S19437C1[] = {
  ABISELECT(248,160),
  ABISELECT(248,160),
  (VTBL_ENTRY)&(_ZTI9S19437C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D1Ev,_ZTv0_n12_N9S19437C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19437C15D0Ev,_ZTv0_n12_N9S19437C15D0Ev),
};
static  VTT_ENTRY vtt_S19437C1[] = {
  {&(_ZTV8S19437C1[13]),  13,95},
  {&(_ZTV8S19437C1[19]),  19,95},
  {&(_ZTV8S19437C1[24]),  24,95},
  {&(_ZTV8S19437C1[37]),  37,95},
  {&(_ZTV8S19437C1[61]),  61,95},
  {&(_ZTV8S19437C1[69]),  69,95},
  {&(_ZTV8S19437C1[74]),  74,95},
  {&(_ZTV8S19437C1[78]),  78,95},
  {&(_ZTV8S19437C1[44]),  44,95},
  {&(_ZTV8S19437C1[84]),  84,95},
  {&(_ZTV8S19437C1[51]),  51,95},
  {&(_ZTV8S19437C1[93]),  93,95},
  {&(_tg__ZTV8S19437C2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C38S19437C2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C38S19437C2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C6__8S19437C1[10]),  10,12},
  {&(_tg__ZTV9S19437C148S19437C6__8S19437C1[7]),  7,9},
  {&(_tg__ZTV9S19437C159S19437C148S19437C6__8S19437C1[6]),  6,8},
  {&(_tg__ZTV9S19437C10__9S19437C159S19437C148S19437C6__8S19437C1[6]),  6,8},
  {&(_tg__ZTV8S19437C4__A1__9S19437C159S19437C148S19437C6__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C10__9S19437C148S19437C6__8S19437C1[6]),  6,8},
  {&(_tg__ZTV8S19437C4__9S19437C148S19437C6__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C168S19437C6__8S19437C1[5]),  5,7},
  {&(_tg__ZTV8S19437C3__9S19437C168S19437C6__8S19437C1[4]),  4,6},
  {&(_tg__ZTV8S19437C4__9S19437C168S19437C6__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C108S19437C6__A1__8S19437C1[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C108S19437C6__A1__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C7__8S19437C6__8S19437C1[8]),  8,10},
  {&(_tg__ZTV8S19437C4__8S19437C6__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C10__8S19437C6__8S19437C1[6]),  6,8},
  {&(_tg__ZTV9S19437C12__8S19437C6__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C49S19437C12__A2__8S19437C6__8S19437C1[2]),  2,4},
  {&(_tg__ZTV9S19437C16__8S19437C6__8S19437C1[5]),  5,7},
  {&(_tg__ZTV8S19437C3__A1__8S19437C6__8S19437C1[4]),  4,6},
  {&(_tg__ZTV9S19437C10__A__8S19437C6__8S19437C1[5]),  5,7},
  {&(_tg__ZTV8S19437C7__8S19437C1[7]),  7,9},
  {&(_tg__ZTV8S19437C38S19437C7__A1__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C38S19437C7__A1__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C7__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C10__8S19437C7__8S19437C1[6]),  6,8},
  {&(_tg__ZTV9S19437C12__8S19437C7__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C49S19437C12__A2__8S19437C7__8S19437C1[2]),  2,4},
  {&(_tg__ZTV9S19437C10__8S19437C1[5]),  5,7},
  {&(_tg__ZTV8S19437C4__9S19437C10__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C3__A2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV8S19437C4__8S19437C3__A2__8S19437C1[3]),  3,5},
  {&(_tg__ZTV9S19437C15__A1__8S19437C1[6]),  6,8},
  {&(_tg__ZTV9S19437C10__9S19437C15__A1__8S19437C1[6]),  6,8},
  {&(_tg__ZTV8S19437C4__A1__9S19437C15__A1__8S19437C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19437C1[];
extern  VTBL_ENTRY _ZTV8S19437C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19437C1[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D0Ev,_ZTv0_n12_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19437C7D0Ev,_ZThn52_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C7D1Ev,_ZTv0_n12_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19437C7D1Ev,_ZThn52_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D0Ev,_ZTv0_n24_N8S19437C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19437C7D0Ev,_ZThn40_N8S19437C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C7D1Ev,_ZTv0_n24_N8S19437C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19437C7D1Ev,_ZThn40_N8S19437C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C6D0Ev,_ZTv0_n16_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19437C6D0Ev,_ZThn140_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C6D1Ev,_ZTv0_n16_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19437C6D1Ev,_ZThn140_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C6D0Ev,_ZTv0_n12_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19437C6D0Ev,_ZThn104_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C6D1Ev,_ZTv0_n12_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19437C6D1Ev,_ZThn104_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C6D0Ev,_ZTv0_n24_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19437C6D0Ev,_ZThn92_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C6D1Ev,_ZTv0_n24_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19437C6D1Ev,_ZThn92_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C6D0Ev,_ZTv0_n32_N8S19437C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19437C6D0Ev,_ZThn52_N8S19437C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C6D1Ev,_ZTv0_n32_N8S19437C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19437C6D1Ev,_ZThn52_N8S19437C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D0Ev,_ZTv0_n16_N9S19437C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19437C16D0Ev,_ZThn108_N9S19437C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19437C16D1Ev,_ZTv0_n16_N9S19437C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19437C16D1Ev,_ZThn108_N9S19437C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D0Ev,_ZTv0_n24_N9S19437C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19437C14D0Ev,_ZThn92_N9S19437C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C14D1Ev,_ZTv0_n24_N9S19437C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19437C14D1Ev,_ZThn92_N9S19437C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D0Ev,_ZTv0_n24_N9S19437C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19437C15D0Ev,_ZThn92_N9S19437C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19437C15D1Ev,_ZTv0_n24_N9S19437C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19437C15D1Ev,_ZThn92_N9S19437C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C2D0Ev,_ZTv0_n12_N8S19437C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C2D0Ev,_ZThn12_N8S19437C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C2D1Ev,_ZTv0_n12_N8S19437C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C2D1Ev,_ZThn12_N8S19437C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D0Ev,_ZTv0_n12_N8S19437C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D0Ev,_ZThn12_N8S19437C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C3D1Ev,_ZTv0_n12_N8S19437C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C3D1Ev,_ZThn12_N8S19437C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19437C1D0Ev,_ZTv0_n28_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19437C1D0Ev,_ZThn180_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19437C1D1Ev,_ZTv0_n28_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19437C1D1Ev,_ZThn180_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C1D0Ev,_ZTv0_n24_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19437C1D0Ev,_ZThn120_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19437C1D1Ev,_ZTv0_n24_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19437C1D1Ev,_ZThn120_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C1D0Ev,_ZTv0_n32_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19437C1D0Ev,_ZThn80_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19437C1D1Ev,_ZTv0_n32_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19437C1D1Ev,_ZThn80_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19437C1D0Ev,_ZTv0_n44_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19437C1D0Ev,_ZThn28_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19437C1D1Ev,_ZTv0_n44_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19437C1D1Ev,_ZThn28_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C1D0Ev,_ZTv0_n12_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19437C1D0Ev,_ZThn132_N8S19437C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19437C1D0Ev,_ZThn20_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19437C1D1Ev,_ZTv0_n12_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19437C1D1Ev,_ZThn132_N8S19437C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19437C1D1Ev,_ZThn20_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C1D0Ev,_ZTv0_n16_N8S19437C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19437C1D0Ev,_ZThn168_N8S19437C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C1D0Ev,_ZThn8_N8S19437C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19437C1D1Ev,_ZTv0_n16_N8S19437C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19437C1D1Ev,_ZThn168_N8S19437C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19437C1D1Ev,_ZThn8_N8S19437C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19437C1 = {  "S19437C1", // class name
  bases_S19437C1, 32,
  &(vtc_S19437C1[0]), // expected_vtbl_contents
  &(vtt_S19437C1[0]), // expected_vtt_contents
  ABISELECT(296,188), // object size
  NSPAIRA(_ZTI8S19437C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19437C1),95, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19437C1),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C4  : S2014C38 {
  ::S2014C38 s19436c4f0;
  virtual  ~S19436C4(); // _ZN8S19436C4D1Ev
  S19436C4(); // tgen
};
//SIG(-1 S19436C4) C1{ BC2{ m} vd FC2}


 S19436C4 ::~S19436C4(){ note_dtor("S19436C4", this);}
S19436C4 ::S19436C4(){ note_ctor("S19436C4", this);} // tgen

static void Test_S19436C4()
{
  extern Class_Descriptor cd_S19436C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19436C4, buf);
    S19436C4 *dp, &lv = *(dp=new (buf) S19436C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19436C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C4)");
    check_base_class_offset(lv, (S2014C38*), 0, "S19436C4");
    check_field_offset(lv, s19436c4f0, ABISELECT(8,4), "S19436C4.s19436c4f0");
    test_class_info(&lv, &cd_S19436C4);
    dp->~S19436C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C4(Test_S19436C4, "S19436C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19436C4C1Ev();
extern void _ZN8S19436C4D1Ev();
Name_Map name_map_S19436C4[] = {
  NSPAIR(_ZN8S19436C4C1Ev),
  NSPAIR(_ZN8S19436C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19436C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19436C4[];
extern void _ZN8S19436C4D1Ev();
extern void _ZN8S19436C4D0Ev();
static  VTBL_ENTRY vtc_S19436C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C4[0]),
  (VTBL_ENTRY)&_ZN8S19436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C4D0Ev,
};
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
Class_Descriptor cd_S19436C4 = {  "S19436C4", // class name
  bases_S19436C4, 1,
  &(vtc_S19436C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19436C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19436C4),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  S19436C3  : virtual S19436C4 {
  __tsi64 s19436c3f0;
  ~S19436C3(); // tgen
  S19436C3(); // tgen
};
//SIG(-1 S19436C3) C1{ VBC2{ BC3{ m} vd FC3} FL}


S19436C3 ::~S19436C3(){ note_dtor("S19436C3", this);} // tgen
S19436C3 ::S19436C3(){ note_ctor("S19436C3", this);} // tgen

static void Test_S19436C3()
{
  extern Class_Descriptor cd_S19436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19436C3, buf);
    S19436C3 *dp, &lv = *(dp=new (buf) S19436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C3)");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(16,12), "S19436C3");
    check_base_class_offset(lv, (S19436C4*), ABISELECT(16,12), "S19436C3");
    check_field_offset(lv, s19436c3f0, ABISELECT(8,4), "S19436C3.s19436c3f0");
    test_class_info(&lv, &cd_S19436C3);
    dp->~S19436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C3(Test_S19436C3, "S19436C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19436C3C1Ev();
extern void _ZN8S19436C3D1Ev();
Name_Map name_map_S19436C3[] = {
  NSPAIR(_ZN8S19436C3C1Ev),
  NSPAIR(_ZN8S19436C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
static Base_Class bases_S19436C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19436C4,    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 _ZTI8S19436C3[];
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19436C3[];
static  VTT_ENTRY vtt_S19436C3[] = {
  {&(_ZTV8S19436C3[3]),  3,10},
  {&(_ZTV8S19436C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C3 = {  "S19436C3", // class name
  bases_S19436C3, 2,
  &(vtc_S19436C3[0]), // expected_vtbl_contents
  &(vtt_S19436C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19436C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19436C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19436C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C2  : S19436C3 {
  virtual  ~S19436C2(); // _ZN8S19436C2D2Ev
  S19436C2(); // tgen
};
//SIG(-1 S19436C2) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} vd}


 S19436C2 ::~S19436C2(){ note_dtor("S19436C2", this);}
S19436C2 ::S19436C2(){ note_ctor("S19436C2", this);} // tgen

static void Test_S19436C2()
{
  extern Class_Descriptor cd_S19436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19436C2, buf);
    S19436C2 *dp, &lv = *(dp=new (buf) S19436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C2)");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(16,12), "S19436C2");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*), ABISELECT(16,12), "S19436C2");
    check_base_class_offset(lv, (S19436C3*), 0, "S19436C2");
    test_class_info(&lv, &cd_S19436C2);
    dp->~S19436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C2(Test_S19436C2, "S19436C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19436C2C1Ev();
extern void _ZN8S19436C2D2Ev();
Name_Map name_map_S19436C2[] = {
  NSPAIR(_ZN8S19436C2C1Ev),
  NSPAIR(_ZN8S19436C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
static Base_Class bases_S19436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
  0, 0},
  {&cd_S19436C4,    ABISELECT(16,12), //bcp->offset
    5, //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_S19436C3,    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 _ZTI8S19436C2[];
extern void _ZN8S19436C2D1Ev();
extern void _ZN8S19436C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C2D1Ev,_ZThn12_N8S19436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C2D0Ev,_ZThn12_N8S19436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C2[0]),
  (VTBL_ENTRY)&_ZN8S19436C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C2D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19436C2[];
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C3__8S19436C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C3__8S19436C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
static  VTT_ENTRY vtt_S19436C2[] = {
  {&(_ZTV8S19436C2[3]),  3,10},
  {&(_tg__ZTV8S19436C3__8S19436C2[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C3__8S19436C2[3]),  3,5},
  {&(_ZTV8S19436C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19436C2[];
extern  VTBL_ENTRY _ZTV8S19436C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C2[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C2D0Ev,_ZThn12_N8S19436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C2D1Ev,_ZThn12_N8S19436C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C2 = {  "S19436C2", // class name
  bases_S19436C2, 3,
  &(vtc_S19436C2[0]), // expected_vtbl_contents
  &(vtt_S19436C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19436C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19436C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C10  : virtual S2014C28 , virtual S19436C4 , virtual S3222C8_nt {
  void *s19436c10f0;
  ::S19762C18_nt s19436c10f1;
  virtual  ~S19436C10(); // _ZN9S19436C10D2Ev
  S19436C10(); // tgen
};
//SIG(-1 S19436C10) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S19436C10 ::~S19436C10(){ note_dtor("S19436C10", this);}
S19436C10 ::S19436C10(){ note_ctor("S19436C10", this);} // tgen

static void Test_S19436C10()
{
  extern Class_Descriptor cd_S19436C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19436C10, buf);
    S19436C10 *dp, &lv = *(dp=new (buf) S19436C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19436C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C10)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19436C10");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(24,12), "S19436C10");
    check_base_class_offset(lv, (S19436C4*), ABISELECT(24,12), "S19436C10");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S19436C10");
    check_field_offset(lv, s19436c10f0, ABISELECT(8,4), "S19436C10.s19436c10f0");
    check_field_offset(lv, s19436c10f1, ABISELECT(16,8), "S19436C10.s19436c10f1");
    test_class_info(&lv, &cd_S19436C10);
    dp->~S19436C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C10(Test_S19436C10, "S19436C10", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19436C10C1Ev();
extern void _ZN9S19436C10D2Ev();
Name_Map name_map_S19436C10[] = {
  NSPAIR(_ZN9S19436C10C1Ev),
  NSPAIR(_ZN9S19436C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19436C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19436C10[];
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C10[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19436C10[];
static  VTT_ENTRY vtt_S19436C10[] = {
  {&(_ZTV9S19436C10[5]),  5,12},
  {&(_ZTV9S19436C10[10]),  10,12},
};
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C10 = {  "S19436C10", // class name
  bases_S19436C10, 4,
  &(vtc_S19436C10[0]), // expected_vtbl_contents
  &(vtt_S19436C10[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19436C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19436C10),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19436C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C13  : S2014C28 , S19436C4 , S2014C38 , S3222C8_nt {
  short s19436c13f0:16;
  long s19436c13f1;
  ~S19436C13(); // tgen
  S19436C13(); // tgen
};
//SIG(-1 S19436C13) C1{ BC2{ m} BC3{ BC4{ m} vd FC4} BC4 BC5{ m Fi} Fs:16 Fl}


S19436C13 ::~S19436C13(){ note_dtor("S19436C13", this);} // tgen
S19436C13 ::S19436C13(){ note_ctor("S19436C13", this);} // tgen

static void Test_S19436C13()
{
  extern Class_Descriptor cd_S19436C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19436C13, buf);
    S19436C13 *dp, &lv = *(dp=new (buf) S19436C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19436C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C13)");
    check_base_class_offset(lv, (S2014C28*), 0, "S19436C13");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*), 0, "S19436C13");
    check_base_class_offset(lv, (S19436C4*), 0, "S19436C13");
    /*is_ambiguous_... S19436C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19436C13");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(12,8), "S19436C13");
    set_bf_and_test(lv, s19436c13f0, ABISELECT(16,12), 0, 16, 1, "S19436C13");
    set_bf_and_test(lv, s19436c13f0, ABISELECT(16,12), 0, 16, hide_sll(1LL<<15), "S19436C13");
    check_field_offset(lv, s19436c13f1, ABISELECT(24,16), "S19436C13.s19436c13f1");
    test_class_info(&lv, &cd_S19436C13);
    dp->~S19436C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C13(Test_S19436C13, "S19436C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19436C13C1Ev();
extern void _ZN9S19436C13D1Ev();
Name_Map name_map_S19436C13[] = {
  NSPAIR(_ZN9S19436C13C1Ev),
  NSPAIR(_ZN9S19436C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19436C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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_S3222C8_nt,    ABISELECT(12,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 _ZTI9S19436C13[];
extern void _ZN9S19436C13D1Ev();
extern void _ZN9S19436C13D0Ev();
static  VTBL_ENTRY vtc_S19436C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C13[0]),
  (VTBL_ENTRY)&_ZN9S19436C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C13D0Ev,
};
extern VTBL_ENTRY _ZTI9S19436C13[];
extern  VTBL_ENTRY _ZTV9S19436C13[];
Class_Descriptor cd_S19436C13 = {  "S19436C13", // class name
  bases_S19436C13, 5,
  &(vtc_S19436C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19436C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19436C13),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  S19436C12  : S19436C13 , S19436C4 {
  int s19436c12f0;
  ~S19436C12(); // tgen
  S19436C12(); // tgen
};
//SIG(-1 S19436C12) C1{ BC2{ BC3{ m} BC4{ BC5{ m} vd FC5} BC5 BC6{ m Fi} Fs:16 Fl} BC4 Fi}


S19436C12 ::~S19436C12(){ note_dtor("S19436C12", this);} // tgen
S19436C12 ::S19436C12(){ note_ctor("S19436C12", this);} // tgen

static void Test_S19436C12()
{
  extern Class_Descriptor cd_S19436C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19436C12, buf);
    S19436C12 *dp, &lv = *(dp=new (buf) S19436C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19436C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C12)");
    check_base_class_offset(lv, (S2014C28*)(S19436C13*), 0, "S19436C12");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C13*), 0, "S19436C12");
    check_base_class_offset(lv, (S19436C4*)(S19436C13*), 0, "S19436C12");
    /*is_ambiguous_... S19436C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C13*), ABISELECT(9,5), "S19436C12");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C13*), ABISELECT(12,8), "S19436C12");
    check_base_class_offset(lv, (S19436C13*), 0, "S19436C12");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(32,20), "S19436C12");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*), ABISELECT(32,20), "S19436C12");
    check_field_offset(lv, s19436c12f0, ABISELECT(44,28), "S19436C12.s19436c12f0");
    test_class_info(&lv, &cd_S19436C12);
    dp->~S19436C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C12(Test_S19436C12, "S19436C12", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19436C12C1Ev();
extern void _ZN9S19436C12D1Ev();
Name_Map name_map_S19436C12[] = {
  NSPAIR(_ZN9S19436C12C1Ev),
  NSPAIR(_ZN9S19436C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C13;
extern VTBL_ENTRY _ZTI9S19436C13[];
extern  VTBL_ENTRY _ZTV9S19436C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
static Base_Class bases_S19436C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(12,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
    5, //immediately_derived
  0, 0},
  {&cd_S19436C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C38,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(32,20), //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 _ZTI9S19436C12[];
extern void _ZN9S19436C12D1Ev();
extern void _ZN9S19436C12D0Ev();
extern void ABISELECT(_ZThn32_N9S19436C12D1Ev,_ZThn20_N9S19436C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19436C12D0Ev,_ZThn20_N9S19436C12D0Ev)();
static  VTBL_ENTRY vtc_S19436C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C12[0]),
  (VTBL_ENTRY)&_ZN9S19436C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C12D0Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19436C12D1Ev,_ZThn20_N9S19436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19436C12D0Ev,_ZThn20_N9S19436C12D0Ev),
};
extern VTBL_ENTRY _ZTI9S19436C12[];
extern  VTBL_ENTRY _ZTV9S19436C12[];
Class_Descriptor cd_S19436C12 = {  "S19436C12", // class name
  bases_S19436C12, 8,
  &(vtc_S19436C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19436C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19436C12),8, //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  S19436C7  : S19436C3 , virtual S2014C28 , virtual S3222C8_nt , virtual S19436C10 , virtual S19436C12 {
  long s19436c7f0;
  ::S19436C3 s19436c7f1;
  virtual  ~S19436C7(); // _ZN8S19436C7D2Ev
  S19436C7(); // tgen
};
//SIG(-1 S19436C7) C1{ BC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m} VBC6{ m Fi} VBC7{ VBC5 VBC3 VBC6 vd Fp FC8{}} VBC9{ BC10{ BC5 BC3 BC4 BC6 Fs:16 Fl} BC3 Fi} vd Fl FC2}


 S19436C7 ::~S19436C7(){ note_dtor("S19436C7", this);}
S19436C7 ::S19436C7(){ note_ctor("S19436C7", this);} // tgen

static void Test_S19436C7()
{
  extern Class_Descriptor cd_S19436C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S19436C7, buf);
    S19436C7 *dp, &lv = *(dp=new (buf) S19436C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S19436C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C7)");
    /*is_ambiguous_... S19436C7::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(56,36), "S19436C7");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*), ABISELECT(56,36), "S19436C7");
    check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(56,36), "S19436C7");
    check_base_class_offset(lv, (S19436C3*), 0, "S19436C7");
    /*is_ambiguous_... S19436C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*), 0, "S19436C7");
    check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C7");
    /*is_ambiguous_... S19436C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(68,44), "S19436C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(68,44), "S19436C7");
    check_base_class_offset(lv, (S19436C10*), ABISELECT(72,48), "S19436C7");
    check_base_class_offset(lv, (S2014C28*)(S19436C13*)(S19436C12*), ABISELECT(96,60), "S19436C7");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(96,60), "S19436C7");
    check_base_class_offset(lv, (S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(96,60), "S19436C7");
    /*is_ambiguous_... S19436C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C13*)(S19436C12*), ABISELECT(105,65), "S19436C7");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C13*)(S19436C12*), ABISELECT(108,68), "S19436C7");
    check_base_class_offset(lv, (S19436C13*)(S19436C12*), ABISELECT(96,60), "S19436C7");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C12*), ABISELECT(128,80), "S19436C7");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C12*), ABISELECT(128,80), "S19436C7");
    check_base_class_offset(lv, (S19436C12*), ABISELECT(96,60), "S19436C7");
    check_field_offset(lv, s19436c7f0, ABISELECT(16,12), "S19436C7.s19436c7f0");
    check_field_offset(lv, s19436c7f1, ABISELECT(24,16), "S19436C7.s19436c7f1");
    test_class_info(&lv, &cd_S19436C7);
    dp->~S19436C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C7(Test_S19436C7, "S19436C7", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN8S19436C7C1Ev();
extern void _ZN8S19436C7D2Ev();
Name_Map name_map_S19436C7[] = {
  NSPAIR(_ZN8S19436C7C1Ev),
  NSPAIR(_ZN8S19436C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C13;
extern VTBL_ENTRY _ZTI9S19436C13[];
extern  VTBL_ENTRY _ZTV9S19436C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C12;
extern VTBL_ENTRY _ZTI9S19436C12[];
extern  VTBL_ENTRY _ZTV9S19436C12[];
static Base_Class bases_S19436C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(56,36), //bcp->offset
    9, //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_S19436C3,    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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3222C8_nt,    ABISELECT(68,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_S19436C10,    ABISELECT(72,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //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_S2014C28,    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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19436C4,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(105,65), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(108,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
    11, //immediately_derived
  0, 0},
  {&cd_S19436C13,    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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(128,80), //bcp->offset
    27, //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19436C12,    ABISELECT(96,60), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19436C7[];
extern void _ZN8S19436C7D1Ev();
extern void _ZN8S19436C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C7D1Ev,_ZThn36_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19436C7D0Ev,_ZThn36_N8S19436C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn72_N8S19436C7D1Ev,_ZThn48_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn72_N8S19436C7D0Ev,_ZThn48_N8S19436C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S19436C7D1Ev,_ZThn60_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S19436C7D0Ev,_ZThn60_N8S19436C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev)();
static  VTBL_ENTRY vtc_S19436C7[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&_ZN8S19436C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C7D0Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19436C7[];
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C3__8S19436C7[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C3D1Ev,_ZThn36_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19436C3D0Ev,_ZThn36_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C3__8S19436C7[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C7[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__8S19436C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
static  VTT_ENTRY vtt_S19436C7[] = {
  {&(_ZTV8S19436C7[7]),  7,31},
  {&(_tg__ZTV8S19436C3__8S19436C7[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C3__8S19436C7[3]),  3,5},
  {&(_ZTV8S19436C7[12]),  12,31},
  {&(_ZTV8S19436C7[20]),  20,31},
  {&(_ZTV8S19436C7[25]),  25,31},
  {&(_ZTV8S19436C7[29]),  29,31},
  {&(_tg__ZTV9S19436C10__8S19436C7[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__8S19436C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19436C7[];
extern  VTBL_ENTRY _ZTV8S19436C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C7[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C3D0Ev,_ZThn36_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C3D1Ev,_ZThn36_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19436C7D0Ev,_ZThn48_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19436C7D1Ev,_ZThn48_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19436C7D0Ev,_ZThn60_N8S19436C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C7D0Ev,_ZThn36_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19436C7D1Ev,_ZThn60_N8S19436C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C7D1Ev,_ZThn36_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C7 = {  "S19436C7", // class name
  bases_S19436C7, 15,
  &(vtc_S19436C7[0]), // expected_vtbl_contents
  &(vtt_S19436C7[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI8S19436C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19436C7),31, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19436C7),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C15  : S2014C38 , S19436C4 , virtual S2014C28 , virtual S19436C10 {
  virtual  ~S19436C15(); // _ZN9S19436C15D2Ev
  S19436C15(); // tgen
};
//SIG(-1 S19436C15) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S19436C15 ::~S19436C15(){ note_dtor("S19436C15", this);}
S19436C15 ::S19436C15(){ note_ctor("S19436C15", this);} // tgen

static void Test_S19436C15()
{
  extern Class_Descriptor cd_S19436C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19436C15, buf);
    S19436C15 *dp, &lv = *(dp=new (buf) S19436C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19436C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C15)");
    /*is_ambiguous_... S19436C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(9,5), "S19436C15");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), 0, "S19436C15");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*), 0, "S19436C15");
    check_base_class_offset(lv, (S2014C28*), 0, "S19436C15");
    check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C15");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(40,20), "S19436C15");
    check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(40,20), "S19436C15");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(52,28), "S19436C15");
    check_base_class_offset(lv, (S19436C10*), ABISELECT(16,8), "S19436C15");
    test_class_info(&lv, &cd_S19436C15);
    dp->~S19436C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C15(Test_S19436C15, "S19436C15", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19436C15C1Ev();
extern void _ZN9S19436C15D2Ev();
Name_Map name_map_S19436C15[] = {
  NSPAIR(_ZN9S19436C15C1Ev),
  NSPAIR(_ZN9S19436C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
static Base_Class bases_S19436C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    5, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S19436C10,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S19436C15[];
extern void _ZN9S19436C15D1Ev();
extern void _ZN9S19436C15D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S19436C15D1Ev,_ZThn8_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S19436C15D0Ev,_ZThn8_N9S19436C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19436C15D1Ev,_ZThn20_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19436C15D0Ev,_ZThn20_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C15[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&_ZN9S19436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19436C15[];
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C15[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__9S19436C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
static  VTT_ENTRY vtt_S19436C15[] = {
  {&(_ZTV9S19436C15[6]),  6,21},
  {&(_ZTV9S19436C15[14]),  14,21},
  {&(_ZTV9S19436C15[19]),  19,21},
  {&(_tg__ZTV9S19436C10__9S19436C15[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__9S19436C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19436C15[];
extern  VTBL_ENTRY _ZTV9S19436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C15[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C15D0Ev,_ZThn20_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C15D1Ev,_ZThn20_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19436C15D0Ev,_ZThn8_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19436C15D1Ev,_ZThn8_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C15 = {  "S19436C15", // class name
  bases_S19436C15, 8,
  &(vtc_S19436C15[0]), // expected_vtbl_contents
  &(vtt_S19436C15[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19436C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19436C15),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19436C15),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C14  : virtual S19436C10 , S19436C15 , virtual S2014C38 {
  ::S3222C8_nt s19436c14f0[6];
  virtual  ~S19436C14(); // _ZN9S19436C14D2Ev
  S19436C14(); // tgen
};
//SIG(-1 S19436C14) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m} vd FC5} VBC6{ m Fi} vd Fp FC7{}} BC8{ BC5 BC4 VBC3 VBC2 vd} VBC5 vd FC6[6]}


 S19436C14 ::~S19436C14(){ note_dtor("S19436C14", this);}
S19436C14 ::S19436C14(){ note_ctor("S19436C14", this);} // tgen

static void Test_S19436C14()
{
  extern Class_Descriptor cd_S19436C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19436C14, buf);
    S19436C14 *dp, &lv = *(dp=new (buf) S19436C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19436C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C14)");
    check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C14");
    check_base_class_offset(lv, (S2014C28*)(S19436C15*), 0, "S19436C14");
    /*is_ambiguous_... S19436C14::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(64,44), "S19436C14");
    check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(64,44), "S19436C14");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(76,52), "S19436C14");
    check_base_class_offset(lv, (S19436C10*), ABISELECT(40,32), "S19436C14");
    check_base_class_offset(lv, (S19436C10*)(S19436C15*), ABISELECT(40,32), "S19436C14");
    /*is_ambiguous_... S19436C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C15*), ABISELECT(9,5), "S19436C14");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C15*), 0, "S19436C14");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C15*), 0, "S19436C14");
    check_base_class_offset(lv, (S19436C15*), 0, "S19436C14");
    /*is_ambiguous_... S19436C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), ABISELECT(80,56), "S19436C14");
    check_field_offset(lv, s19436c14f0, ABISELECT(12,8), "S19436C14.s19436c14f0");
    test_class_info(&lv, &cd_S19436C14);
    dp->~S19436C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C14(Test_S19436C14, "S19436C14", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S19436C14C1Ev();
extern void _ZN9S19436C14D2Ev();
Name_Map name_map_S19436C14[] = {
  NSPAIR(_ZN9S19436C14C1Ev),
  NSPAIR(_ZN9S19436C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C15;
extern VTBL_ENTRY _ZTI9S19436C15[];
extern  VTBL_ENTRY _ZTV9S19436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19436C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(64,44), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(76,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
    4, //immediately_derived
  0, 1},
  {&cd_S19436C10,    ABISELECT(40,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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},
  {&cd_S2014C38,    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, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S19436C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S2014C38,    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, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19436C14[];
extern void _ZN9S19436C14D1Ev();
extern void _ZN9S19436C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev)();
extern void ABISELECT(_ZThn40_N9S19436C14D1Ev,_ZThn32_N9S19436C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev)();
extern void ABISELECT(_ZThn40_N9S19436C14D0Ev,_ZThn32_N9S19436C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19436C14D1Ev,_ZThn44_N9S19436C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19436C14D0Ev,_ZThn44_N9S19436C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C14[] = {
  ABISELECT(80,56),
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&_ZN9S19436C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C14D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19436C14[];
extern void _ZN9S19436C15D1Ev();
extern void _ZN9S19436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C15__9S19436C14[] = {
  ABISELECT(76,52),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&_ZN9S19436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19436C15D1Ev,_ZThn32_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19436C15D0Ev,_ZThn32_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C15__9S19436C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S19436C15D1Ev,_ZThn44_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S19436C15D0Ev,_ZThn44_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__A1__9S19436C15__9S19436C14[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C14[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__9S19436C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
static  VTT_ENTRY vtt_S19436C14[] = {
  {&(_ZTV9S19436C14[7]),  7,22},
  {&(_tg__ZTV9S19436C15__9S19436C14[6]),  6,8},
  {&(_tg__ZTV9S19436C10__9S19436C15__9S19436C14[6]),  6,8},
  {&(_tg__ZTV8S19436C4__A1__9S19436C15__9S19436C14[3]),  3,5},
  {&(_ZTV9S19436C14[15]),  15,22},
  {&(_ZTV9S19436C14[20]),  20,22},
  {&(_tg__ZTV9S19436C10__9S19436C14[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__9S19436C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19436C14[];
extern  VTBL_ENTRY _ZTV9S19436C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C14[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D0Ev,_ZThn12_N9S19436C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19436C10D1Ev,_ZThn12_N9S19436C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19436C15D0Ev,_ZThn44_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19436C15D1Ev,_ZThn44_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C15D0Ev,_ZThn32_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C15D1Ev,_ZThn32_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19436C14D0Ev,_ZThn44_N9S19436C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19436C14D1Ev,_ZThn44_N9S19436C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C14D0Ev,_ZThn32_N9S19436C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19436C14D1Ev,_ZThn32_N9S19436C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C14 = {  "S19436C14", // class name
  bases_S19436C14, 10,
  &(vtc_S19436C14[0]), // expected_vtbl_contents
  &(vtt_S19436C14[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S19436C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19436C14),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19436C14),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C16  : virtual S19436C3 , virtual S3222C8_nt {
  unsigned char s19436c16f0:1;
  ~S19436C16(); // tgen
  S19436C16(); // tgen
};
//SIG(-1 S19436C16) C1{ VBC2{ VBC3{ BC4{ m} vd FC4} FL} VBC5{ m Fi} Fc:1}


S19436C16 ::~S19436C16(){ note_dtor("S19436C16", this);} // tgen
S19436C16 ::S19436C16(){ note_ctor("S19436C16", this);} // tgen

static void Test_S19436C16()
{
  extern Class_Descriptor cd_S19436C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19436C16, buf);
    S19436C16 *dp, &lv = *(dp=new (buf) S19436C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19436C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C16)");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(32,20), "S19436C16");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*), ABISELECT(32,20), "S19436C16");
    check_base_class_offset(lv, (S19436C3*), ABISELECT(16,8), "S19436C16");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(44,28), "S19436C16");
    set_bf_and_test(lv, s19436c16f0, ABISELECT(8,4), 0, 1, 1, "S19436C16");
    test_class_info(&lv, &cd_S19436C16);
    dp->~S19436C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C16(Test_S19436C16, "S19436C16", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S19436C16C1Ev();
extern void _ZN9S19436C16D1Ev();
Name_Map name_map_S19436C16[] = {
  NSPAIR(_ZN9S19436C16C1Ev),
  NSPAIR(_ZN9S19436C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S19436C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(32,20), //bcp->offset
    13, //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_S19436C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S3222C8_nt,    ABISELECT(44,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19436C16[];
extern void _ZN9S19436C16D1Ev();
extern void _ZN9S19436C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S19436C16D1Ev,_ZThn8_N9S19436C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S19436C16D0Ev,_ZThn8_N9S19436C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S19436C16D1Ev,_ZThn20_N9S19436C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S19436C16D0Ev,_ZThn20_N9S19436C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C16[] = {
  ABISELECT(44,28),
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&_ZN9S19436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C16D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19436C16[];
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C3__9S19436C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C3__9S19436C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
static  VTT_ENTRY vtt_S19436C16[] = {
  {&(_ZTV9S19436C16[5]),  5,18},
  {&(_ZTV9S19436C16[11]),  11,18},
  {&(_ZTV9S19436C16[16]),  16,18},
  {&(_tg__ZTV8S19436C3__9S19436C16[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C3__9S19436C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19436C16[];
extern  VTBL_ENTRY _ZTV9S19436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C16[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19436C16D0Ev,_ZThn20_N9S19436C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19436C16D1Ev,_ZThn20_N9S19436C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19436C16D0Ev,_ZThn8_N9S19436C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19436C16D1Ev,_ZThn8_N9S19436C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C16 = {  "S19436C16", // class name
  bases_S19436C16, 4,
  &(vtc_S19436C16[0]), // expected_vtbl_contents
  &(vtt_S19436C16[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S19436C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19436C16),18, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19436C16),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C6  : virtual S19436C7 , S19436C14 , S19436C16 , S19436C10 {
  ~S19436C6(); // tgen
  S19436C6(); // tgen
};
//SIG(-1 S19436C6) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} VBC6{ m} VBC7{ m Fi} VBC8{ VBC6 VBC4 VBC7 vd Fp FC9{}} VBC10{ BC11{ BC6 BC4 BC5 BC7 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC12{ VBC8 BC13{ BC5 BC4 VBC6 VBC8 vd} VBC5 vd FC7[6]} BC14{ VBC3 VBC7 Fc:1} BC8}


S19436C6 ::~S19436C6(){ note_dtor("S19436C6", this);} // tgen
S19436C6 ::S19436C6(){ note_ctor("S19436C6", this);} // tgen

static void Test_S19436C6()
{
  extern Class_Descriptor cd_S19436C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,40)];
    init_test(&cd_S19436C6, buf);
    S19436C6 *dp, &lv = *(dp=new (buf) S19436C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S19436C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C6)");
    /*is_ambiguous_... S19436C6::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(136,88), "S19436C6");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*)(S19436C7*), ABISELECT(136,88), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(136,88), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C3 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C3*), ABISELECT(136,88), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(136,88), "S19436C6");
    check_base_class_offset(lv, (S19436C3*)(S19436C7*), ABISELECT(80,52), "S19436C6");
    /*is_ambiguous_... S19436C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C7*), 0, "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C6");
    check_base_class_offset(lv, (S2014C28*)(S19436C15*)(S19436C14*), 0, "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C6");
    /*is_ambiguous_... S19436C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C7*), ABISELECT(148,96), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(148,96), "S19436C6");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C16*), ABISELECT(148,96), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(148,96), "S19436C6");
    check_base_class_offset(lv, (S19436C10*)(S19436C7*), ABISELECT(152,100), "S19436C6");
    check_base_class_offset(lv, (S19436C10*)(S19436C14*), ABISELECT(152,100), "S19436C6");
    check_base_class_offset(lv, (S19436C10*)(S19436C15*)(S19436C14*), ABISELECT(152,100), "S19436C6");
    check_base_class_offset(lv, (S2014C28*)(S19436C13*)(S19436C12*), ABISELECT(176,112), "S19436C6");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(176,112), "S19436C6");
    check_base_class_offset(lv, (S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(176,112), "S19436C6");
    /*is_ambiguous_... S19436C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C13*)(S19436C12*), ABISELECT(185,117), "S19436C6");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C13*)(S19436C12*), ABISELECT(188,120), "S19436C6");
    check_base_class_offset(lv, (S19436C13*)(S19436C12*), ABISELECT(176,112), "S19436C6");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C12*), ABISELECT(208,132), "S19436C6");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C12*), ABISELECT(208,132), "S19436C6");
    check_base_class_offset(lv, (S19436C12*)(S19436C7*), ABISELECT(176,112), "S19436C6");
    check_base_class_offset(lv, (S19436C7*), ABISELECT(80,52), "S19436C6");
    /*is_ambiguous_... S19436C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C15*)(S19436C14*), ABISELECT(9,5), "S19436C6");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C15*)(S19436C14*), 0, "S19436C6");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C15*)(S19436C14*), 0, "S19436C6");
    check_base_class_offset(lv, (S19436C15*)(S19436C14*), 0, "S19436C6");
    /*is_ambiguous_... S19436C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C14*), ABISELECT(224,144), "S19436C6");
    check_base_class_offset(lv, (S19436C14*), 0, "S19436C6");
    check_base_class_offset(lv, (S19436C3*)(S19436C16*), ABISELECT(224,144), "S19436C6");
    check_base_class_offset(lv, (S19436C16*), ABISELECT(40,32), "S19436C6");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C10*), ABISELECT(56,40), "S19436C6");
    test_class_info(&lv, &cd_S19436C6);
    dp->~S19436C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C6(Test_S19436C6, "S19436C6", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S19436C6C1Ev();
extern void _ZN8S19436C6D1Ev();
Name_Map name_map_S19436C6[] = {
  NSPAIR(_ZN8S19436C6C1Ev),
  NSPAIR(_ZN8S19436C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C13;
extern VTBL_ENTRY _ZTI9S19436C13[];
extern  VTBL_ENTRY _ZTV9S19436C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C12;
extern VTBL_ENTRY _ZTI9S19436C12[];
extern  VTBL_ENTRY _ZTV9S19436C12[];
extern Class_Descriptor cd_S19436C7;
extern VTBL_ENTRY _ZTI8S19436C7[];
extern  VTBL_ENTRY _ZTV8S19436C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C15;
extern VTBL_ENTRY _ZTI9S19436C15[];
extern  VTBL_ENTRY _ZTV9S19436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C15[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C14;
extern VTBL_ENTRY _ZTI9S19436C14[];
extern  VTBL_ENTRY _ZTV9S19436C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C14[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S19436C16;
extern VTBL_ENTRY _ZTI9S19436C16[];
extern  VTBL_ENTRY _ZTV9S19436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C16[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
static Base_Class bases_S19436C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(136,88), //bcp->offset
    36, //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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19436C3,    ABISELECT(80,52), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(148,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
    5, //immediately_derived
  0, 1},
  {&cd_S19436C10,    ABISELECT(152,100), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(176,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
    8, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(176,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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(185,117), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(188,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
    11, //immediately_derived
  0, 0},
  {&cd_S19436C13,    ABISELECT(176,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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    ABISELECT(208,132), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19436C12,    ABISELECT(176,112), //bcp->offset
    49, //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
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19436C7,    ABISELECT(80,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    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
    19, //immediately_derived
  0, 0},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19436C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    21, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(224,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
    21, //immediately_derived
  0, 1},
  {&cd_S19436C14,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19436C3,    ABISELECT(224,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19436C16,    ABISELECT(40,32), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19436C10,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19436C6[];
extern void _ZN8S19436C6D1Ev();
extern void _ZN8S19436C6D0Ev();
extern void ABISELECT(_ZThn40_N8S19436C6D1Ev,_ZThn32_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S19436C6D0Ev,_ZThn32_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19436C6D1Ev,_ZThn40_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C6D0Ev,_ZThn40_N8S19436C6D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19436C6D1Ev,_ZThn52_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19436C6D0Ev,_ZThn52_N8S19436C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn136_N8S19436C6D1Ev,_ZThn88_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn136_N8S19436C6D0Ev,_ZThn88_N8S19436C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn152_N8S19436C6D1Ev,_ZThn100_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn152_N8S19436C6D0Ev,_ZThn100_N8S19436C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19436C6D1Ev,_ZThn112_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19436C6D0Ev,_ZThn112_N8S19436C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19436C6D1Ev,_ZTvn20_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C6D0Ev,_ZTvn20_n12_N8S19436C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn224_N8S19436C6D1Ev,_ZThn144_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn224_N8S19436C6D0Ev,_ZThn144_N8S19436C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C6[] = {
  ABISELECT(224,144),
  ABISELECT(176,112),
  ABISELECT(80,52),
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&_ZN8S19436C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C6D0Ev,
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19436C6D1Ev,_ZThn32_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19436C6D0Ev,_ZThn32_N8S19436C6D0Ev),
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19436C6D1Ev,_ZThn40_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19436C6D0Ev,_ZThn40_N8S19436C6D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev),
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C6D1Ev,_ZTvn20_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C6D0Ev,_ZTvn20_n12_N8S19436C6D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-88,-56),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19436C6[];
extern void _ZN9S19436C14D1Ev();
extern void _ZN9S19436C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C14__8S19436C6[] = {
  ABISELECT(224,144),
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&_ZN9S19436C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C14D0Ev,
};
extern void _ZN9S19436C15D1Ev();
extern void _ZN9S19436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C159S19436C14__8S19436C6[] = {
  ABISELECT(148,96),
  ABISELECT(136,88),
  ABISELECT(152,100),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&_ZN9S19436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S19436C15D1Ev,_ZThn100_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S19436C15D0Ev,_ZThn100_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C159S19436C14__8S19436C6[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19436C15D1Ev,_ZThn88_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19436C15D0Ev,_ZThn88_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__A1__9S19436C159S19436C14__8S19436C6[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev)();
extern void ABISELECT(_ZThn152_N9S19436C14D1Ev,_ZThn100_N9S19436C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev)();
extern void ABISELECT(_ZThn152_N9S19436C14D0Ev,_ZThn100_N9S19436C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C14__8S19436C6[] = {
  ABISELECT(-152,-100),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S19436C14D1Ev,_ZThn88_N9S19436C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S19436C14D0Ev,_ZThn88_N9S19436C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C14__8S19436C6[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev),
};
extern void _ZN9S19436C16D1Ev();
extern void _ZN9S19436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C16__8S19436C6[] = {
  ABISELECT(108,64),
  ABISELECT(96,56),
  ABISELECT(184,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&_ZN9S19436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S19436C16D1Ev,_ZThn112_N9S19436C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S19436C16D0Ev,_ZThn112_N9S19436C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C3__9S19436C16__8S19436C6[] = {
  ABISELECT(-184,-112),
  ABISELECT(-88,-56),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19436C16D1Ev,_ZThn56_N9S19436C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19436C16D0Ev,_ZThn56_N9S19436C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C16__8S19436C6[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__A__8S19436C6[] = {
  ABISELECT(92,56),
  ABISELECT(80,48),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19436C10D1Ev,_ZThn48_N9S19436C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19436C10D0Ev,_ZThn48_N9S19436C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__A__8S19436C6[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
extern void _ZN8S19436C7D1Ev();
extern void _ZN8S19436C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C7__8S19436C6[] = {
  ABISELECT(96,60),
  ABISELECT(72,48),
  ABISELECT(68,44),
  ABISELECT(-80,-52),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&_ZN8S19436C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C7D0Ev,
};
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C38S19436C7__8S19436C6[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C3D1Ev,_ZThn36_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19436C3D0Ev,_ZThn36_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C38S19436C7__8S19436C6[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C7D1Ev,_ZThn36_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19436C7D0Ev,_ZThn36_N8S19436C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C7__8S19436C6[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn72_N8S19436C7D1Ev,_ZThn48_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn72_N8S19436C7D0Ev,_ZThn48_N8S19436C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C7__8S19436C6[] = {
  ABISELECT(-72,-48),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S19436C7D1Ev,_ZThn60_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S19436C7D0Ev,_ZThn60_N8S19436C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C12__8S19436C7__8S19436C6[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C49S19436C12__A2__8S19436C7__8S19436C6[] = {
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C6[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-152,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__8S19436C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C3__A1__8S19436C6[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C3__A1__8S19436C6[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
static  VTT_ENTRY vtt_S19436C6[] = {
  {&(_ZTV8S19436C6[10]),  10,64},
  {&(_tg__ZTV9S19436C14__8S19436C6[7]),  7,9},
  {&(_tg__ZTV9S19436C159S19436C14__8S19436C6[6]),  6,8},
  {&(_tg__ZTV9S19436C10__9S19436C159S19436C14__8S19436C6[6]),  6,8},
  {&(_tg__ZTV8S19436C4__A1__9S19436C159S19436C14__8S19436C6[3]),  3,5},
  {&(_tg__ZTV9S19436C10__9S19436C14__8S19436C6[6]),  6,8},
  {&(_tg__ZTV8S19436C4__9S19436C14__8S19436C6[3]),  3,5},
  {&(_tg__ZTV9S19436C16__8S19436C6[5]),  5,7},
  {&(_tg__ZTV8S19436C3__9S19436C16__8S19436C6[4]),  4,6},
  {&(_tg__ZTV8S19436C4__9S19436C16__8S19436C6[3]),  3,5},
  {&(_tg__ZTV9S19436C10__A__8S19436C6[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__A__8S19436C6[3]),  3,5},
  {&(_ZTV8S19436C6[34]),  34,64},
  {&(_ZTV8S19436C6[39]),  39,64},
  {&(_ZTV8S19436C6[47]),  47,64},
  {&(_ZTV8S19436C6[52]),  52,64},
  {&(_ZTV8S19436C6[56]),  56,64},
  {&(_ZTV8S19436C6[17]),  17,64},
  {&(_ZTV8S19436C6[62]),  62,64},
  {&(_ZTV8S19436C6[24]),  24,64},
  {&(_tg__ZTV8S19436C7__8S19436C6[7]),  7,9},
  {&(_tg__ZTV8S19436C38S19436C7__8S19436C6[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C38S19436C7__8S19436C6[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C7__8S19436C6[3]),  3,5},
  {&(_tg__ZTV9S19436C10__8S19436C7__8S19436C6[6]),  6,8},
  {&(_tg__ZTV9S19436C12__8S19436C7__8S19436C6[3]),  3,5},
  {&(_tg__ZTV8S19436C49S19436C12__A2__8S19436C7__8S19436C6[2]),  2,4},
  {&(_tg__ZTV9S19436C10__8S19436C6[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__8S19436C6[3]),  3,5},
  {&(_tg__ZTV8S19436C3__A1__8S19436C6[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C3__A1__8S19436C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19436C6[];
extern  VTBL_ENTRY _ZTV8S19436C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C6[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19436C7D0Ev,_ZThn48_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19436C7D1Ev,_ZThn48_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19436C7D0Ev,_ZThn60_N8S19436C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C7D0Ev,_ZThn36_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19436C7D1Ev,_ZThn60_N8S19436C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C7D1Ev,_ZThn36_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C3D0Ev,_ZThn36_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19436C3D1Ev,_ZThn36_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19436C10D0Ev,_ZThn48_N9S19436C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19436C10D1Ev,_ZThn48_N9S19436C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19436C16D0Ev,_ZThn56_N9S19436C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19436C16D1Ev,_ZThn56_N9S19436C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19436C16D0Ev,_ZThn112_N9S19436C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19436C16D1Ev,_ZThn112_N9S19436C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19436C14D0Ev,_ZThn88_N9S19436C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19436C14D1Ev,_ZThn88_N9S19436C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19436C14D0Ev,_ZThn100_N9S19436C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19436C14D1Ev,_ZThn100_N9S19436C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19436C15D0Ev,_ZThn88_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19436C15D1Ev,_ZThn88_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19436C15D0Ev,_ZThn100_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19436C15D1Ev,_ZThn100_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19436C6D0Ev,_ZThn144_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19436C6D1Ev,_ZThn144_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19436C6D0Ev,_ZThn100_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19436C6D1Ev,_ZThn100_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19436C6D0Ev,_ZThn112_N8S19436C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19436C6D0Ev,_ZThn88_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19436C6D1Ev,_ZThn112_N8S19436C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19436C6D1Ev,_ZThn88_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19436C6D0Ev,_ZThn52_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19436C6D1Ev,_ZThn52_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C6 = {  "S19436C6", // class name
  bases_S19436C6, 25,
  &(vtc_S19436C6[0]), // expected_vtbl_contents
  &(vtt_S19436C6[0]), // expected_vtt_contents
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S19436C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19436C6),64, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19436C6),31, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19436C1  : virtual S19436C2 , virtual S2014C38 , virtual S19436C6 , virtual S19436C15 {
  void *s19436c1f0;
  virtual  ~S19436C1(); // _ZN8S19436C1D2Ev
  S19436C1(); // tgen
};
//SIG(1 S19436C1) C1{ VBC2{ BC3{ VBC4{ BC5{ m} vd FC5} FL} vd} VBC5 VBC6{ VBC7{ BC3 VBC8{ m} VBC9{ m Fi} VBC10{ VBC8 VBC4 VBC9 vd Fp FC11{}} VBC12{ BC13{ BC8 BC4 BC5 BC9 Fs:16 Fl} BC4 Fi} vd Fl FC3} BC14{ VBC10 BC15{ BC5 BC4 VBC8 VBC10 vd} VBC5 vd FC9[6]} BC16{ VBC3 VBC9 Fc:1} BC10} VBC15 vd Fp}


 S19436C1 ::~S19436C1(){ note_dtor("S19436C1", this);}
S19436C1 ::S19436C1(){ note_ctor("S19436C1", this);} // tgen

static void Test_S19436C1()
{
  extern Class_Descriptor cd_S19436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,47)];
    init_test(&cd_S19436C1, buf);
    S19436C1 *dp, &lv = *(dp=new (buf) S19436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,184), "sizeof(S19436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19436C1)");
    /*is_ambiguous_... S19436C1::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*), ABISELECT(32,20), "S19436C1");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*)(S19436C2*), ABISELECT(32,20), "S19436C1");
    check_base_class_offset(lv, (S19436C4*)(S19436C3*)(S19436C7*), ABISELECT(32,20), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C10*), ABISELECT(32,20), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C3 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C3*), ABISELECT(32,20), "S19436C1");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C10*)(S19436C6*), ABISELECT(32,20), "S19436C1");
    check_base_class_offset(lv, (S19436C3*)(S19436C2*), ABISELECT(16,8), "S19436C1");
    check_base_class_offset(lv, (S19436C2*), ABISELECT(16,8), "S19436C1");
    /*is_ambiguous_... S19436C1::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), 0, "S19436C1");
    /*is_ambiguous_... S19436C14::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C14*)(S19436C6*), 0, "S19436C1");
    check_base_class_offset(lv, (S19436C3*)(S19436C7*), ABISELECT(128,80), "S19436C1");
    /*is_ambiguous_... S19436C7::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C7*), 0, "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C10*), 0, "S19436C1");
    check_base_class_offset(lv, (S2014C28*)(S19436C15*)(S19436C14*)(S19436C6*), 0, "S19436C1");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C10*)(S19436C6*), 0, "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19436C15*), 0, "S19436C1");
    /*is_ambiguous_... S19436C7::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C7*), ABISELECT(184,116), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*), ABISELECT(184,116), "S19436C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C16*)(S19436C6*), ABISELECT(184,116), "S19436C1");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S19436C10*)(S19436C6*), ABISELECT(184,116), "S19436C1");
    check_base_class_offset(lv, (S19436C10*)(S19436C7*), ABISELECT(192,120), "S19436C1");
    check_base_class_offset(lv, (S19436C10*)(S19436C14*)(S19436C6*), ABISELECT(192,120), "S19436C1");
    check_base_class_offset(lv, (S19436C10*)(S19436C15*)(S19436C14*)(S19436C6*), ABISELECT(192,120), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S19436C10*)(S19436C15*), ABISELECT(192,120), "S19436C1");
    check_base_class_offset(lv, (S2014C28*)(S19436C13*)(S19436C12*), ABISELECT(216,132), "S19436C1");
    check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(216,132), "S19436C1");
    check_base_class_offset(lv, (S19436C4*)(S19436C13*)(S19436C12*), ABISELECT(216,132), "S19436C1");
    /*is_ambiguous_... S19436C13::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C13*)(S19436C12*), ABISELECT(225,137), "S19436C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19436C13*)(S19436C12*), ABISELECT(228,140), "S19436C1");
    check_base_class_offset(lv, (S19436C13*)(S19436C12*), ABISELECT(216,132), "S19436C1");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C12*), ABISELECT(248,152), "S19436C1");
    /*is_ambiguous_... S19436C12::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C12*), ABISELECT(248,152), "S19436C1");
    check_base_class_offset(lv, (S19436C12*)(S19436C7*), ABISELECT(216,132), "S19436C1");
    check_base_class_offset(lv, (S19436C7*)(S19436C6*), ABISELECT(128,80), "S19436C1");
    /*is_ambiguous_... S19436C15::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C15*)(S19436C14*)(S19436C6*), ABISELECT(57,33), "S19436C1");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C15*)(S19436C14*)(S19436C6*), ABISELECT(48,28), "S19436C1");
    /*is_ambiguous_... S19436C15::S19436C4 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C15*)(S19436C14*)(S19436C6*), ABISELECT(48,28), "S19436C1");
    check_base_class_offset(lv, (S19436C15*)(S19436C14*)(S19436C6*), ABISELECT(48,28), "S19436C1");
    check_base_class_offset(lv, (S19436C14*)(S19436C6*), ABISELECT(48,28), "S19436C1");
    check_base_class_offset(lv, (S19436C3*)(S19436C16*)(S19436C6*), ABISELECT(264,164), "S19436C1");
    check_base_class_offset(lv, (S19436C16*)(S19436C6*), ABISELECT(88,60), "S19436C1");
    /*is_ambiguous_... S19436C6::S19436C10 */ AMB_check_base_class_offset(lv, (S19436C10*)(S19436C6*), ABISELECT(104,68), "S19436C1");
    check_base_class_offset(lv, (S19436C6*), ABISELECT(48,28), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C15*), ABISELECT(289,181), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19436C4*)(S19436C15*), ABISELECT(280,176), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S19436C4*)(S19436C15*), ABISELECT(280,176), "S19436C1");
    /*is_ambiguous_... S19436C1::S19436C15 */ AMB_check_base_class_offset(lv, (S19436C15*), ABISELECT(280,176), "S19436C1");
    check_field_offset(lv, s19436c1f0, ABISELECT(8,4), "S19436C1.s19436c1f0");
    test_class_info(&lv, &cd_S19436C1);
    dp->~S19436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19436C1(Test_S19436C1, "S19436C1", ABISELECT(296,184));

#else // __cplusplus

extern void _ZN8S19436C1C1Ev();
extern void _ZN8S19436C1D2Ev();
Name_Map name_map_S19436C1[] = {
  NSPAIR(_ZN8S19436C1C1Ev),
  NSPAIR(_ZN8S19436C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S19436C2;
extern VTBL_ENTRY _ZTI8S19436C2[];
extern  VTBL_ENTRY _ZTV8S19436C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19436C13;
extern VTBL_ENTRY _ZTI9S19436C13[];
extern  VTBL_ENTRY _ZTV9S19436C13[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C12;
extern VTBL_ENTRY _ZTI9S19436C12[];
extern  VTBL_ENTRY _ZTV9S19436C12[];
extern Class_Descriptor cd_S19436C7;
extern VTBL_ENTRY _ZTI8S19436C7[];
extern  VTBL_ENTRY _ZTV8S19436C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C7[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C15;
extern VTBL_ENTRY _ZTI9S19436C15[];
extern  VTBL_ENTRY _ZTV9S19436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C15[];
extern Class_Descriptor cd_S19436C14;
extern VTBL_ENTRY _ZTI9S19436C14[];
extern  VTBL_ENTRY _ZTV9S19436C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C14[];
extern Class_Descriptor cd_S19436C3;
extern VTBL_ENTRY _ZTI8S19436C3[];
extern  VTBL_ENTRY _ZTV8S19436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C3[];
extern Class_Descriptor cd_S19436C16;
extern VTBL_ENTRY _ZTI9S19436C16[];
extern  VTBL_ENTRY _ZTV9S19436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C16[];
extern Class_Descriptor cd_S19436C10;
extern VTBL_ENTRY _ZTI9S19436C10[];
extern  VTBL_ENTRY _ZTV9S19436C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C10[];
extern Class_Descriptor cd_S19436C6;
extern VTBL_ENTRY _ZTI8S19436C6[];
extern  VTBL_ENTRY _ZTV8S19436C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C6[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19436C4;
extern VTBL_ENTRY _ZTI8S19436C4[];
extern  VTBL_ENTRY _ZTV8S19436C4[];
extern Class_Descriptor cd_S19436C15;
extern VTBL_ENTRY _ZTI9S19436C15[];
extern  VTBL_ENTRY _ZTV9S19436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19436C15[];
static Base_Class bases_S19436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(32,20), //bcp->offset
    21, //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_S19436C3,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19436C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19436C3,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    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
    8, //immediately_derived
  0, 1},
  {&cd_S19436C10,    ABISELECT(192,120), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19436C4,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(225,137), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3222C8_nt,    ABISELECT(228,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
    14, //immediately_derived
  0, 0},
  {&cd_S19436C13,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S2014C38,    ABISELECT(248,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
    16, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(248,152), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19436C12,    ABISELECT(216,132), //bcp->offset
    71, //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
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19436C7,    ABISELECT(128,80), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(57,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19436C4,    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
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19436C15,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    23, //immediately_derived
  0, 0},
  {&cd_S19436C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19436C3,    ABISELECT(264,164), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19436C16,    ABISELECT(88,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19436C10,    ABISELECT(104,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19436C6,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    ABISELECT(289,181), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    ABISELECT(280,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
    30, //immediately_derived
  0, 0},
  {&cd_S19436C4,    ABISELECT(280,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
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19436C15,    ABISELECT(280,176), //bcp->offset
    86, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19436C1[];
extern void _ZN8S19436C1D1Ev();
extern void _ZN8S19436C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19436C1D1Ev,_ZTv0_n16_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C1D1Ev,_ZThn8_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19436C1D0Ev,_ZTv0_n16_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C1D0Ev,_ZThn8_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C1D1Ev,_ZTv0_n12_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19436C1D1Ev,_ZThn20_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C1D0Ev,_ZTv0_n12_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19436C1D0Ev,_ZThn20_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19436C1D1Ev,_ZTv0_n44_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19436C1D1Ev,_ZThn28_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19436C1D0Ev,_ZTv0_n44_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19436C1D0Ev,_ZThn28_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn40_n88_N8S19436C1D1Ev,_ZTvn32_n44_N8S19436C1D1Ev)();
extern void ABISELECT(_ZTvn40_n88_N8S19436C1D0Ev,_ZTvn32_n44_N8S19436C1D0Ev)();
extern void ABISELECT(_ZTvn56_n88_N8S19436C1D1Ev,_ZTvn40_n44_N8S19436C1D1Ev)();
extern void ABISELECT(_ZTvn56_n88_N8S19436C1D0Ev,_ZTvn40_n44_N8S19436C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19436C1D1Ev,_ZTv0_n32_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19436C1D1Ev,_ZThn80_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19436C1D0Ev,_ZTv0_n32_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19436C1D0Ev,_ZThn80_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C1D1Ev,_ZTv0_n24_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19436C1D1Ev,_ZThn120_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C1D0Ev,_ZTv0_n24_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19436C1D0Ev,_ZThn120_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C1D1Ev,_ZTv0_n12_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19436C1D1Ev,_ZThn132_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C1D0Ev,_ZTv0_n12_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19436C1D0Ev,_ZThn132_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n24_N8S19436C1D1Ev,_ZTvn20_n12_N8S19436C1D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C1D0Ev,_ZTvn20_n12_N8S19436C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19436C1D1Ev,_ZTv0_n16_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S19436C1D1Ev,_ZThn164_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19436C1D0Ev,_ZTv0_n16_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S19436C1D0Ev,_ZThn164_N8S19436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19436C1D1Ev,_ZTv0_n28_N8S19436C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S19436C1D1Ev,_ZThn176_N8S19436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19436C1D0Ev,_ZTv0_n28_N8S19436C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S19436C1D0Ev,_ZThn176_N8S19436C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19436C1[] = {
  ABISELECT(280,176),
  ABISELECT(264,164),
  ABISELECT(216,132),
  ABISELECT(192,120),
  ABISELECT(184,116),
  0,
  ABISELECT(128,80),
  ABISELECT(48,28),
  0,
  ABISELECT(32,20),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&_ZN8S19436C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C1D1Ev,_ZTv0_n16_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C1D0Ev,_ZTv0_n16_N8S19436C1D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C1D1Ev,_ZTv0_n12_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C1D0Ev,_ZTv0_n12_N8S19436C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(216,136),
  ABISELECT(168,104),
  ABISELECT(80,52),
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19436C1D1Ev,_ZTv0_n44_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19436C1D0Ev,_ZTv0_n44_N8S19436C1D0Ev),
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,104),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n88_N8S19436C1D1Ev,_ZTvn32_n44_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n88_N8S19436C1D0Ev,_ZTvn32_n44_N8S19436C1D0Ev),
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n88_N8S19436C1D1Ev,_ZTvn40_n44_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n88_N8S19436C1D0Ev,_ZTvn40_n44_N8S19436C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C1D1Ev,_ZTv0_n32_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C1D0Ev,_ZTv0_n32_N8S19436C1D0Ev),
  ABISELECT(-192,-120),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C1D1Ev,_ZTv0_n24_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C1D0Ev,_ZTv0_n24_N8S19436C1D0Ev),
  ABISELECT(-216,-132),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C1D1Ev,_ZTv0_n12_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C1D0Ev,_ZTv0_n12_N8S19436C1D0Ev),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C1D1Ev,_ZTvn20_n12_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C1D0Ev,_ZTvn20_n12_N8S19436C1D0Ev),
  ABISELECT(-264,-164),
  ABISELECT(-232,-144),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C1D1Ev,_ZTv0_n16_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C1D0Ev,_ZTv0_n16_N8S19436C1D0Ev),
  ABISELECT(-280,-176),
  ABISELECT(-96,-60),
  ABISELECT(-248,-156),
  ABISELECT(-88,-56),
  ABISELECT(-280,-176),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S19436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19436C1D1Ev,_ZTv0_n28_N8S19436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19436C1D0Ev,_ZTv0_n28_N8S19436C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19436C1[];
extern void _ZN8S19436C2D1Ev();
extern void _ZN8S19436C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C2__8S19436C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C2[0]),
  (VTBL_ENTRY)&_ZN8S19436C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C2D0Ev,
};
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C38S19436C2__8S19436C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C38S19436C2__8S19436C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19436C2D1Ev,_ZThn12_N8S19436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S19436C2D0Ev,_ZThn12_N8S19436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C2__8S19436C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev),
};
extern void _ZN8S19436C6D1Ev();
extern void _ZN8S19436C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C6__8S19436C1[] = {
  ABISELECT(216,136),
  ABISELECT(168,104),
  ABISELECT(80,52),
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&_ZN8S19436C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C6D0Ev,
};
extern void _ZN9S19436C14D1Ev();
extern void _ZN9S19436C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&_ZN9S19436C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C14D0Ev,
};
extern void _ZN9S19436C15D1Ev();
extern void _ZN9S19436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C159S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(136,88),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&_ZN9S19436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S19436C15D1Ev,_ZThn92_N9S19436C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S19436C15D0Ev,_ZThn92_N9S19436C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C159S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__A1__9S19436C159S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19436C14D1Ev,_ZThn92_N9S19436C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19436C14D0Ev,_ZThn92_N9S19436C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C148S19436C6__8S19436C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19436C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D1Ev,_ZTv0_n12_N9S19436C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C14D0Ev,_ZTv0_n12_N9S19436C14D0Ev),
};
extern void _ZN9S19436C16D1Ev();
extern void _ZN9S19436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C168S19436C6__8S19436C1[] = {
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&_ZN9S19436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev)();
extern void ABISELECT(_ZThn176_N9S19436C16D1Ev,_ZThn104_N9S19436C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev)();
extern void ABISELECT(_ZThn176_N9S19436C16D0Ev,_ZThn104_N9S19436C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C3__9S19436C168S19436C6__8S19436C1[] = {
  ABISELECT(-176,-104),
  ABISELECT(-232,-144),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C168S19436C6__8S19436C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S19436C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D1Ev,_ZTv0_n12_N9S19436C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C16D0Ev,_ZTv0_n12_N9S19436C16D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C108S19436C6__A1__8S19436C1[] = {
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C108S19436C6__A1__8S19436C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S19436C6D1Ev,_ZThn52_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S19436C6D0Ev,_ZThn52_N8S19436C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C7__8S19436C6__8S19436C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C6__8S19436C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S19436C6D1Ev,_ZThn92_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S19436C6D0Ev,_ZThn92_N8S19436C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C6__8S19436C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn168_N8S19436C6D1Ev,_ZThn104_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn168_N8S19436C6D0Ev,_ZThn104_N8S19436C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C12__8S19436C6__8S19436C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19436C6D1Ev,_ZTvn20_n12_N8S19436C6D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C6D0Ev,_ZTvn20_n12_N8S19436C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C49S19436C12__A2__8S19436C6__8S19436C1[] = {
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C6D1Ev,_ZTvn20_n12_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C6D0Ev,_ZTvn20_n12_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZThn40_N8S19436C6D1Ev,_ZThn32_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S19436C6D0Ev,_ZThn32_N8S19436C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19436C16__8S19436C6__8S19436C1[] = {
  ABISELECT(96,56),
  ABISELECT(-56,-40),
  ABISELECT(176,104),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19436C6D1Ev,_ZThn32_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19436C6D0Ev,_ZThn32_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn216_N8S19436C6D1Ev,_ZThn136_N8S19436C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev)();
extern void ABISELECT(_ZThn216_N8S19436C6D0Ev,_ZThn136_N8S19436C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19436C3__A1__8S19436C6__8S19436C1[] = {
  ABISELECT(-216,-136),
  ABISELECT(-232,-144),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19436C6D1Ev,_ZThn40_N8S19436C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19436C6D0Ev,_ZThn40_N8S19436C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19436C10__A__8S19436C6__8S19436C1[] = {
  ABISELECT(80,48),
  ABISELECT(-72,-48),
  ABISELECT(-104,-68),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19436C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19436C6D1Ev,_ZThn40_N8S19436C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19436C6D0Ev,_ZThn40_N8S19436C6D0Ev),
};
extern void _ZN8S19436C7D1Ev();
extern void _ZN8S19436C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C7__8S19436C1[] = {
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(-128,-80),
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&_ZN8S19436C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C7D0Ev,
};
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C38S19436C7__A1__8S19436C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C38S19436C7__A1__8S19436C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C7__8S19436C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S19436C7D1Ev,_ZThn40_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S19436C7D0Ev,_ZThn40_N8S19436C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C7__8S19436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19436C7D1Ev,_ZThn52_N8S19436C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19436C7D0Ev,_ZThn52_N8S19436C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19436C12__8S19436C7__8S19436C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev),
};
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev)();
extern void ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C49S19436C12__A2__8S19436C7__8S19436C1[] = {
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S19436C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D1Ev,_ZTvn20_n12_N8S19436C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n24_N8S19436C7D0Ev,_ZTvn20_n12_N8S19436C7D0Ev),
};
extern void _ZN9S19436C10D1Ev();
extern void _ZN9S19436C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C10__8S19436C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&_ZN9S19436C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__9S19436C10__8S19436C1[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S19436C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D1Ev,_ZTv0_n12_N9S19436C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C10D0Ev,_ZTv0_n12_N9S19436C10D0Ev),
};
extern void _ZN8S19436C3D1Ev();
extern void _ZN8S19436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19436C3__A2__8S19436C1[] = {
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&_ZN8S19436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19436C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__8S19436C3__A2__8S19436C1[] = {
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S19436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev),
};
extern void _ZN9S19436C15D1Ev();
extern void _ZN9S19436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19436C15__A1__8S19436C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-248,-156),
  ABISELECT(-88,-56),
  ABISELECT(-280,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&_ZN9S19436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19436C15D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19436C10__9S19436C15__A1__8S19436C1[] = {
  ABISELECT(88,56),
  ABISELECT(-8,-4),
  ABISELECT(-160,-100),
  ABISELECT(-192,-120),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19436C4__A1__9S19436C15__A1__8S19436C1[] = {
  ABISELECT(248,156),
  ABISELECT(248,156),
  (VTBL_ENTRY)&(_ZTI9S19436C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D1Ev,_ZTv0_n12_N9S19436C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19436C15D0Ev,_ZTv0_n12_N9S19436C15D0Ev),
};
static  VTT_ENTRY vtt_S19436C1[] = {
  {&(_ZTV8S19436C1[13]),  13,95},
  {&(_ZTV8S19436C1[19]),  19,95},
  {&(_ZTV8S19436C1[24]),  24,95},
  {&(_ZTV8S19436C1[37]),  37,95},
  {&(_ZTV8S19436C1[61]),  61,95},
  {&(_ZTV8S19436C1[69]),  69,95},
  {&(_ZTV8S19436C1[74]),  74,95},
  {&(_ZTV8S19436C1[78]),  78,95},
  {&(_ZTV8S19436C1[44]),  44,95},
  {&(_ZTV8S19436C1[84]),  84,95},
  {&(_ZTV8S19436C1[51]),  51,95},
  {&(_ZTV8S19436C1[93]),  93,95},
  {&(_tg__ZTV8S19436C2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C38S19436C2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C38S19436C2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C6__8S19436C1[10]),  10,12},
  {&(_tg__ZTV9S19436C148S19436C6__8S19436C1[7]),  7,9},
  {&(_tg__ZTV9S19436C159S19436C148S19436C6__8S19436C1[6]),  6,8},
  {&(_tg__ZTV9S19436C10__9S19436C159S19436C148S19436C6__8S19436C1[6]),  6,8},
  {&(_tg__ZTV8S19436C4__A1__9S19436C159S19436C148S19436C6__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C10__9S19436C148S19436C6__8S19436C1[6]),  6,8},
  {&(_tg__ZTV8S19436C4__9S19436C148S19436C6__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C168S19436C6__8S19436C1[5]),  5,7},
  {&(_tg__ZTV8S19436C3__9S19436C168S19436C6__8S19436C1[4]),  4,6},
  {&(_tg__ZTV8S19436C4__9S19436C168S19436C6__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C108S19436C6__A1__8S19436C1[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C108S19436C6__A1__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C7__8S19436C6__8S19436C1[8]),  8,10},
  {&(_tg__ZTV8S19436C4__8S19436C6__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C10__8S19436C6__8S19436C1[6]),  6,8},
  {&(_tg__ZTV9S19436C12__8S19436C6__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C49S19436C12__A2__8S19436C6__8S19436C1[2]),  2,4},
  {&(_tg__ZTV9S19436C16__8S19436C6__8S19436C1[5]),  5,7},
  {&(_tg__ZTV8S19436C3__A1__8S19436C6__8S19436C1[4]),  4,6},
  {&(_tg__ZTV9S19436C10__A__8S19436C6__8S19436C1[5]),  5,7},
  {&(_tg__ZTV8S19436C7__8S19436C1[7]),  7,9},
  {&(_tg__ZTV8S19436C38S19436C7__A1__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C38S19436C7__A1__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C7__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C10__8S19436C7__8S19436C1[6]),  6,8},
  {&(_tg__ZTV9S19436C12__8S19436C7__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C49S19436C12__A2__8S19436C7__8S19436C1[2]),  2,4},
  {&(_tg__ZTV9S19436C10__8S19436C1[5]),  5,7},
  {&(_tg__ZTV8S19436C4__9S19436C10__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C3__A2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV8S19436C4__8S19436C3__A2__8S19436C1[3]),  3,5},
  {&(_tg__ZTV9S19436C15__A1__8S19436C1[6]),  6,8},
  {&(_tg__ZTV9S19436C10__9S19436C15__A1__8S19436C1[6]),  6,8},
  {&(_tg__ZTV8S19436C4__A1__9S19436C15__A1__8S19436C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19436C1[];
extern  VTBL_ENTRY _ZTV8S19436C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19436C1[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D0Ev,_ZTv0_n12_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19436C7D0Ev,_ZThn52_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C7D1Ev,_ZTv0_n12_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19436C7D1Ev,_ZThn52_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D0Ev,_ZTv0_n24_N8S19436C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19436C7D0Ev,_ZThn40_N8S19436C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C7D1Ev,_ZTv0_n24_N8S19436C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19436C7D1Ev,_ZThn40_N8S19436C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C6D0Ev,_ZTv0_n16_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19436C6D0Ev,_ZThn136_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C6D1Ev,_ZTv0_n16_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19436C6D1Ev,_ZThn136_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C6D0Ev,_ZTv0_n12_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19436C6D0Ev,_ZThn104_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C6D1Ev,_ZTv0_n12_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19436C6D1Ev,_ZThn104_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C6D0Ev,_ZTv0_n24_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19436C6D0Ev,_ZThn92_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C6D1Ev,_ZTv0_n24_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19436C6D1Ev,_ZThn92_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C6D0Ev,_ZTv0_n32_N8S19436C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19436C6D0Ev,_ZThn52_N8S19436C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C6D1Ev,_ZTv0_n32_N8S19436C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19436C6D1Ev,_ZThn52_N8S19436C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D0Ev,_ZTv0_n16_N9S19436C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19436C16D0Ev,_ZThn104_N9S19436C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19436C16D1Ev,_ZTv0_n16_N9S19436C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19436C16D1Ev,_ZThn104_N9S19436C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D0Ev,_ZTv0_n24_N9S19436C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19436C14D0Ev,_ZThn92_N9S19436C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C14D1Ev,_ZTv0_n24_N9S19436C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19436C14D1Ev,_ZThn92_N9S19436C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D0Ev,_ZTv0_n24_N9S19436C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19436C15D0Ev,_ZThn92_N9S19436C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19436C15D1Ev,_ZTv0_n24_N9S19436C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19436C15D1Ev,_ZThn92_N9S19436C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C2D0Ev,_ZTv0_n12_N8S19436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C2D0Ev,_ZThn12_N8S19436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C2D1Ev,_ZTv0_n12_N8S19436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C2D1Ev,_ZThn12_N8S19436C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D0Ev,_ZTv0_n12_N8S19436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D0Ev,_ZThn12_N8S19436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C3D1Ev,_ZTv0_n12_N8S19436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C3D1Ev,_ZThn12_N8S19436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19436C1D0Ev,_ZTv0_n28_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19436C1D0Ev,_ZThn176_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19436C1D1Ev,_ZTv0_n28_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19436C1D1Ev,_ZThn176_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C1D0Ev,_ZTv0_n24_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19436C1D0Ev,_ZThn120_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19436C1D1Ev,_ZTv0_n24_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19436C1D1Ev,_ZThn120_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C1D0Ev,_ZTv0_n32_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19436C1D0Ev,_ZThn80_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19436C1D1Ev,_ZTv0_n32_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19436C1D1Ev,_ZThn80_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19436C1D0Ev,_ZTv0_n44_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19436C1D0Ev,_ZThn28_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19436C1D1Ev,_ZTv0_n44_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19436C1D1Ev,_ZThn28_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C1D0Ev,_ZTv0_n12_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19436C1D0Ev,_ZThn132_N8S19436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19436C1D0Ev,_ZThn20_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19436C1D1Ev,_ZTv0_n12_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19436C1D1Ev,_ZThn132_N8S19436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19436C1D1Ev,_ZThn20_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C1D0Ev,_ZTv0_n16_N8S19436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19436C1D0Ev,_ZThn164_N8S19436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C1D0Ev,_ZThn8_N8S19436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19436C1D1Ev,_ZTv0_n16_N8S19436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19436C1D1Ev,_ZThn164_N8S19436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19436C1D1Ev,_ZThn8_N8S19436C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19436C1 = {  "S19436C1", // class name
  bases_S19436C1, 32,
  &(vtc_S19436C1[0]), // expected_vtbl_contents
  &(vtt_S19436C1[0]), // expected_vtt_contents
  ABISELECT(296,184), // object size
  NSPAIRA(_ZTI8S19436C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19436C1),95, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19436C1),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7631C3  {
  long s7631c3f0[5];
  void *s7631c3f1;
  virtual void  v6(); // _ZN7S7631C32v6Ev
  virtual void  v7(); // _ZN7S7631C32v7Ev
  ~S7631C3(); // tgen
  S7631C3(); // tgen
};
//SIG(-1 S7631C3) C1{ v1 v2 Fl[5] Fp}


void  S7631C3 ::v6(){vfunc_called(this, "_ZN7S7631C32v6Ev");}
void  S7631C3 ::v7(){vfunc_called(this, "_ZN7S7631C32v7Ev");}
S7631C3 ::~S7631C3(){ note_dtor("S7631C3", this);} // tgen
S7631C3 ::S7631C3(){ note_ctor("S7631C3", this);} // tgen

static void Test_S7631C3()
{
  extern Class_Descriptor cd_S7631C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7631C3, buf);
    S7631C3 *dp, &lv = *(dp=new (buf) S7631C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7631C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C3)");
    check_field_offset(lv, s7631c3f0, ABISELECT(8,4), "S7631C3.s7631c3f0");
    check_field_offset(lv, s7631c3f1, ABISELECT(48,24), "S7631C3.s7631c3f1");
    test_class_info(&lv, &cd_S7631C3);
    dp->~S7631C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C3(Test_S7631C3, "S7631C3", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S7631C3C1Ev();
extern void _ZN7S7631C3D1Ev();
Name_Map name_map_S7631C3[] = {
  NSPAIR(_ZN7S7631C3C1Ev),
  NSPAIR(_ZN7S7631C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7631C3[];
extern void _ZN7S7631C32v6Ev();
extern void _ZN7S7631C32v7Ev();
static  VTBL_ENTRY vtc_S7631C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C3[0]),
  (VTBL_ENTRY)&_ZN7S7631C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7631C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7631C3[];
extern  VTBL_ENTRY _ZTV7S7631C3[];
Class_Descriptor cd_S7631C3 = {  "S7631C3", // class name
  0,0,//no base classes
  &(vtc_S7631C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S7631C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7631C3),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  S7631C8  {
  virtual void  v8(); // _ZN7S7631C82v8Ev
  virtual void  v9(); // _ZN7S7631C82v9Ev
  virtual void  v10(); // _ZN7S7631C83v10Ev
  virtual void  v11(); // _ZN7S7631C83v11Ev
  virtual void  v12(); // _ZN7S7631C83v12Ev
  ~S7631C8(); // tgen
  S7631C8(); // tgen
};
//SIG(-1 S7631C8) C1{ v1 v2 v3 v4 v5}


void  S7631C8 ::v8(){vfunc_called(this, "_ZN7S7631C82v8Ev");}
void  S7631C8 ::v9(){vfunc_called(this, "_ZN7S7631C82v9Ev");}
void  S7631C8 ::v10(){vfunc_called(this, "_ZN7S7631C83v10Ev");}
void  S7631C8 ::v11(){vfunc_called(this, "_ZN7S7631C83v11Ev");}
void  S7631C8 ::v12(){vfunc_called(this, "_ZN7S7631C83v12Ev");}
S7631C8 ::~S7631C8(){ note_dtor("S7631C8", this);} // tgen
S7631C8 ::S7631C8(){ note_ctor("S7631C8", this);} // tgen

static void Test_S7631C8()
{
  extern Class_Descriptor cd_S7631C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7631C8, buf);
    S7631C8 *dp, &lv = *(dp=new (buf) S7631C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7631C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C8)");
    test_class_info(&lv, &cd_S7631C8);
    dp->~S7631C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C8(Test_S7631C8, "S7631C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7631C8C1Ev();
extern void _ZN7S7631C8D1Ev();
Name_Map name_map_S7631C8[] = {
  NSPAIR(_ZN7S7631C8C1Ev),
  NSPAIR(_ZN7S7631C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7631C8[];
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
static  VTBL_ENTRY vtc_S7631C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C8[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
};
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
Class_Descriptor cd_S7631C8 = {  "S7631C8", // class name
  0,0,//no base classes
  &(vtc_S7631C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7631C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7631C8),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  S7631C7  : S7631C8 {
  ::S7631C8 s7631c7f0;
  virtual void  v13(); // _ZN7S7631C73v13Ev
  virtual void  v14(); // _ZN7S7631C73v14Ev
  virtual void  v15(); // _ZN7S7631C73v15Ev
  virtual void  v16(); // _ZN7S7631C73v16Ev
  ~S7631C7(); // tgen
  S7631C7(); // tgen
};
//SIG(-1 S7631C7) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S7631C7 ::v13(){vfunc_called(this, "_ZN7S7631C73v13Ev");}
void  S7631C7 ::v14(){vfunc_called(this, "_ZN7S7631C73v14Ev");}
void  S7631C7 ::v15(){vfunc_called(this, "_ZN7S7631C73v15Ev");}
void  S7631C7 ::v16(){vfunc_called(this, "_ZN7S7631C73v16Ev");}
S7631C7 ::~S7631C7(){ note_dtor("S7631C7", this);} // tgen
S7631C7 ::S7631C7(){ note_ctor("S7631C7", this);} // tgen

static void Test_S7631C7()
{
  extern Class_Descriptor cd_S7631C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7631C7, buf);
    S7631C7 *dp, &lv = *(dp=new (buf) S7631C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7631C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C7)");
    check_base_class_offset(lv, (S7631C8*), 0, "S7631C7");
    check_field_offset(lv, s7631c7f0, ABISELECT(8,4), "S7631C7.s7631c7f0");
    test_class_info(&lv, &cd_S7631C7);
    dp->~S7631C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C7(Test_S7631C7, "S7631C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7631C7C1Ev();
extern void _ZN7S7631C7D1Ev();
Name_Map name_map_S7631C7[] = {
  NSPAIR(_ZN7S7631C7C1Ev),
  NSPAIR(_ZN7S7631C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
static Base_Class bases_S7631C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7631C7[];
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
static  VTBL_ENTRY vtc_S7631C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C7[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
};
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
Class_Descriptor cd_S7631C7 = {  "S7631C7", // class name
  bases_S7631C7, 1,
  &(vtc_S7631C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7631C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7631C7),11, //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  S7631C6  : S7631C7 {
  virtual void  v17(); // _ZN7S7631C63v17Ev
  virtual void  v18(); // _ZN7S7631C63v18Ev
  virtual void  v19(); // _ZN7S7631C63v19Ev
  virtual void  v20(); // _ZN7S7631C63v20Ev
  virtual void  v21(); // _ZN7S7631C63v21Ev
  virtual void  v22(); // _ZN7S7631C63v22Ev
  ~S7631C6(); // tgen
  S7631C6(); // tgen
};
//SIG(-1 S7631C6) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S7631C6 ::v17(){vfunc_called(this, "_ZN7S7631C63v17Ev");}
void  S7631C6 ::v18(){vfunc_called(this, "_ZN7S7631C63v18Ev");}
void  S7631C6 ::v19(){vfunc_called(this, "_ZN7S7631C63v19Ev");}
void  S7631C6 ::v20(){vfunc_called(this, "_ZN7S7631C63v20Ev");}
void  S7631C6 ::v21(){vfunc_called(this, "_ZN7S7631C63v21Ev");}
void  S7631C6 ::v22(){vfunc_called(this, "_ZN7S7631C63v22Ev");}
S7631C6 ::~S7631C6(){ note_dtor("S7631C6", this);} // tgen
S7631C6 ::S7631C6(){ note_ctor("S7631C6", this);} // tgen

static void Test_S7631C6()
{
  extern Class_Descriptor cd_S7631C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7631C6, buf);
    S7631C6 *dp, &lv = *(dp=new (buf) S7631C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7631C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C6)");
    check_base_class_offset(lv, (S7631C8*)(S7631C7*), 0, "S7631C6");
    check_base_class_offset(lv, (S7631C7*), 0, "S7631C6");
    test_class_info(&lv, &cd_S7631C6);
    dp->~S7631C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C6(Test_S7631C6, "S7631C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7631C6C1Ev();
extern void _ZN7S7631C6D1Ev();
Name_Map name_map_S7631C6[] = {
  NSPAIR(_ZN7S7631C6C1Ev),
  NSPAIR(_ZN7S7631C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
extern Class_Descriptor cd_S7631C7;
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
static Base_Class bases_S7631C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S7631C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S7631C6[];
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY vtc_S7631C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C6[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern VTBL_ENTRY _ZTI7S7631C6[];
extern  VTBL_ENTRY _ZTV7S7631C6[];
Class_Descriptor cd_S7631C6 = {  "S7631C6", // class name
  bases_S7631C6, 2,
  &(vtc_S7631C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7631C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7631C6),17, //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  S7631C5  : virtual S7631C6 {
  virtual void  v23(); // _ZN7S7631C53v23Ev
  virtual void  v24(); // _ZN7S7631C53v24Ev
  virtual void  v25(); // _ZN7S7631C53v25Ev
  ~S7631C5(); // tgen
  S7631C5(); // tgen
};
//SIG(-1 S7631C5) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S7631C5 ::v23(){vfunc_called(this, "_ZN7S7631C53v23Ev");}
void  S7631C5 ::v24(){vfunc_called(this, "_ZN7S7631C53v24Ev");}
void  S7631C5 ::v25(){vfunc_called(this, "_ZN7S7631C53v25Ev");}
S7631C5 ::~S7631C5(){ note_dtor("S7631C5", this);} // tgen
S7631C5 ::S7631C5(){ note_ctor("S7631C5", this);} // tgen

static void Test_S7631C5()
{
  extern Class_Descriptor cd_S7631C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7631C5, buf);
    S7631C5 *dp, &lv = *(dp=new (buf) S7631C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7631C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C5)");
    check_base_class_offset(lv, (S7631C8*)(S7631C7*)(S7631C6*), ABISELECT(8,4), "S7631C5");
    check_base_class_offset(lv, (S7631C7*)(S7631C6*), ABISELECT(8,4), "S7631C5");
    check_base_class_offset(lv, (S7631C6*), ABISELECT(8,4), "S7631C5");
    test_class_info(&lv, &cd_S7631C5);
    dp->~S7631C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C5(Test_S7631C5, "S7631C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7631C5C1Ev();
extern void _ZN7S7631C5D1Ev();
Name_Map name_map_S7631C5[] = {
  NSPAIR(_ZN7S7631C5C1Ev),
  NSPAIR(_ZN7S7631C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
extern Class_Descriptor cd_S7631C7;
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
extern Class_Descriptor cd_S7631C6;
extern VTBL_ENTRY _ZTI7S7631C6[];
extern  VTBL_ENTRY _ZTV7S7631C6[];
static Base_Class bases_S7631C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C8,    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_S7631C7,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7631C6,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S7631C5[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY vtc_S7631C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern VTBL_ENTRY _ZTV7S7631C5[];
static  VTT_ENTRY vtt_S7631C5[] = {
  {&(_ZTV7S7631C5[3]),  3,38},
  {&(_ZTV7S7631C5[23]),  23,38},
};
extern VTBL_ENTRY _ZTI7S7631C5[];
extern  VTBL_ENTRY _ZTV7S7631C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C5[];
Class_Descriptor cd_S7631C5 = {  "S7631C5", // class name
  bases_S7631C5, 3,
  &(vtc_S7631C5[0]), // expected_vtbl_contents
  &(vtt_S7631C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7631C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7631C5),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7631C5),2, //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  S7631C4  : S7631C5 {
  virtual  ~S7631C4(); // _ZN7S7631C4D2Ev
  virtual void  v26(); // _ZN7S7631C43v26Ev
  virtual void  v27(); // _ZN7S7631C43v27Ev
  virtual void  v28(); // _ZN7S7631C43v28Ev
  virtual void  v29(); // _ZN7S7631C43v29Ev
  virtual void  v30(); // _ZN7S7631C43v30Ev
  virtual void  v31(); // _ZN7S7631C43v31Ev
  virtual void  v32(); // _ZN7S7631C43v32Ev
  S7631C4(); // tgen
};
//SIG(-1 S7631C4) C1{ BC2{ VBC3{ BC4{ BC5{ v8 v9 v10 v11 v12} v13 v14 v15 v16 FC5} v17 v18 v19 v20 v21 v22} v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7}


 S7631C4 ::~S7631C4(){ note_dtor("S7631C4", this);}
void  S7631C4 ::v26(){vfunc_called(this, "_ZN7S7631C43v26Ev");}
void  S7631C4 ::v27(){vfunc_called(this, "_ZN7S7631C43v27Ev");}
void  S7631C4 ::v28(){vfunc_called(this, "_ZN7S7631C43v28Ev");}
void  S7631C4 ::v29(){vfunc_called(this, "_ZN7S7631C43v29Ev");}
void  S7631C4 ::v30(){vfunc_called(this, "_ZN7S7631C43v30Ev");}
void  S7631C4 ::v31(){vfunc_called(this, "_ZN7S7631C43v31Ev");}
void  S7631C4 ::v32(){vfunc_called(this, "_ZN7S7631C43v32Ev");}
S7631C4 ::S7631C4(){ note_ctor("S7631C4", this);} // tgen

static void Test_S7631C4()
{
  extern Class_Descriptor cd_S7631C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7631C4, buf);
    S7631C4 *dp, &lv = *(dp=new (buf) S7631C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7631C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C4)");
    check_base_class_offset(lv, (S7631C8*)(S7631C7*)(S7631C6*), ABISELECT(8,4), "S7631C4");
    check_base_class_offset(lv, (S7631C7*)(S7631C6*), ABISELECT(8,4), "S7631C4");
    check_base_class_offset(lv, (S7631C6*)(S7631C5*), ABISELECT(8,4), "S7631C4");
    check_base_class_offset(lv, (S7631C5*), 0, "S7631C4");
    test_class_info(&lv, &cd_S7631C4);
    dp->~S7631C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C4(Test_S7631C4, "S7631C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7631C4C1Ev();
extern void _ZN7S7631C4D2Ev();
Name_Map name_map_S7631C4[] = {
  NSPAIR(_ZN7S7631C4C1Ev),
  NSPAIR(_ZN7S7631C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
extern Class_Descriptor cd_S7631C7;
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
extern Class_Descriptor cd_S7631C6;
extern VTBL_ENTRY _ZTI7S7631C6[];
extern  VTBL_ENTRY _ZTV7S7631C6[];
extern Class_Descriptor cd_S7631C5;
extern VTBL_ENTRY _ZTI7S7631C5[];
extern  VTBL_ENTRY _ZTV7S7631C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C5[];
static Base_Class bases_S7631C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C8,    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_S7631C7,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7631C6,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    17, //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_S7631C5,    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 _ZTI7S7631C4[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C4D1Ev();
extern void _ZN7S7631C4D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY vtc_S7631C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern VTBL_ENTRY _ZTV7S7631C4[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C5__7S7631C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C5__7S7631C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
static  VTT_ENTRY vtt_S7631C4[] = {
  {&(_ZTV7S7631C4[3]),  3,47},
  {&(_tg__ZTV7S7631C5__7S7631C4[3]),  3,6},
  {&(_tg__ZTV7S7631C6__7S7631C5__7S7631C4[17]),  17,32},
  {&(_ZTV7S7631C4[32]),  32,47},
};
extern VTBL_ENTRY _ZTI7S7631C4[];
extern  VTBL_ENTRY _ZTV7S7631C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C4[];
Class_Descriptor cd_S7631C4 = {  "S7631C4", // class name
  bases_S7631C4, 4,
  &(vtc_S7631C4[0]), // expected_vtbl_contents
  &(vtt_S7631C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7631C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7631C4),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7631C4),4, //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  S7631C2  : virtual S7631C3 , S7631C4 {
  int s7631c2f0;
  __tsi64 s7631c2f1[7];
  virtual  ~S7631C2(); // _ZN7S7631C2D2Ev
  S7631C2(); // tgen
};
//SIG(-1 S7631C2) C1{ VBC2{ v1 v2 Fl[5] Fp} BC3{ BC4{ VBC5{ BC6{ BC7{ v3 v4 v5 v6 v7} v8 v9 v10 v11 FC7} v12 v13 v14 v15 v16 v17} v18 v19 v20} vd v21 v22 v23 v24 v25 v26 v27} vd Fi FL[7]}


 S7631C2 ::~S7631C2(){ note_dtor("S7631C2", this);}
S7631C2 ::S7631C2(){ note_ctor("S7631C2", this);} // tgen

static void Test_S7631C2()
{
  extern Class_Descriptor cd_S7631C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S7631C2, buf);
    S7631C2 *dp, &lv = *(dp=new (buf) S7631C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S7631C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C2)");
    check_base_class_offset(lv, (S7631C3*), ABISELECT(72,64), "S7631C2");
    check_base_class_offset(lv, (S7631C8*)(S7631C7*)(S7631C6*), ABISELECT(128,92), "S7631C2");
    check_base_class_offset(lv, (S7631C7*)(S7631C6*), ABISELECT(128,92), "S7631C2");
    check_base_class_offset(lv, (S7631C6*)(S7631C5*)(S7631C4*), ABISELECT(128,92), "S7631C2");
    check_base_class_offset(lv, (S7631C5*)(S7631C4*), 0, "S7631C2");
    check_base_class_offset(lv, (S7631C4*), 0, "S7631C2");
    check_field_offset(lv, s7631c2f0, ABISELECT(8,4), "S7631C2.s7631c2f0");
    check_field_offset(lv, s7631c2f1, ABISELECT(16,8), "S7631C2.s7631c2f1");
    test_class_info(&lv, &cd_S7631C2);
    dp->~S7631C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C2(Test_S7631C2, "S7631C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S7631C2C1Ev();
extern void _ZN7S7631C2D2Ev();
Name_Map name_map_S7631C2[] = {
  NSPAIR(_ZN7S7631C2C1Ev),
  NSPAIR(_ZN7S7631C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C3;
extern VTBL_ENTRY _ZTI7S7631C3[];
extern  VTBL_ENTRY _ZTV7S7631C3[];
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
extern Class_Descriptor cd_S7631C7;
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
extern Class_Descriptor cd_S7631C6;
extern VTBL_ENTRY _ZTI7S7631C6[];
extern  VTBL_ENTRY _ZTV7S7631C6[];
extern Class_Descriptor cd_S7631C5;
extern VTBL_ENTRY _ZTI7S7631C5[];
extern  VTBL_ENTRY _ZTV7S7631C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C5[];
extern Class_Descriptor cd_S7631C4;
extern VTBL_ENTRY _ZTI7S7631C4[];
extern  VTBL_ENTRY _ZTV7S7631C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C4[];
static Base_Class bases_S7631C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C3,    ABISELECT(72,64), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7631C8,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7631C7,    ABISELECT(128,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7631C6,    ABISELECT(128,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7631C5,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7631C4,    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 _ZTI7S7631C2[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C2D1Ev();
extern void _ZN7S7631C2D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
extern void _ZN7S7631C32v6Ev();
extern void _ZN7S7631C32v7Ev();
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY vtc_S7631C2[] = {
  ABISELECT(72,64),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7631C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern VTBL_ENTRY _ZTV7S7631C2[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C4D1Ev();
extern void _ZN7S7631C4D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C4__7S7631C2[] = {
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
};
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C57S7631C4__7S7631C2[] = {
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C57S7631C4__7S7631C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C4__7S7631C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
static  VTT_ENTRY vtt_S7631C2[] = {
  {&(_ZTV7S7631C2[4]),  4,54},
  {&(_tg__ZTV7S7631C4__7S7631C2[3]),  3,15},
  {&(_tg__ZTV7S7631C57S7631C4__7S7631C2[3]),  3,6},
  {&(_tg__ZTV7S7631C6__7S7631C57S7631C4__7S7631C2[17]),  17,32},
  {&(_tg__ZTV7S7631C6__7S7631C4__7S7631C2[17]),  17,32},
  {&(_ZTV7S7631C2[20]),  20,54},
  {&(_ZTV7S7631C2[39]),  39,54},
};
extern VTBL_ENTRY _ZTI7S7631C2[];
extern  VTBL_ENTRY _ZTV7S7631C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C2[];
Class_Descriptor cd_S7631C2 = {  "S7631C2", // class name
  bases_S7631C2, 6,
  &(vtc_S7631C2[0]), // expected_vtbl_contents
  &(vtt_S7631C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S7631C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7631C2),54, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7631C2),7, //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  S7631C9  {
  char s7631c9f0;
  virtual void  v33(); // _ZN7S7631C93v33Ev
  virtual void  v34(); // _ZN7S7631C93v34Ev
  virtual void  v35(); // _ZN7S7631C93v35Ev
  virtual void  v36(); // _ZN7S7631C93v36Ev
  virtual void  v37(); // _ZN7S7631C93v37Ev
  virtual void  v38(); // _ZN7S7631C93v38Ev
  ~S7631C9(); // tgen
  S7631C9(); // tgen
};
//SIG(-1 S7631C9) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S7631C9 ::v33(){vfunc_called(this, "_ZN7S7631C93v33Ev");}
void  S7631C9 ::v34(){vfunc_called(this, "_ZN7S7631C93v34Ev");}
void  S7631C9 ::v35(){vfunc_called(this, "_ZN7S7631C93v35Ev");}
void  S7631C9 ::v36(){vfunc_called(this, "_ZN7S7631C93v36Ev");}
void  S7631C9 ::v37(){vfunc_called(this, "_ZN7S7631C93v37Ev");}
void  S7631C9 ::v38(){vfunc_called(this, "_ZN7S7631C93v38Ev");}
S7631C9 ::~S7631C9(){ note_dtor("S7631C9", this);} // tgen
S7631C9 ::S7631C9(){ note_ctor("S7631C9", this);} // tgen

static void Test_S7631C9()
{
  extern Class_Descriptor cd_S7631C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7631C9, buf);
    S7631C9 *dp, &lv = *(dp=new (buf) S7631C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7631C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C9)");
    check_field_offset(lv, s7631c9f0, ABISELECT(8,4), "S7631C9.s7631c9f0");
    test_class_info(&lv, &cd_S7631C9);
    dp->~S7631C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C9(Test_S7631C9, "S7631C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7631C9C1Ev();
extern void _ZN7S7631C9D1Ev();
Name_Map name_map_S7631C9[] = {
  NSPAIR(_ZN7S7631C9C1Ev),
  NSPAIR(_ZN7S7631C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7631C9[];
extern void _ZN7S7631C93v33Ev();
extern void _ZN7S7631C93v34Ev();
extern void _ZN7S7631C93v35Ev();
extern void _ZN7S7631C93v36Ev();
extern void _ZN7S7631C93v37Ev();
extern void _ZN7S7631C93v38Ev();
static  VTBL_ENTRY vtc_S7631C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C9[0]),
  (VTBL_ENTRY)&_ZN7S7631C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v35Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v36Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v37Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v38Ev,
};
extern VTBL_ENTRY _ZTI7S7631C9[];
extern  VTBL_ENTRY _ZTV7S7631C9[];
Class_Descriptor cd_S7631C9 = {  "S7631C9", // class name
  0,0,//no base classes
  &(vtc_S7631C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7631C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7631C9),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  S7631C10_nt  {
  void *s7631c10f0;
  virtual void  v39(); // _ZN11S7631C10_nt3v39Ev
  virtual void  v40(); // _ZN11S7631C10_nt3v40Ev
  virtual void  v41(); // _ZN11S7631C10_nt3v41Ev
  virtual void  v42(); // _ZN11S7631C10_nt3v42Ev
  ~S7631C10_nt(); // tgen
  S7631C10_nt(); // tgen
};
//SIG(1 S7631C10_nt) C1{ v1 v2 v3 v4 Fp}


void  S7631C10_nt ::v39(){vfunc_called(this, "_ZN11S7631C10_nt3v39Ev");}
void  S7631C10_nt ::v40(){vfunc_called(this, "_ZN11S7631C10_nt3v40Ev");}
void  S7631C10_nt ::v41(){vfunc_called(this, "_ZN11S7631C10_nt3v41Ev");}
void  S7631C10_nt ::v42(){vfunc_called(this, "_ZN11S7631C10_nt3v42Ev");}
S7631C10_nt ::~S7631C10_nt(){ note_dtor("S7631C10_nt", this);} // tgen
S7631C10_nt ::S7631C10_nt(){ note_ctor("S7631C10_nt", this);} // tgen

//skip512 S7631C10_nt

#else // __cplusplus

extern void _ZN11S7631C10_ntC1Ev();
extern void _ZN11S7631C10_ntD1Ev();
Name_Map name_map_S7631C10_nt[] = {
  NSPAIR(_ZN11S7631C10_ntC1Ev),
  NSPAIR(_ZN11S7631C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S7631C10_nt[];
extern void _ZN11S7631C10_nt3v39Ev();
extern void _ZN11S7631C10_nt3v40Ev();
extern void _ZN11S7631C10_nt3v41Ev();
extern void _ZN11S7631C10_nt3v42Ev();
static  VTBL_ENTRY vtc_S7631C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7631C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S7631C10_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7631C10_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S7631C10_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S7631C10_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S7631C10_nt[];
VTBL_ENTRY *P__ZTI11S7631C10_nt = _ZTI11S7631C10_nt; 
extern  VTBL_ENTRY _ZTV11S7631C10_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7631C1  : S7631C2 , virtual S7631C9 {
  ::S7631C10_nt s7631c1f0[4];
  virtual void  v1(); // _ZN7S7631C12v1Ev
  virtual void  v2(); // _ZN7S7631C12v2Ev
  virtual void  v3(); // _ZN7S7631C12v3Ev
  virtual void  v4(); // _ZN7S7631C12v4Ev
  virtual void  v5(); // _ZN7S7631C12v5Ev
  ~S7631C1(); // tgen
  S7631C1(); // tgen
};
//SIG(1 S7631C1) C1{ BC2{ VBC3{ v6 v7 Fl[5] Fp} BC4{ BC5{ VBC6{ BC7{ BC8{ v8 v9 v10 v11 v12} v13 v14 v15 v16 FC8} v17 v18 v19 v20 v21 v22} v23 v24 v25} vd v26 v27 v28 v29 v30 v31 v32} vd Fi FL[7]} VBC9{ v33 v34 v35 v36 v37 v38 Fc} v1 v2 v3 v4 v5 FC10{ v39 v40 v41 v42 Fp}[4]}


void  S7631C1 ::v1(){vfunc_called(this, "_ZN7S7631C12v1Ev");}
void  S7631C1 ::v2(){vfunc_called(this, "_ZN7S7631C12v2Ev");}
void  S7631C1 ::v3(){vfunc_called(this, "_ZN7S7631C12v3Ev");}
void  S7631C1 ::v4(){vfunc_called(this, "_ZN7S7631C12v4Ev");}
void  S7631C1 ::v5(){vfunc_called(this, "_ZN7S7631C12v5Ev");}
S7631C1 ::~S7631C1(){ note_dtor("S7631C1", this);} // tgen
S7631C1 ::S7631C1(){ note_ctor("S7631C1", this);} // tgen

static void Test_S7631C1()
{
  extern Class_Descriptor cd_S7631C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,36)];
    init_test(&cd_S7631C1, buf);
    S7631C1 *dp, &lv = *(dp=new (buf) S7631C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,140), "sizeof(S7631C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7631C1)");
    check_base_class_offset(lv, (S7631C3*)(S7631C2*), ABISELECT(136,96), "S7631C1");
    check_base_class_offset(lv, (S7631C8*)(S7631C7*)(S7631C6*), ABISELECT(192,124), "S7631C1");
    check_base_class_offset(lv, (S7631C7*)(S7631C6*), ABISELECT(192,124), "S7631C1");
    check_base_class_offset(lv, (S7631C6*)(S7631C5*)(S7631C4*)(S7631C2*), ABISELECT(192,124), "S7631C1");
    check_base_class_offset(lv, (S7631C5*)(S7631C4*)(S7631C2*), 0, "S7631C1");
    check_base_class_offset(lv, (S7631C4*)(S7631C2*), 0, "S7631C1");
    check_base_class_offset(lv, (S7631C2*), 0, "S7631C1");
    check_base_class_offset(lv, (S7631C9*), ABISELECT(208,132), "S7631C1");
    check_field_offset(lv, s7631c1f0, ABISELECT(72,64), "S7631C1.s7631c1f0");
    test_class_info(&lv, &cd_S7631C1);
    dp->~S7631C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7631C1(Test_S7631C1, "S7631C1", ABISELECT(224,140));

#else // __cplusplus

extern void _ZN7S7631C1C1Ev();
extern void _ZN7S7631C1D1Ev();
Name_Map name_map_S7631C1[] = {
  NSPAIR(_ZN7S7631C1C1Ev),
  NSPAIR(_ZN7S7631C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7631C3;
extern VTBL_ENTRY _ZTI7S7631C3[];
extern  VTBL_ENTRY _ZTV7S7631C3[];
extern Class_Descriptor cd_S7631C8;
extern VTBL_ENTRY _ZTI7S7631C8[];
extern  VTBL_ENTRY _ZTV7S7631C8[];
extern Class_Descriptor cd_S7631C7;
extern VTBL_ENTRY _ZTI7S7631C7[];
extern  VTBL_ENTRY _ZTV7S7631C7[];
extern Class_Descriptor cd_S7631C6;
extern VTBL_ENTRY _ZTI7S7631C6[];
extern  VTBL_ENTRY _ZTV7S7631C6[];
extern Class_Descriptor cd_S7631C5;
extern VTBL_ENTRY _ZTI7S7631C5[];
extern  VTBL_ENTRY _ZTV7S7631C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C5[];
extern Class_Descriptor cd_S7631C4;
extern VTBL_ENTRY _ZTI7S7631C4[];
extern  VTBL_ENTRY _ZTV7S7631C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C4[];
extern Class_Descriptor cd_S7631C2;
extern VTBL_ENTRY _ZTI7S7631C2[];
extern  VTBL_ENTRY _ZTV7S7631C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C2[];
extern Class_Descriptor cd_S7631C9;
extern VTBL_ENTRY _ZTI7S7631C9[];
extern  VTBL_ENTRY _ZTV7S7631C9[];
static Base_Class bases_S7631C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7631C3,    ABISELECT(136,96), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7631C8,    ABISELECT(192,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7631C7,    ABISELECT(192,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7631C6,    ABISELECT(192,124), //bcp->offset
    28, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7631C5,    0, //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
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7631C4,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7631C2,    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},
  {&cd_S7631C9,    ABISELECT(208,132), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //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 _ZTI7S7631C1[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C1D1Ev();
extern void _ZN7S7631C1D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
extern void _ZN7S7631C12v1Ev();
extern void _ZN7S7631C12v2Ev();
extern void _ZN7S7631C12v3Ev();
extern void _ZN7S7631C12v4Ev();
extern void _ZN7S7631C12v5Ev();
extern void _ZN7S7631C32v6Ev();
extern void _ZN7S7631C32v7Ev();
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
extern void _ZN7S7631C93v33Ev();
extern void _ZN7S7631C93v34Ev();
extern void _ZN7S7631C93v35Ev();
extern void _ZN7S7631C93v36Ev();
extern void _ZN7S7631C93v37Ev();
extern void _ZN7S7631C93v38Ev();
static  VTBL_ENTRY vtc_S7631C1[] = {
  ABISELECT(208,132),
  ABISELECT(136,96),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C1[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7631C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7631C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7631C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7631C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7631C12v5Ev,
  0,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI7S7631C1[0]),
  (VTBL_ENTRY)&_ZN7S7631C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7631C32v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7631C1[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI7S7631C1[0]),
  (VTBL_ENTRY)&_ZN7S7631C93v33Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v34Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v35Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v36Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v37Ev,
  (VTBL_ENTRY)&_ZN7S7631C93v38Ev,
};
extern VTBL_ENTRY _ZTV7S7631C1[];
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C2D1Ev();
extern void _ZN7S7631C2D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C2__7S7631C1[] = {
  ABISELECT(136,96),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
};
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
extern void _ZN7S7631C4D1Ev();
extern void _ZN7S7631C4D0Ev();
extern void _ZN7S7631C43v26Ev();
extern void _ZN7S7631C43v27Ev();
extern void _ZN7S7631C43v28Ev();
extern void _ZN7S7631C43v29Ev();
extern void _ZN7S7631C43v30Ev();
extern void _ZN7S7631C43v31Ev();
extern void _ZN7S7631C43v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C47S7631C2__7S7631C1[] = {
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7631C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v26Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v27Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v28Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v29Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v30Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7631C43v32Ev,
};
extern void _ZN7S7631C53v23Ev();
extern void _ZN7S7631C53v24Ev();
extern void _ZN7S7631C53v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C57S7631C47S7631C2__7S7631C1[] = {
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7631C53v25Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C57S7631C47S7631C2__7S7631C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7631C5[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C47S7631C2__7S7631C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7631C4[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
extern void _ZN7S7631C32v6Ev();
extern void _ZN7S7631C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C3__7S7631C2__7S7631C1[] = {
  0,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7631C32v7Ev,
};
extern void _ZN7S7631C82v8Ev();
extern void _ZN7S7631C82v9Ev();
extern void _ZN7S7631C83v10Ev();
extern void _ZN7S7631C83v11Ev();
extern void _ZN7S7631C83v12Ev();
extern void _ZN7S7631C73v13Ev();
extern void _ZN7S7631C73v14Ev();
extern void _ZN7S7631C73v15Ev();
extern void _ZN7S7631C73v16Ev();
extern void _ZN7S7631C63v17Ev();
extern void _ZN7S7631C63v18Ev();
extern void _ZN7S7631C63v19Ev();
extern void _ZN7S7631C63v20Ev();
extern void _ZN7S7631C63v21Ev();
extern void _ZN7S7631C63v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7631C6__7S7631C2__7S7631C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7631C2[0]),
  (VTBL_ENTRY)&_ZN7S7631C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7631C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v10Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v11Ev,
  (VTBL_ENTRY)&_ZN7S7631C83v12Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7631C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v19Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v20Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v21Ev,
  (VTBL_ENTRY)&_ZN7S7631C63v22Ev,
};
static  VTT_ENTRY vtt_S7631C1[] = {
  {&(_ZTV7S7631C1[5]),  5,74},
  {&(_tg__ZTV7S7631C2__7S7631C1[4]),  4,16},
  {&(_tg__ZTV7S7631C47S7631C2__7S7631C1[3]),  3,15},
  {&(_tg__ZTV7S7631C57S7631C47S7631C2__7S7631C1[3]),  3,6},
  {&(_tg__ZTV7S7631C6__7S7631C57S7631C47S7631C2__7S7631C1[17]),  17,32},
  {&(_tg__ZTV7S7631C6__7S7631C47S7631C2__7S7631C1[17]),  17,32},
  {&(_tg__ZTV7S7631C3__7S7631C2__7S7631C1[4]),  4,6},
  {&(_tg__ZTV7S7631C6__7S7631C2__7S7631C1[17]),  17,32},
  {&(_ZTV7S7631C1[26]),  26,74},
  {&(_ZTV7S7631C1[45]),  45,74},
  {&(_ZTV7S7631C1[68]),  68,74},
};
extern VTBL_ENTRY _ZTI7S7631C1[];
extern  VTBL_ENTRY _ZTV7S7631C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7631C1[];
Class_Descriptor cd_S7631C1 = {  "S7631C1", // class name
  bases_S7631C1, 8,
  &(vtc_S7631C1[0]), // expected_vtbl_contents
  &(vtt_S7631C1[0]), // expected_vtt_contents
  ABISELECT(224,140), // object size
  NSPAIRA(_ZTI7S7631C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7631C1),74, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7631C1),11, //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  S19414C3  {
  short s19414c3f0[6];
  virtual void  v9(); // _ZN8S19414C32v9Ev
  virtual void  v10(); // _ZN8S19414C33v10Ev
  ~S19414C3(); // tgen
  S19414C3(); // tgen
};
//SIG(-1 S19414C3) C1{ v1 v2 Fs[6]}


void  S19414C3 ::v9(){vfunc_called(this, "_ZN8S19414C32v9Ev");}
void  S19414C3 ::v10(){vfunc_called(this, "_ZN8S19414C33v10Ev");}
S19414C3 ::~S19414C3(){ note_dtor("S19414C3", this);} // tgen
S19414C3 ::S19414C3(){ note_ctor("S19414C3", this);} // tgen

static void Test_S19414C3()
{
  extern Class_Descriptor cd_S19414C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19414C3, buf);
    S19414C3 *dp, &lv = *(dp=new (buf) S19414C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19414C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C3)");
    check_field_offset(lv, s19414c3f0, ABISELECT(8,4), "S19414C3.s19414c3f0");
    test_class_info(&lv, &cd_S19414C3);
    dp->~S19414C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C3(Test_S19414C3, "S19414C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19414C3C1Ev();
extern void _ZN8S19414C3D1Ev();
Name_Map name_map_S19414C3[] = {
  NSPAIR(_ZN8S19414C3C1Ev),
  NSPAIR(_ZN8S19414C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19414C3[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY vtc_S19414C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C3[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
Class_Descriptor cd_S19414C3 = {  "S19414C3", // class name
  0,0,//no base classes
  &(vtc_S19414C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19414C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19414C3),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  S19414C2  : S19414C3 {
  short s19414c2f0[9];
  __tsi64 s19414c2f1;
  virtual void  v11(); // _ZN8S19414C23v11Ev
  virtual void  v12(); // _ZN8S19414C23v12Ev
  virtual void  v13(); // _ZN8S19414C23v13Ev
  virtual void  v14(); // _ZN8S19414C23v14Ev
  virtual void  v15(); // _ZN8S19414C23v15Ev
  virtual void  v16(); // _ZN8S19414C23v16Ev
  ~S19414C2(); // tgen
  S19414C2(); // tgen
};
//SIG(-1 S19414C2) C1{ BC2{ v7 v8 Fs[6]} v1 v2 v3 v4 v5 v6 Fs[9] FL}


void  S19414C2 ::v11(){vfunc_called(this, "_ZN8S19414C23v11Ev");}
void  S19414C2 ::v12(){vfunc_called(this, "_ZN8S19414C23v12Ev");}
void  S19414C2 ::v13(){vfunc_called(this, "_ZN8S19414C23v13Ev");}
void  S19414C2 ::v14(){vfunc_called(this, "_ZN8S19414C23v14Ev");}
void  S19414C2 ::v15(){vfunc_called(this, "_ZN8S19414C23v15Ev");}
void  S19414C2 ::v16(){vfunc_called(this, "_ZN8S19414C23v16Ev");}
S19414C2 ::~S19414C2(){ note_dtor("S19414C2", this);} // tgen
S19414C2 ::S19414C2(){ note_ctor("S19414C2", this);} // tgen

static void Test_S19414C2()
{
  extern Class_Descriptor cd_S19414C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19414C2, buf);
    S19414C2 *dp, &lv = *(dp=new (buf) S19414C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19414C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C2)");
    check_base_class_offset(lv, (S19414C3*), 0, "S19414C2");
    check_field_offset(lv, s19414c2f0, ABISELECT(20,16), "S19414C2.s19414c2f0");
    check_field_offset(lv, s19414c2f1, ABISELECT(40,36), "S19414C2.s19414c2f1");
    test_class_info(&lv, &cd_S19414C2);
    dp->~S19414C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C2(Test_S19414C2, "S19414C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19414C2C1Ev();
extern void _ZN8S19414C2D1Ev();
Name_Map name_map_S19414C2[] = {
  NSPAIR(_ZN8S19414C2C1Ev),
  NSPAIR(_ZN8S19414C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
static Base_Class bases_S19414C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19414C2[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY vtc_S19414C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C2[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
Class_Descriptor cd_S19414C2 = {  "S19414C2", // class name
  bases_S19414C2, 1,
  &(vtc_S19414C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19414C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19414C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19414C6  : S19414C3 {
  void *s19414c6f0;
  virtual void  v17(); // _ZN8S19414C63v17Ev
  virtual void  v18(); // _ZN8S19414C63v18Ev
  ~S19414C6(); // tgen
  S19414C6(); // tgen
};
//SIG(-1 S19414C6) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S19414C6 ::v17(){vfunc_called(this, "_ZN8S19414C63v17Ev");}
void  S19414C6 ::v18(){vfunc_called(this, "_ZN8S19414C63v18Ev");}
S19414C6 ::~S19414C6(){ note_dtor("S19414C6", this);} // tgen
S19414C6 ::S19414C6(){ note_ctor("S19414C6", this);} // tgen

static void Test_S19414C6()
{
  extern Class_Descriptor cd_S19414C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19414C6, buf);
    S19414C6 *dp, &lv = *(dp=new (buf) S19414C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19414C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C6)");
    check_base_class_offset(lv, (S19414C3*), 0, "S19414C6");
    check_field_offset(lv, s19414c6f0, ABISELECT(24,16), "S19414C6.s19414c6f0");
    test_class_info(&lv, &cd_S19414C6);
    dp->~S19414C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C6(Test_S19414C6, "S19414C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19414C6C1Ev();
extern void _ZN8S19414C6D1Ev();
Name_Map name_map_S19414C6[] = {
  NSPAIR(_ZN8S19414C6C1Ev),
  NSPAIR(_ZN8S19414C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
static Base_Class bases_S19414C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19414C6[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY vtc_S19414C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C6[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
Class_Descriptor cd_S19414C6 = {  "S19414C6", // class name
  bases_S19414C6, 1,
  &(vtc_S19414C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19414C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19414C6),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  S19414C5  : S19414C6 , virtual S19414C2 , virtual S19414C3 {
  virtual void  v19(); // _ZN8S19414C53v19Ev
  virtual void  v20(); // _ZN8S19414C53v20Ev
  virtual void  v21(); // _ZN8S19414C53v21Ev
  virtual void  v22(); // _ZN8S19414C53v22Ev
  virtual void  v23(); // _ZN8S19414C53v23Ev
  ~S19414C5(); // tgen
  S19414C5(); // tgen
};
//SIG(-1 S19414C5) C1{ BC2{ BC3{ v6 v7 Fs[6]} v8 v9 Fp} VBC4{ BC3 v10 v11 v12 v13 v14 v15 Fs[9] FL} VBC3 v1 v2 v3 v4 v5}


void  S19414C5 ::v19(){vfunc_called(this, "_ZN8S19414C53v19Ev");}
void  S19414C5 ::v20(){vfunc_called(this, "_ZN8S19414C53v20Ev");}
void  S19414C5 ::v21(){vfunc_called(this, "_ZN8S19414C53v21Ev");}
void  S19414C5 ::v22(){vfunc_called(this, "_ZN8S19414C53v22Ev");}
void  S19414C5 ::v23(){vfunc_called(this, "_ZN8S19414C53v23Ev");}
S19414C5 ::~S19414C5(){ note_dtor("S19414C5", this);} // tgen
S19414C5 ::S19414C5(){ note_ctor("S19414C5", this);} // tgen

static void Test_S19414C5()
{
  extern Class_Descriptor cd_S19414C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S19414C5, buf);
    S19414C5 *dp, &lv = *(dp=new (buf) S19414C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S19414C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C5)");
    check_base_class_offset(lv, (S19414C3*)(S19414C6*), 0, "S19414C5");
    check_base_class_offset(lv, (S19414C6*), 0, "S19414C5");
    check_base_class_offset(lv, (S19414C3*)(S19414C2*), ABISELECT(32,20), "S19414C5");
    check_base_class_offset(lv, (S19414C2*), ABISELECT(32,20), "S19414C5");
    /*is_ambiguous_... S19414C5::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*), ABISELECT(80,64), "S19414C5");
    test_class_info(&lv, &cd_S19414C5);
    dp->~S19414C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C5(Test_S19414C5, "S19414C5", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN8S19414C5C1Ev();
extern void _ZN8S19414C5D1Ev();
Name_Map name_map_S19414C5[] = {
  NSPAIR(_ZN8S19414C5C1Ev),
  NSPAIR(_ZN8S19414C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
static Base_Class bases_S19414C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S19414C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19414C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //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_S19414C3,    ABISELECT(80,64), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //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 _ZTI8S19414C5[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY vtc_S19414C5[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S19414C5[];
static  VTT_ENTRY vtt_S19414C5[] = {
  {&(_ZTV8S19414C5[4]),  4,37},
  {&(_ZTV8S19414C5[23]),  23,37},
  {&(_ZTV8S19414C5[35]),  35,37},
};
extern VTBL_ENTRY _ZTI8S19414C5[];
extern  VTBL_ENTRY _ZTV8S19414C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C5[];
Class_Descriptor cd_S19414C5 = {  "S19414C5", // class name
  bases_S19414C5, 5,
  &(vtc_S19414C5[0]), // expected_vtbl_contents
  &(vtt_S19414C5[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI8S19414C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19414C5),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19414C5),3, //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  S19414C7  : S19414C2 , virtual S19414C3 , virtual S19414C5 , virtual S19414C6 {
  int s19414c7f0;
  virtual  ~S19414C7(); // _ZN8S19414C7D2Ev
  virtual void  v24(); // _ZN8S19414C73v24Ev
  S19414C7(); // tgen
};
//SIG(-1 S19414C7) C1{ BC2{ BC3{ v2 v3 Fs[6]} v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC3 VBC4{ BC5{ BC3 v10 v11 Fp} VBC2 VBC3 v12 v13 v14 v15 v16} VBC5 vd v1 Fi}


 S19414C7 ::~S19414C7(){ note_dtor("S19414C7", this);}
void  S19414C7 ::v24(){vfunc_called(this, "_ZN8S19414C73v24Ev");}
S19414C7 ::S19414C7(){ note_ctor("S19414C7", this);} // tgen

static void Test_S19414C7()
{
  extern Class_Descriptor cd_S19414C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,38)];
    init_test(&cd_S19414C7, buf);
    S19414C7 *dp, &lv = *(dp=new (buf) S19414C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,148), "sizeof(S19414C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C7)");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*), 0, "S19414C7");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*), 0, "S19414C7");
    /*is_ambiguous_... S19414C7::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*), ABISELECT(56,48), "S19414C7");
    /*is_ambiguous_... S19414C5::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C5*), ABISELECT(56,48), "S19414C7");
    check_base_class_offset(lv, (S19414C3*)(S19414C6*)(S19414C5*), ABISELECT(80,64), "S19414C7");
    check_base_class_offset(lv, (S19414C6*)(S19414C5*), ABISELECT(80,64), "S19414C7");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*), ABISELECT(112,84), "S19414C7");
    check_base_class_offset(lv, (S19414C2*)(S19414C5*), ABISELECT(112,84), "S19414C7");
    check_base_class_offset(lv, (S19414C5*), ABISELECT(80,64), "S19414C7");
    /*is_ambiguous_... S19414C7::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C6*), ABISELECT(160,128), "S19414C7");
    /*is_ambiguous_... S19414C7::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C6*), ABISELECT(160,128), "S19414C7");
    check_field_offset(lv, s19414c7f0, ABISELECT(48,44), "S19414C7.s19414c7f0");
    test_class_info(&lv, &cd_S19414C7);
    dp->~S19414C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C7(Test_S19414C7, "S19414C7", ABISELECT(192,148));

#else // __cplusplus

extern void _ZN8S19414C7C1Ev();
extern void _ZN8S19414C7D2Ev();
Name_Map name_map_S19414C7[] = {
  NSPAIR(_ZN8S19414C7C1Ev),
  NSPAIR(_ZN8S19414C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C5;
extern VTBL_ENTRY _ZTI8S19414C5[];
extern  VTBL_ENTRY _ZTV8S19414C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C5[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
static Base_Class bases_S19414C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S19414C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19414C3,    ABISELECT(56,48), //bcp->offset
    17, //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_S19414C3,    ABISELECT(80,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(80,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(112,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(112,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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
    7, //immediately_derived
  0, 1},
  {&cd_S19414C5,    ABISELECT(80,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19414C3,    ABISELECT(160,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(160,128), //bcp->offset
    63, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19414C7[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C7D1Ev();
extern void _ZN8S19414C7D0Ev();
extern void _ZN8S19414C73v24Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY vtc_S19414C7[] = {
  ABISELECT(160,128),
  ABISELECT(112,84),
  ABISELECT(80,64),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
extern VTBL_ENTRY _ZTV8S19414C7[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C7[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__8S19414C5__8S19414C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A2__8S19414C5__8S19414C7[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
static  VTT_ENTRY vtt_S19414C7[] = {
  {&(_ZTV8S19414C7[6]),  6,73},
  {&(_ZTV8S19414C7[21]),  21,73},
  {&(_ZTV8S19414C7[36]),  36,73},
  {&(_ZTV8S19414C7[55]),  55,73},
  {&(_ZTV8S19414C7[69]),  69,73},
  {&(_tg__ZTV8S19414C5__8S19414C7[4]),  4,13},
  {&(_tg__ZTV8S19414C2__8S19414C5__8S19414C7[10]),  10,18},
  {&(_tg__ZTV8S19414C3__A2__8S19414C5__8S19414C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19414C7[];
extern  VTBL_ENTRY _ZTV8S19414C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C7[];
Class_Descriptor cd_S19414C7 = {  "S19414C7", // class name
  bases_S19414C7, 10,
  &(vtc_S19414C7[0]), // expected_vtbl_contents
  &(vtt_S19414C7[0]), // expected_vtt_contents
  ABISELECT(192,148), // object size
  NSPAIRA(_ZTI8S19414C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19414C7),73, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19414C7),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19414C4  : S19414C3 , virtual S19414C2 , virtual S19414C5 , virtual S19414C7 , S19414C6 {
  virtual  ~S19414C4(); // _ZN8S19414C4D2Ev
  virtual void  v25(); // _ZN8S19414C43v25Ev
  S19414C4(); // tgen
};
//SIG(-1 S19414C4) C1{ BC2{ v2 v3 Fs[6]} VBC3{ BC2 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC4{ BC5{ BC2 v10 v11 Fp} VBC3 VBC2 v12 v13 v14 v15 v16} VBC6{ BC3 VBC2 VBC4 VBC5 vd v17 Fi} BC5 vd v1}


 S19414C4 ::~S19414C4(){ note_dtor("S19414C4", this);}
void  S19414C4 ::v25(){vfunc_called(this, "_ZN8S19414C43v25Ev");}
S19414C4 ::S19414C4(){ note_ctor("S19414C4", this);} // tgen

static void Test_S19414C4()
{
  extern Class_Descriptor cd_S19414C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S19414C4, buf);
    S19414C4 *dp, &lv = *(dp=new (buf) S19414C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S19414C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C4)");
    /*is_ambiguous_... S19414C4::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*), 0, "S19414C4");
    /*is_ambiguous_... S19414C4::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*), ABISELECT(56,36), "S19414C4");
    /*is_ambiguous_... S19414C4::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*), ABISELECT(56,36), "S19414C4");
    check_base_class_offset(lv, (S19414C2*)(S19414C5*), ABISELECT(56,36), "S19414C4");
    check_base_class_offset(lv, (S19414C3*)(S19414C6*)(S19414C5*), ABISELECT(104,80), "S19414C4");
    check_base_class_offset(lv, (S19414C6*)(S19414C5*), ABISELECT(104,80), "S19414C4");
    /*is_ambiguous_... S19414C5::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C5*), ABISELECT(136,100), "S19414C4");
    /*is_ambiguous_... S19414C7::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C7*), ABISELECT(136,100), "S19414C4");
    check_base_class_offset(lv, (S19414C5*), ABISELECT(104,80), "S19414C4");
    check_base_class_offset(lv, (S19414C5*)(S19414C7*), ABISELECT(104,80), "S19414C4");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*)(S19414C7*), ABISELECT(160,116), "S19414C4");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*)(S19414C7*), ABISELECT(160,116), "S19414C4");
    /*is_ambiguous_... S19414C4::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C6*), ABISELECT(216,164), "S19414C4");
    /*is_ambiguous_... S19414C7::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C6*)(S19414C7*), ABISELECT(216,164), "S19414C4");
    check_base_class_offset(lv, (S19414C7*), ABISELECT(160,116), "S19414C4");
    /*is_ambiguous_... S19414C4::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C6*), ABISELECT(24,16), "S19414C4");
    /*is_ambiguous_... S19414C4::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C6*), ABISELECT(24,16), "S19414C4");
    test_class_info(&lv, &cd_S19414C4);
    dp->~S19414C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C4(Test_S19414C4, "S19414C4", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN8S19414C4C1Ev();
extern void _ZN8S19414C4D2Ev();
Name_Map name_map_S19414C4[] = {
  NSPAIR(_ZN8S19414C4C1Ev),
  NSPAIR(_ZN8S19414C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C5;
extern VTBL_ENTRY _ZTI8S19414C5[];
extern  VTBL_ENTRY _ZTV8S19414C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C5[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C7;
extern VTBL_ENTRY _ZTI8S19414C7[];
extern  VTBL_ENTRY _ZTV8S19414C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C7[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
static Base_Class bases_S19414C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19414C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(56,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //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_S19414C3,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(136,100), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S19414C5,    ABISELECT(104,80), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19414C3,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(216,164), //bcp->offset
    91, //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
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19414C7,    ABISELECT(160,116), //bcp->offset
    64, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19414C3,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(24,16), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19414C4[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C4D1Ev();
extern void _ZN8S19414C4D0Ev();
extern void _ZN8S19414C43v25Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S19414C4D1Ev,_ZThn116_N8S19414C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S19414C4D0Ev,_ZThn116_N8S19414C4D0Ev)() __attribute__((weak));
extern void _ZN8S19414C73v24Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY vtc_S19414C4[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C43v25Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
extern VTBL_ENTRY _ZTV8S19414C4[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C4[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__8S19414C5__8S19414C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A2__8S19414C5__8S19414C4[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C7D1Ev();
extern void _ZN8S19414C7D0Ev();
extern void _ZN8S19414C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C7__8S19414C4[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A1__8S19414C7__8S19414C4[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C7__8S19414C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__A1__8S19414C7__8S19414C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C6__A1__8S19414C7__8S19414C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
static  VTT_ENTRY vtt_S19414C4[] = {
  {&(_ZTV8S19414C4[7]),  7,101},
  {&(_ZTV8S19414C4[28]),  28,101},
  {&(_ZTV8S19414C4[49]),  49,101},
  {&(_ZTV8S19414C4[62]),  62,101},
  {&(_ZTV8S19414C4[80]),  80,101},
  {&(_ZTV8S19414C4[97]),  97,101},
  {&(_tg__ZTV8S19414C5__8S19414C4[4]),  4,13},
  {&(_tg__ZTV8S19414C2__8S19414C5__8S19414C4[10]),  10,18},
  {&(_tg__ZTV8S19414C3__A2__8S19414C5__8S19414C4[4]),  4,6},
  {&(_tg__ZTV8S19414C7__8S19414C4[6]),  6,17},
  {&(_tg__ZTV8S19414C3__A1__8S19414C7__8S19414C4[4]),  4,6},
  {&(_tg__ZTV8S19414C5__8S19414C7__8S19414C4[13]),  13,22},
  {&(_tg__ZTV8S19414C2__A1__8S19414C7__8S19414C4[10]),  10,18},
  {&(_tg__ZTV8S19414C6__A1__8S19414C7__8S19414C4[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19414C4[];
extern  VTBL_ENTRY _ZTV8S19414C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C4[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C4D0Ev,_ZThn116_N8S19414C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C4D1Ev,_ZThn116_N8S19414C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19414C4 = {  "S19414C4", // class name
  bases_S19414C4, 14,
  &(vtc_S19414C4[0]), // expected_vtbl_contents
  &(vtt_S19414C4[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI8S19414C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19414C4),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19414C4),14, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19414C8  {
  void *s19414c8f0;
  virtual void  v26(); // _ZN8S19414C83v26Ev
  virtual void  v27(); // _ZN8S19414C83v27Ev
  virtual void  v28(); // _ZN8S19414C83v28Ev
  virtual void  v29(); // _ZN8S19414C83v29Ev
  ~S19414C8(); // tgen
  S19414C8(); // tgen
};
//SIG(-1 S19414C8) C1{ v1 v2 v3 v4 Fp}


void  S19414C8 ::v26(){vfunc_called(this, "_ZN8S19414C83v26Ev");}
void  S19414C8 ::v27(){vfunc_called(this, "_ZN8S19414C83v27Ev");}
void  S19414C8 ::v28(){vfunc_called(this, "_ZN8S19414C83v28Ev");}
void  S19414C8 ::v29(){vfunc_called(this, "_ZN8S19414C83v29Ev");}
S19414C8 ::~S19414C8(){ note_dtor("S19414C8", this);} // tgen
S19414C8 ::S19414C8(){ note_ctor("S19414C8", this);} // tgen

static void Test_S19414C8()
{
  extern Class_Descriptor cd_S19414C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19414C8, buf);
    S19414C8 *dp, &lv = *(dp=new (buf) S19414C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19414C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C8)");
    check_field_offset(lv, s19414c8f0, ABISELECT(8,4), "S19414C8.s19414c8f0");
    test_class_info(&lv, &cd_S19414C8);
    dp->~S19414C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C8(Test_S19414C8, "S19414C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19414C8C1Ev();
extern void _ZN8S19414C8D1Ev();
Name_Map name_map_S19414C8[] = {
  NSPAIR(_ZN8S19414C8C1Ev),
  NSPAIR(_ZN8S19414C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19414C8[];
extern void _ZN8S19414C83v26Ev();
extern void _ZN8S19414C83v27Ev();
extern void _ZN8S19414C83v28Ev();
extern void _ZN8S19414C83v29Ev();
static  VTBL_ENTRY vtc_S19414C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C8[0]),
  (VTBL_ENTRY)&_ZN8S19414C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v29Ev,
};
extern VTBL_ENTRY _ZTI8S19414C8[];
extern  VTBL_ENTRY _ZTV8S19414C8[];
Class_Descriptor cd_S19414C8 = {  "S19414C8", // class name
  0,0,//no base classes
  &(vtc_S19414C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19414C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19414C8),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  S19414C1  : virtual S19414C2 , S19414C4 , virtual S19414C8 {
  virtual  ~S19414C1(); // _ZN8S19414C1D2Ev
  virtual void  v1(); // _ZN8S19414C12v1Ev
  virtual void  v2(); // _ZN8S19414C12v2Ev
  virtual void  v3(); // _ZN8S19414C12v3Ev
  virtual void  v4(); // _ZN8S19414C12v4Ev
  virtual void  v5(); // _ZN8S19414C12v5Ev
  virtual void  v6(); // _ZN8S19414C12v6Ev
  virtual void  v7(); // _ZN8S19414C12v7Ev
  virtual void  v8(); // _ZN8S19414C12v8Ev
  S19414C1(); // tgen
};
//SIG(1 S19414C1) C1{ VBC2{ BC3{ v9 v10 Fs[6]} v11 v12 v13 v14 v15 v16 Fs[9] FL} BC4{ BC3 VBC2 VBC5{ BC6{ BC3 v17 v18 Fp} VBC2 VBC3 v19 v20 v21 v22 v23} VBC7{ BC2 VBC3 VBC5 VBC6 vd v24 Fi} BC6 vd v25} VBC8{ v26 v27 v28 v29 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S19414C1 ::~S19414C1(){ note_dtor("S19414C1", this);}
void  S19414C1 ::v1(){vfunc_called(this, "_ZN8S19414C12v1Ev");}
void  S19414C1 ::v2(){vfunc_called(this, "_ZN8S19414C12v2Ev");}
void  S19414C1 ::v3(){vfunc_called(this, "_ZN8S19414C12v3Ev");}
void  S19414C1 ::v4(){vfunc_called(this, "_ZN8S19414C12v4Ev");}
void  S19414C1 ::v5(){vfunc_called(this, "_ZN8S19414C12v5Ev");}
void  S19414C1 ::v6(){vfunc_called(this, "_ZN8S19414C12v6Ev");}
void  S19414C1 ::v7(){vfunc_called(this, "_ZN8S19414C12v7Ev");}
void  S19414C1 ::v8(){vfunc_called(this, "_ZN8S19414C12v8Ev");}
S19414C1 ::S19414C1(){ note_ctor("S19414C1", this);} // tgen

static void Test_S19414C1()
{
  extern Class_Descriptor cd_S19414C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,49)];
    init_test(&cd_S19414C1, buf);
    S19414C1 *dp, &lv = *(dp=new (buf) S19414C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,192), "sizeof(S19414C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19414C1)");
    /*is_ambiguous_... S19414C1::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*), ABISELECT(56,36), "S19414C1");
    /*is_ambiguous_... S19414C1::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*), ABISELECT(56,36), "S19414C1");
    /*is_ambiguous_... S19414C4::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*)(S19414C4*), ABISELECT(56,36), "S19414C1");
    check_base_class_offset(lv, (S19414C2*)(S19414C5*), ABISELECT(56,36), "S19414C1");
    /*is_ambiguous_... S19414C4::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C4*), 0, "S19414C1");
    check_base_class_offset(lv, (S19414C3*)(S19414C6*)(S19414C5*), ABISELECT(104,80), "S19414C1");
    check_base_class_offset(lv, (S19414C6*)(S19414C5*), ABISELECT(104,80), "S19414C1");
    /*is_ambiguous_... S19414C5::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C5*), ABISELECT(136,100), "S19414C1");
    /*is_ambiguous_... S19414C7::S19414C3 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C7*), ABISELECT(136,100), "S19414C1");
    check_base_class_offset(lv, (S19414C5*)(S19414C4*), ABISELECT(104,80), "S19414C1");
    check_base_class_offset(lv, (S19414C5*)(S19414C7*), ABISELECT(104,80), "S19414C1");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C2*)(S19414C7*), ABISELECT(160,116), "S19414C1");
    /*is_ambiguous_... S19414C7::S19414C2 */ AMB_check_base_class_offset(lv, (S19414C2*)(S19414C7*), ABISELECT(160,116), "S19414C1");
    /*is_ambiguous_... S19414C1::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C6*), ABISELECT(216,164), "S19414C1");
    /*is_ambiguous_... S19414C7::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C6*)(S19414C7*), ABISELECT(216,164), "S19414C1");
    check_base_class_offset(lv, (S19414C7*)(S19414C4*), ABISELECT(160,116), "S19414C1");
    /*is_ambiguous_... S19414C4::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C3*)(S19414C6*)(S19414C4*), ABISELECT(24,16), "S19414C1");
    /*is_ambiguous_... S19414C4::S19414C6 */ AMB_check_base_class_offset(lv, (S19414C6*)(S19414C4*), ABISELECT(24,16), "S19414C1");
    check_base_class_offset(lv, (S19414C4*), 0, "S19414C1");
    check_base_class_offset(lv, (S19414C8*), ABISELECT(248,184), "S19414C1");
    test_class_info(&lv, &cd_S19414C1);
    dp->~S19414C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19414C1(Test_S19414C1, "S19414C1", ABISELECT(264,192));

#else // __cplusplus

extern void _ZN8S19414C1C1Ev();
extern void _ZN8S19414C1D2Ev();
Name_Map name_map_S19414C1[] = {
  NSPAIR(_ZN8S19414C1C1Ev),
  NSPAIR(_ZN8S19414C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C5;
extern VTBL_ENTRY _ZTI8S19414C5[];
extern  VTBL_ENTRY _ZTV8S19414C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C5[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C2;
extern VTBL_ENTRY _ZTI8S19414C2[];
extern  VTBL_ENTRY _ZTV8S19414C2[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C7;
extern VTBL_ENTRY _ZTI8S19414C7[];
extern  VTBL_ENTRY _ZTV8S19414C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C7[];
extern Class_Descriptor cd_S19414C3;
extern VTBL_ENTRY _ZTI8S19414C3[];
extern  VTBL_ENTRY _ZTV8S19414C3[];
extern Class_Descriptor cd_S19414C6;
extern VTBL_ENTRY _ZTI8S19414C6[];
extern  VTBL_ENTRY _ZTV8S19414C6[];
extern Class_Descriptor cd_S19414C4;
extern VTBL_ENTRY _ZTI8S19414C4[];
extern  VTBL_ENTRY _ZTV8S19414C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C4[];
extern Class_Descriptor cd_S19414C8;
extern VTBL_ENTRY _ZTI8S19414C8[];
extern  VTBL_ENTRY _ZTV8S19414C8[];
static Base_Class bases_S19414C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19414C3,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(56,36), //bcp->offset
    27, //bcp->virtual_function_table_offset
    10, //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_S19414C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(136,100), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //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, 1},
  {&cd_S19414C5,    ABISELECT(104,80), //bcp->offset
    45, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19414C3,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19414C2,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19414C3,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(216,164), //bcp->offset
    100, //bcp->virtual_function_table_offset
    6, //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
    11, //immediately_derived
  0, 1},
  {&cd_S19414C7,    ABISELECT(160,116), //bcp->offset
    73, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19414C3,    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
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19414C6,    ABISELECT(24,16), //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
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19414C4,    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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19414C8,    ABISELECT(248,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19414C1[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C1D1Ev();
extern void _ZN8S19414C1D0Ev();
extern void _ZN8S19414C43v25Ev();
extern void _ZN8S19414C12v1Ev();
extern void _ZN8S19414C12v2Ev();
extern void _ZN8S19414C12v3Ev();
extern void _ZN8S19414C12v4Ev();
extern void _ZN8S19414C12v5Ev();
extern void _ZN8S19414C12v6Ev();
extern void _ZN8S19414C12v7Ev();
extern void _ZN8S19414C12v8Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void ABISELECT(_ZTv0_n120_N8S19414C1D1Ev,_ZTv0_n60_N8S19414C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S19414C1D1Ev,_ZThn116_N8S19414C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19414C1D0Ev,_ZTv0_n60_N8S19414C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S19414C1D0Ev,_ZThn116_N8S19414C1D0Ev)() __attribute__((weak));
extern void _ZN8S19414C73v24Ev();
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C83v26Ev();
extern void _ZN8S19414C83v27Ev();
extern void _ZN8S19414C83v28Ev();
extern void _ZN8S19414C83v29Ev();
static  VTBL_ENTRY vtc_S19414C1[] = {
  ABISELECT(248,184),
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C43v25Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19414C12v8Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C1D1Ev,_ZTv0_n60_N8S19414C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C1D0Ev,_ZTv0_n60_N8S19414C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-248,-184),
  (VTBL_ENTRY)&(_ZTI8S19414C1[0]),
  (VTBL_ENTRY)&_ZN8S19414C83v26Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v27Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19414C83v29Ev,
};
extern VTBL_ENTRY _ZTV8S19414C1[];
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C4D1Ev();
extern void _ZN8S19414C4D0Ev();
extern void _ZN8S19414C43v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C4__8S19414C1[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C43v25Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__8S19414C4__8S19414C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C4__8S19414C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A3__8S19414C4__8S19414C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S19414C4D1Ev,_ZThn116_N8S19414C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S19414C4D0Ev,_ZThn116_N8S19414C4D0Ev)() __attribute__((weak));
extern void _ZN8S19414C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C7__8S19414C4__8S19414C1[] = {
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C6__A1__8S19414C4__8S19414C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S19414C4[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__8S19414C5__8S19414C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A2__8S19414C5__8S19414C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19414C5[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
extern void _ZN8S19414C7D1Ev();
extern void _ZN8S19414C7D0Ev();
extern void _ZN8S19414C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C7__8S19414C1[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19414C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19414C73v24Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C3__A1__8S19414C7__8S19414C1[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
extern void _ZN8S19414C53v19Ev();
extern void _ZN8S19414C53v20Ev();
extern void _ZN8S19414C53v21Ev();
extern void _ZN8S19414C53v22Ev();
extern void _ZN8S19414C53v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C5__8S19414C7__8S19414C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19414C53v23Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C23v11Ev();
extern void _ZN8S19414C23v12Ev();
extern void _ZN8S19414C23v13Ev();
extern void _ZN8S19414C23v14Ev();
extern void _ZN8S19414C23v15Ev();
extern void _ZN8S19414C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C2__A1__8S19414C7__8S19414C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19414C23v16Ev,
};
extern void _ZN8S19414C32v9Ev();
extern void _ZN8S19414C33v10Ev();
extern void _ZN8S19414C63v17Ev();
extern void _ZN8S19414C63v18Ev();
static  VTBL_ENTRY _tg__ZTV8S19414C6__A1__8S19414C7__8S19414C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S19414C7[0]),
  (VTBL_ENTRY)&_ZN8S19414C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19414C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19414C63v18Ev,
};
static  VTT_ENTRY vtt_S19414C1[] = {
  {&(_ZTV8S19414C1[8]),  8,120},
  {&(_tg__ZTV8S19414C4__8S19414C1[7]),  7,12},
  {&(_tg__ZTV8S19414C2__8S19414C4__8S19414C1[10]),  10,18},
  {&(_tg__ZTV8S19414C5__8S19414C4__8S19414C1[13]),  13,22},
  {&(_tg__ZTV8S19414C3__A3__8S19414C4__8S19414C1[4]),  4,6},
  {&(_tg__ZTV8S19414C7__8S19414C4__8S19414C1[16]),  16,27},
  {&(_tg__ZTV8S19414C6__A1__8S19414C4__8S19414C1[6]),  6,10},
  {&(_ZTV8S19414C1[37]),  37,120},
  {&(_ZTV8S19414C1[58]),  58,120},
  {&(_ZTV8S19414C1[71]),  71,120},
  {&(_ZTV8S19414C1[89]),  89,120},
  {&(_ZTV8S19414C1[106]),  106,120},
  {&(_ZTV8S19414C1[116]),  116,120},
  {&(_tg__ZTV8S19414C5__8S19414C1[4]),  4,13},
  {&(_tg__ZTV8S19414C2__8S19414C5__8S19414C1[10]),  10,18},
  {&(_tg__ZTV8S19414C3__A2__8S19414C5__8S19414C1[4]),  4,6},
  {&(_tg__ZTV8S19414C7__8S19414C1[6]),  6,17},
  {&(_tg__ZTV8S19414C3__A1__8S19414C7__8S19414C1[4]),  4,6},
  {&(_tg__ZTV8S19414C5__8S19414C7__8S19414C1[13]),  13,22},
  {&(_tg__ZTV8S19414C2__A1__8S19414C7__8S19414C1[10]),  10,18},
  {&(_tg__ZTV8S19414C6__A1__8S19414C7__8S19414C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19414C1[];
extern  VTBL_ENTRY _ZTV8S19414C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19414C1[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C4D0Ev,_ZTv0_n60_N8S19414C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C4D0Ev,_ZThn116_N8S19414C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C4D1Ev,_ZTv0_n60_N8S19414C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C4D1Ev,_ZThn116_N8S19414C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C1D0Ev,_ZTv0_n60_N8S19414C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C1D0Ev,_ZThn116_N8S19414C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19414C1D1Ev,_ZTv0_n60_N8S19414C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19414C1D1Ev,_ZThn116_N8S19414C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19414C1 = {  "S19414C1", // class name
  bases_S19414C1, 16,
  &(vtc_S19414C1[0]), // expected_vtbl_contents
  &(vtt_S19414C1[0]), // expected_vtt_contents
  ABISELECT(264,192), // object size
  NSPAIRA(_ZTI8S19414C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19414C1),120, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19414C1),21, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1446C4  {
  short s1446c4f0[6];
  virtual void  v5(); // _ZN7S1446C42v5Ev
  virtual void  v6(); // _ZN7S1446C42v6Ev
  ~S1446C4(); // tgen
  S1446C4(); // tgen
};
//SIG(-1 S1446C4) C1{ v1 v2 Fs[6]}


void  S1446C4 ::v5(){vfunc_called(this, "_ZN7S1446C42v5Ev");}
void  S1446C4 ::v6(){vfunc_called(this, "_ZN7S1446C42v6Ev");}
S1446C4 ::~S1446C4(){ note_dtor("S1446C4", this);} // tgen
S1446C4 ::S1446C4(){ note_ctor("S1446C4", this);} // tgen

static void Test_S1446C4()
{
  extern Class_Descriptor cd_S1446C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1446C4, buf);
    S1446C4 *dp, &lv = *(dp=new (buf) S1446C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1446C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C4)");
    check_field_offset(lv, s1446c4f0, ABISELECT(8,4), "S1446C4.s1446c4f0");
    test_class_info(&lv, &cd_S1446C4);
    dp->~S1446C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C4(Test_S1446C4, "S1446C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1446C4C1Ev();
extern void _ZN7S1446C4D1Ev();
Name_Map name_map_S1446C4[] = {
  NSPAIR(_ZN7S1446C4C1Ev),
  NSPAIR(_ZN7S1446C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1446C4[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY vtc_S1446C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C4[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
Class_Descriptor cd_S1446C4 = {  "S1446C4", // class name
  0,0,//no base classes
  &(vtc_S1446C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1446C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1446C4),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  S1446C3  : S1446C4 {
  void *s1446c3f0;
  virtual void  v7(); // _ZN7S1446C32v7Ev
  virtual void  v8(); // _ZN7S1446C32v8Ev
  ~S1446C3(); // tgen
  S1446C3(); // tgen
};
//SIG(-1 S1446C3) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S1446C3 ::v7(){vfunc_called(this, "_ZN7S1446C32v7Ev");}
void  S1446C3 ::v8(){vfunc_called(this, "_ZN7S1446C32v8Ev");}
S1446C3 ::~S1446C3(){ note_dtor("S1446C3", this);} // tgen
S1446C3 ::S1446C3(){ note_ctor("S1446C3", this);} // tgen

static void Test_S1446C3()
{
  extern Class_Descriptor cd_S1446C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1446C3, buf);
    S1446C3 *dp, &lv = *(dp=new (buf) S1446C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1446C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C3)");
    check_base_class_offset(lv, (S1446C4*), 0, "S1446C3");
    check_field_offset(lv, s1446c3f0, ABISELECT(24,16), "S1446C3.s1446c3f0");
    test_class_info(&lv, &cd_S1446C3);
    dp->~S1446C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C3(Test_S1446C3, "S1446C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1446C3C1Ev();
extern void _ZN7S1446C3D1Ev();
Name_Map name_map_S1446C3[] = {
  NSPAIR(_ZN7S1446C3C1Ev),
  NSPAIR(_ZN7S1446C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
static Base_Class bases_S1446C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1446C3[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY vtc_S1446C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C3[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
Class_Descriptor cd_S1446C3 = {  "S1446C3", // class name
  bases_S1446C3, 1,
  &(vtc_S1446C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1446C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1446C3),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  S1446C5  : S1446C4 {
  short s1446c5f0[9];
  __tsi64 s1446c5f1;
  virtual void  v9(); // _ZN7S1446C52v9Ev
  virtual void  v10(); // _ZN7S1446C53v10Ev
  virtual void  v11(); // _ZN7S1446C53v11Ev
  virtual void  v12(); // _ZN7S1446C53v12Ev
  virtual void  v13(); // _ZN7S1446C53v13Ev
  virtual void  v14(); // _ZN7S1446C53v14Ev
  ~S1446C5(); // tgen
  S1446C5(); // tgen
};
//SIG(-1 S1446C5) C1{ BC2{ v7 v8 Fs[6]} v1 v2 v3 v4 v5 v6 Fs[9] FL}


void  S1446C5 ::v9(){vfunc_called(this, "_ZN7S1446C52v9Ev");}
void  S1446C5 ::v10(){vfunc_called(this, "_ZN7S1446C53v10Ev");}
void  S1446C5 ::v11(){vfunc_called(this, "_ZN7S1446C53v11Ev");}
void  S1446C5 ::v12(){vfunc_called(this, "_ZN7S1446C53v12Ev");}
void  S1446C5 ::v13(){vfunc_called(this, "_ZN7S1446C53v13Ev");}
void  S1446C5 ::v14(){vfunc_called(this, "_ZN7S1446C53v14Ev");}
S1446C5 ::~S1446C5(){ note_dtor("S1446C5", this);} // tgen
S1446C5 ::S1446C5(){ note_ctor("S1446C5", this);} // tgen

static void Test_S1446C5()
{
  extern Class_Descriptor cd_S1446C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S1446C5, buf);
    S1446C5 *dp, &lv = *(dp=new (buf) S1446C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S1446C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C5)");
    check_base_class_offset(lv, (S1446C4*), 0, "S1446C5");
    check_field_offset(lv, s1446c5f0, ABISELECT(20,16), "S1446C5.s1446c5f0");
    check_field_offset(lv, s1446c5f1, ABISELECT(40,36), "S1446C5.s1446c5f1");
    test_class_info(&lv, &cd_S1446C5);
    dp->~S1446C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C5(Test_S1446C5, "S1446C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S1446C5C1Ev();
extern void _ZN7S1446C5D1Ev();
Name_Map name_map_S1446C5[] = {
  NSPAIR(_ZN7S1446C5C1Ev),
  NSPAIR(_ZN7S1446C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
static Base_Class bases_S1446C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1446C5[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY vtc_S1446C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C5[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
Class_Descriptor cd_S1446C5 = {  "S1446C5", // class name
  bases_S1446C5, 1,
  &(vtc_S1446C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S1446C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1446C5),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1446C2  : S1446C3 , virtual S1446C5 , virtual S1446C4 {
  virtual void  v15(); // _ZN7S1446C23v15Ev
  virtual void  v16(); // _ZN7S1446C23v16Ev
  virtual void  v17(); // _ZN7S1446C23v17Ev
  virtual void  v18(); // _ZN7S1446C23v18Ev
  virtual void  v19(); // _ZN7S1446C23v19Ev
  ~S1446C2(); // tgen
  S1446C2(); // tgen
};
//SIG(-1 S1446C2) C1{ BC2{ BC3{ v6 v7 Fs[6]} v8 v9 Fp} VBC4{ BC3 v10 v11 v12 v13 v14 v15 Fs[9] FL} VBC3 v1 v2 v3 v4 v5}


void  S1446C2 ::v15(){vfunc_called(this, "_ZN7S1446C23v15Ev");}
void  S1446C2 ::v16(){vfunc_called(this, "_ZN7S1446C23v16Ev");}
void  S1446C2 ::v17(){vfunc_called(this, "_ZN7S1446C23v17Ev");}
void  S1446C2 ::v18(){vfunc_called(this, "_ZN7S1446C23v18Ev");}
void  S1446C2 ::v19(){vfunc_called(this, "_ZN7S1446C23v19Ev");}
S1446C2 ::~S1446C2(){ note_dtor("S1446C2", this);} // tgen
S1446C2 ::S1446C2(){ note_ctor("S1446C2", this);} // tgen

static void Test_S1446C2()
{
  extern Class_Descriptor cd_S1446C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S1446C2, buf);
    S1446C2 *dp, &lv = *(dp=new (buf) S1446C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S1446C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C2)");
    check_base_class_offset(lv, (S1446C4*)(S1446C3*), 0, "S1446C2");
    check_base_class_offset(lv, (S1446C3*), 0, "S1446C2");
    check_base_class_offset(lv, (S1446C4*)(S1446C5*), ABISELECT(32,20), "S1446C2");
    check_base_class_offset(lv, (S1446C5*), ABISELECT(32,20), "S1446C2");
    /*is_ambiguous_... S1446C2::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*), ABISELECT(80,64), "S1446C2");
    test_class_info(&lv, &cd_S1446C2);
    dp->~S1446C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C2(Test_S1446C2, "S1446C2", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S1446C2C1Ev();
extern void _ZN7S1446C2D1Ev();
Name_Map name_map_S1446C2[] = {
  NSPAIR(_ZN7S1446C2C1Ev),
  NSPAIR(_ZN7S1446C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
static Base_Class bases_S1446C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1446C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1446C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //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_S1446C4,    ABISELECT(80,64), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //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 _ZTI7S1446C2[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY vtc_S1446C2[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S1446C2[];
static  VTT_ENTRY vtt_S1446C2[] = {
  {&(_ZTV7S1446C2[4]),  4,37},
  {&(_ZTV7S1446C2[23]),  23,37},
  {&(_ZTV7S1446C2[35]),  35,37},
};
extern VTBL_ENTRY _ZTI7S1446C2[];
extern  VTBL_ENTRY _ZTV7S1446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C2[];
Class_Descriptor cd_S1446C2 = {  "S1446C2", // class name
  bases_S1446C2, 5,
  &(vtc_S1446C2[0]), // expected_vtbl_contents
  &(vtt_S1446C2[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S1446C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1446C2),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1446C2),3, //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  S1446C6  : S1446C5 , virtual S1446C4 , virtual S1446C2 , virtual S1446C3 {
  int s1446c6f0;
  virtual  ~S1446C6(); // _ZN7S1446C6D2Ev
  virtual void  v20(); // _ZN7S1446C63v20Ev
  S1446C6(); // tgen
};
//SIG(-1 S1446C6) C1{ BC2{ BC3{ v2 v3 Fs[6]} v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC3 VBC4{ BC5{ BC3 v10 v11 Fp} VBC2 VBC3 v12 v13 v14 v15 v16} VBC5 vd v1 Fi}


 S1446C6 ::~S1446C6(){ note_dtor("S1446C6", this);}
void  S1446C6 ::v20(){vfunc_called(this, "_ZN7S1446C63v20Ev");}
S1446C6 ::S1446C6(){ note_ctor("S1446C6", this);} // tgen

static void Test_S1446C6()
{
  extern Class_Descriptor cd_S1446C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,38)];
    init_test(&cd_S1446C6, buf);
    S1446C6 *dp, &lv = *(dp=new (buf) S1446C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,148), "sizeof(S1446C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C6)");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*), 0, "S1446C6");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C5*), 0, "S1446C6");
    /*is_ambiguous_... S1446C6::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*), ABISELECT(56,48), "S1446C6");
    /*is_ambiguous_... S1446C2::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C2*), ABISELECT(56,48), "S1446C6");
    check_base_class_offset(lv, (S1446C4*)(S1446C3*)(S1446C2*), ABISELECT(80,64), "S1446C6");
    check_base_class_offset(lv, (S1446C3*)(S1446C2*), ABISELECT(80,64), "S1446C6");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*), ABISELECT(112,84), "S1446C6");
    check_base_class_offset(lv, (S1446C5*)(S1446C2*), ABISELECT(112,84), "S1446C6");
    check_base_class_offset(lv, (S1446C2*), ABISELECT(80,64), "S1446C6");
    /*is_ambiguous_... S1446C6::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*), ABISELECT(160,128), "S1446C6");
    /*is_ambiguous_... S1446C6::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C3*), ABISELECT(160,128), "S1446C6");
    check_field_offset(lv, s1446c6f0, ABISELECT(48,44), "S1446C6.s1446c6f0");
    test_class_info(&lv, &cd_S1446C6);
    dp->~S1446C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C6(Test_S1446C6, "S1446C6", ABISELECT(192,148));

#else // __cplusplus

extern void _ZN7S1446C6C1Ev();
extern void _ZN7S1446C6D2Ev();
Name_Map name_map_S1446C6[] = {
  NSPAIR(_ZN7S1446C6C1Ev),
  NSPAIR(_ZN7S1446C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C2;
extern VTBL_ENTRY _ZTI7S1446C2[];
extern  VTBL_ENTRY _ZTV7S1446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C2[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
static Base_Class bases_S1446C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1446C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1446C4,    ABISELECT(56,48), //bcp->offset
    17, //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_S1446C4,    ABISELECT(80,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(80,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1446C4,    ABISELECT(112,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(112,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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
    7, //immediately_derived
  0, 1},
  {&cd_S1446C2,    ABISELECT(80,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1446C4,    ABISELECT(160,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(160,128), //bcp->offset
    63, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1446C6[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C6D1Ev();
extern void _ZN7S1446C6D0Ev();
extern void _ZN7S1446C63v20Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY vtc_S1446C6[] = {
  ABISELECT(160,128),
  ABISELECT(112,84),
  ABISELECT(80,64),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S1446C6[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__7S1446C6[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__7S1446C2__7S1446C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A2__7S1446C2__7S1446C6[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
static  VTT_ENTRY vtt_S1446C6[] = {
  {&(_ZTV7S1446C6[6]),  6,73},
  {&(_ZTV7S1446C6[21]),  21,73},
  {&(_ZTV7S1446C6[36]),  36,73},
  {&(_ZTV7S1446C6[55]),  55,73},
  {&(_ZTV7S1446C6[69]),  69,73},
  {&(_tg__ZTV7S1446C2__7S1446C6[4]),  4,13},
  {&(_tg__ZTV7S1446C5__7S1446C2__7S1446C6[10]),  10,18},
  {&(_tg__ZTV7S1446C4__A2__7S1446C2__7S1446C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S1446C6[];
extern  VTBL_ENTRY _ZTV7S1446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C6[];
Class_Descriptor cd_S1446C6 = {  "S1446C6", // class name
  bases_S1446C6, 10,
  &(vtc_S1446C6[0]), // expected_vtbl_contents
  &(vtt_S1446C6[0]), // expected_vtt_contents
  ABISELECT(192,148), // object size
  NSPAIRA(_ZTI7S1446C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1446C6),73, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1446C6),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1446C7  {
  void *s1446c7f0;
  virtual void  v21(); // _ZN7S1446C73v21Ev
  virtual void  v22(); // _ZN7S1446C73v22Ev
  virtual void  v23(); // _ZN7S1446C73v23Ev
  virtual void  v24(); // _ZN7S1446C73v24Ev
  ~S1446C7(); // tgen
  S1446C7(); // tgen
};
//SIG(-1 S1446C7) C1{ v1 v2 v3 v4 Fp}


void  S1446C7 ::v21(){vfunc_called(this, "_ZN7S1446C73v21Ev");}
void  S1446C7 ::v22(){vfunc_called(this, "_ZN7S1446C73v22Ev");}
void  S1446C7 ::v23(){vfunc_called(this, "_ZN7S1446C73v23Ev");}
void  S1446C7 ::v24(){vfunc_called(this, "_ZN7S1446C73v24Ev");}
S1446C7 ::~S1446C7(){ note_dtor("S1446C7", this);} // tgen
S1446C7 ::S1446C7(){ note_ctor("S1446C7", this);} // tgen

static void Test_S1446C7()
{
  extern Class_Descriptor cd_S1446C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1446C7, buf);
    S1446C7 *dp, &lv = *(dp=new (buf) S1446C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1446C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C7)");
    check_field_offset(lv, s1446c7f0, ABISELECT(8,4), "S1446C7.s1446c7f0");
    test_class_info(&lv, &cd_S1446C7);
    dp->~S1446C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C7(Test_S1446C7, "S1446C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1446C7C1Ev();
extern void _ZN7S1446C7D1Ev();
Name_Map name_map_S1446C7[] = {
  NSPAIR(_ZN7S1446C7C1Ev),
  NSPAIR(_ZN7S1446C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1446C7[];
extern void _ZN7S1446C73v21Ev();
extern void _ZN7S1446C73v22Ev();
extern void _ZN7S1446C73v23Ev();
extern void _ZN7S1446C73v24Ev();
static  VTBL_ENTRY vtc_S1446C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C7[0]),
  (VTBL_ENTRY)&_ZN7S1446C73v21Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v22Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v23Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v24Ev,
};
extern VTBL_ENTRY _ZTI7S1446C7[];
extern  VTBL_ENTRY _ZTV7S1446C7[];
Class_Descriptor cd_S1446C7 = {  "S1446C7", // class name
  0,0,//no base classes
  &(vtc_S1446C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1446C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1446C7),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  S1446C8  : S1446C4 , virtual S1446C5 , virtual S1446C2 , virtual S1446C6 , S1446C3 {
  virtual  ~S1446C8(); // _ZN7S1446C8D2Ev
  virtual void  v25(); // _ZN7S1446C83v25Ev
  S1446C8(); // tgen
};
//SIG(-1 S1446C8) C1{ BC2{ v2 v3 Fs[6]} VBC3{ BC2 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC4{ BC5{ BC2 v10 v11 Fp} VBC3 VBC2 v12 v13 v14 v15 v16} VBC6{ BC3 VBC2 VBC4 VBC5 vd v17 Fi} BC5 vd v1}


 S1446C8 ::~S1446C8(){ note_dtor("S1446C8", this);}
void  S1446C8 ::v25(){vfunc_called(this, "_ZN7S1446C83v25Ev");}
S1446C8 ::S1446C8(){ note_ctor("S1446C8", this);} // tgen

static void Test_S1446C8()
{
  extern Class_Descriptor cd_S1446C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S1446C8, buf);
    S1446C8 *dp, &lv = *(dp=new (buf) S1446C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S1446C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C8)");
    /*is_ambiguous_... S1446C8::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*), 0, "S1446C8");
    /*is_ambiguous_... S1446C8::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*), ABISELECT(56,36), "S1446C8");
    /*is_ambiguous_... S1446C8::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C5*), ABISELECT(56,36), "S1446C8");
    check_base_class_offset(lv, (S1446C5*)(S1446C2*), ABISELECT(56,36), "S1446C8");
    check_base_class_offset(lv, (S1446C4*)(S1446C3*)(S1446C2*), ABISELECT(104,80), "S1446C8");
    check_base_class_offset(lv, (S1446C3*)(S1446C2*), ABISELECT(104,80), "S1446C8");
    /*is_ambiguous_... S1446C2::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C2*), ABISELECT(136,100), "S1446C8");
    /*is_ambiguous_... S1446C6::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C6*), ABISELECT(136,100), "S1446C8");
    check_base_class_offset(lv, (S1446C2*), ABISELECT(104,80), "S1446C8");
    check_base_class_offset(lv, (S1446C2*)(S1446C6*), ABISELECT(104,80), "S1446C8");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*)(S1446C6*), ABISELECT(160,116), "S1446C8");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C5*)(S1446C6*), ABISELECT(160,116), "S1446C8");
    /*is_ambiguous_... S1446C8::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*), ABISELECT(216,164), "S1446C8");
    /*is_ambiguous_... S1446C6::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C3*)(S1446C6*), ABISELECT(216,164), "S1446C8");
    check_base_class_offset(lv, (S1446C6*), ABISELECT(160,116), "S1446C8");
    /*is_ambiguous_... S1446C8::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*), ABISELECT(24,16), "S1446C8");
    /*is_ambiguous_... S1446C8::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C3*), ABISELECT(24,16), "S1446C8");
    test_class_info(&lv, &cd_S1446C8);
    dp->~S1446C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C8(Test_S1446C8, "S1446C8", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN7S1446C8C1Ev();
extern void _ZN7S1446C8D2Ev();
Name_Map name_map_S1446C8[] = {
  NSPAIR(_ZN7S1446C8C1Ev),
  NSPAIR(_ZN7S1446C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C2;
extern VTBL_ENTRY _ZTI7S1446C2[];
extern  VTBL_ENTRY _ZTV7S1446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C2[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C6;
extern VTBL_ENTRY _ZTI7S1446C6[];
extern  VTBL_ENTRY _ZTV7S1446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C6[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
static Base_Class bases_S1446C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S1446C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(56,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //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_S1446C4,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1446C4,    ABISELECT(136,100), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S1446C2,    ABISELECT(104,80), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1446C4,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S1446C4,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(216,164), //bcp->offset
    91, //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
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S1446C6,    ABISELECT(160,116), //bcp->offset
    64, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1446C4,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(24,16), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1446C8[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C8D1Ev();
extern void _ZN7S1446C8D0Ev();
extern void _ZN7S1446C83v25Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S1446C8D1Ev,_ZThn116_N7S1446C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S1446C8D0Ev,_ZThn116_N7S1446C8D0Ev)() __attribute__((weak));
extern void _ZN7S1446C63v20Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY vtc_S1446C8[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C83v25Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev),
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S1446C8[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__7S1446C8[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__7S1446C2__7S1446C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A2__7S1446C2__7S1446C8[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C6D1Ev();
extern void _ZN7S1446C6D0Ev();
extern void _ZN7S1446C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C6__7S1446C8[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A1__7S1446C6__7S1446C8[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__7S1446C6__7S1446C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__A1__7S1446C6__7S1446C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C3__A1__7S1446C6__7S1446C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
static  VTT_ENTRY vtt_S1446C8[] = {
  {&(_ZTV7S1446C8[7]),  7,101},
  {&(_ZTV7S1446C8[28]),  28,101},
  {&(_ZTV7S1446C8[49]),  49,101},
  {&(_ZTV7S1446C8[62]),  62,101},
  {&(_ZTV7S1446C8[80]),  80,101},
  {&(_ZTV7S1446C8[97]),  97,101},
  {&(_tg__ZTV7S1446C2__7S1446C8[4]),  4,13},
  {&(_tg__ZTV7S1446C5__7S1446C2__7S1446C8[10]),  10,18},
  {&(_tg__ZTV7S1446C4__A2__7S1446C2__7S1446C8[4]),  4,6},
  {&(_tg__ZTV7S1446C6__7S1446C8[6]),  6,17},
  {&(_tg__ZTV7S1446C4__A1__7S1446C6__7S1446C8[4]),  4,6},
  {&(_tg__ZTV7S1446C2__7S1446C6__7S1446C8[13]),  13,22},
  {&(_tg__ZTV7S1446C5__A1__7S1446C6__7S1446C8[10]),  10,18},
  {&(_tg__ZTV7S1446C3__A1__7S1446C6__7S1446C8[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S1446C8[];
extern  VTBL_ENTRY _ZTV7S1446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C8[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1446C8D0Ev,_ZThn116_N7S1446C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S1446C8D1Ev,_ZThn116_N7S1446C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1446C8 = {  "S1446C8", // class name
  bases_S1446C8, 14,
  &(vtc_S1446C8[0]), // expected_vtbl_contents
  &(vtt_S1446C8[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI7S1446C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S1446C8),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1446C8),14, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1446C1  : S1446C2 , virtual S1446C6 , S1446C7 , S1446C8 {
  int s1446c1f0;
  virtual  ~S1446C1(); // _ZN7S1446C1D2Ev
  virtual void  v1(); // _ZN7S1446C12v1Ev
  virtual void  v2(); // _ZN7S1446C12v2Ev
  virtual void  v3(); // _ZN7S1446C12v3Ev
  virtual void  v4(); // _ZN7S1446C12v4Ev
  S1446C1(); // tgen
};
//SIG(1 S1446C1) C1{ BC2{ BC3{ BC4{ v5 v6 Fs[6]} v7 v8 Fp} VBC5{ BC4 v9 v10 v11 v12 v13 v14 Fs[9] FL} VBC4 v15 v16 v17 v18 v19} VBC6{ BC5 VBC4 VBC2 VBC3 vd v20 Fi} BC7{ v21 v22 v23 v24 Fp} BC8{ BC4 VBC5 VBC2 VBC6 BC3 vd v25} vd v1 v2 v3 v4 Fi}


 S1446C1 ::~S1446C1(){ note_dtor("S1446C1", this);}
void  S1446C1 ::v1(){vfunc_called(this, "_ZN7S1446C12v1Ev");}
void  S1446C1 ::v2(){vfunc_called(this, "_ZN7S1446C12v2Ev");}
void  S1446C1 ::v3(){vfunc_called(this, "_ZN7S1446C12v3Ev");}
void  S1446C1 ::v4(){vfunc_called(this, "_ZN7S1446C12v4Ev");}
S1446C1 ::S1446C1(){ note_ctor("S1446C1", this);} // tgen

static void Test_S1446C1()
{
  extern Class_Descriptor cd_S1446C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,55)];
    init_test(&cd_S1446C1, buf);
    S1446C1 *dp, &lv = *(dp=new (buf) S1446C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,216), "sizeof(S1446C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1446C1)");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*)(S1446C2*), 0, "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C3*)(S1446C2*), 0, "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*), ABISELECT(112,68), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C5*)(S1446C2*), ABISELECT(112,68), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C5*)(S1446C2*), ABISELECT(112,68), "S1446C1");
    /*is_ambiguous_... S1446C8::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C5*)(S1446C8*), ABISELECT(112,68), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C2*), ABISELECT(160,112), "S1446C1");
    /*is_ambiguous_... S1446C6::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C6*), ABISELECT(160,112), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C2*), ABISELECT(160,112), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C2*), 0, "S1446C1");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C5*)(S1446C6*), ABISELECT(184,128), "S1446C1");
    /*is_ambiguous_... S1446C6::S1446C5 */ AMB_check_base_class_offset(lv, (S1446C5*)(S1446C6*), ABISELECT(184,128), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*)(S1446C2*), ABISELECT(240,176), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C2 */ AMB_check_base_class_offset(lv, (S1446C3*)(S1446C2*), ABISELECT(240,176), "S1446C1");
    check_base_class_offset(lv, (S1446C2*)(S1446C6*), ABISELECT(240,176), "S1446C1");
    check_base_class_offset(lv, (S1446C2*)(S1446C8*), ABISELECT(240,176), "S1446C1");
    /*is_ambiguous_... S1446C1::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*), ABISELECT(272,196), "S1446C1");
    /*is_ambiguous_... S1446C6::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C3*)(S1446C6*), ABISELECT(272,196), "S1446C1");
    check_base_class_offset(lv, (S1446C6*), ABISELECT(184,128), "S1446C1");
    check_base_class_offset(lv, (S1446C6*)(S1446C8*), ABISELECT(184,128), "S1446C1");
    check_base_class_offset(lv, (S1446C7*), ABISELECT(32,20), "S1446C1");
    /*is_ambiguous_... S1446C8::S1446C4 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C8*), ABISELECT(48,28), "S1446C1");
    /*is_ambiguous_... S1446C8::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C4*)(S1446C3*)(S1446C8*), ABISELECT(72,44), "S1446C1");
    /*is_ambiguous_... S1446C8::S1446C3 */ AMB_check_base_class_offset(lv, (S1446C3*)(S1446C8*), ABISELECT(72,44), "S1446C1");
    check_base_class_offset(lv, (S1446C8*), ABISELECT(48,28), "S1446C1");
    check_field_offset(lv, s1446c1f0, ABISELECT(104,64), "S1446C1.s1446c1f0");
    test_class_info(&lv, &cd_S1446C1);
    dp->~S1446C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1446C1(Test_S1446C1, "S1446C1", ABISELECT(304,216));

#else // __cplusplus

extern void _ZN7S1446C1C1Ev();
extern void _ZN7S1446C1D2Ev();
Name_Map name_map_S1446C1[] = {
  NSPAIR(_ZN7S1446C1C1Ev),
  NSPAIR(_ZN7S1446C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C2;
extern VTBL_ENTRY _ZTI7S1446C2[];
extern  VTBL_ENTRY _ZTV7S1446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C2[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C5;
extern VTBL_ENTRY _ZTI7S1446C5[];
extern  VTBL_ENTRY _ZTV7S1446C5[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C2;
extern VTBL_ENTRY _ZTI7S1446C2[];
extern  VTBL_ENTRY _ZTV7S1446C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C2[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C6;
extern VTBL_ENTRY _ZTI7S1446C6[];
extern  VTBL_ENTRY _ZTV7S1446C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C6[];
extern Class_Descriptor cd_S1446C7;
extern VTBL_ENTRY _ZTI7S1446C7[];
extern  VTBL_ENTRY _ZTV7S1446C7[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C4;
extern VTBL_ENTRY _ZTI7S1446C4[];
extern  VTBL_ENTRY _ZTV7S1446C4[];
extern Class_Descriptor cd_S1446C3;
extern VTBL_ENTRY _ZTI7S1446C3[];
extern  VTBL_ENTRY _ZTV7S1446C3[];
extern Class_Descriptor cd_S1446C8;
extern VTBL_ENTRY _ZTI7S1446C8[];
extern  VTBL_ENTRY _ZTV7S1446C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C8[];
static Base_Class bases_S1446C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1446C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    1, //immediately_derived
  0, 0},
  {&cd_S1446C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S1446C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(112,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    10, //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
    5, //immediately_derived
  0, 1},
  {&cd_S1446C4,    ABISELECT(160,112), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //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, 1},
  {&cd_S1446C2,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1446C4,    ABISELECT(184,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
    9, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1446C5,    ABISELECT(184,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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S1446C4,    ABISELECT(240,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
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(240,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
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S1446C2,    ABISELECT(240,176), //bcp->offset
    97, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1446C4,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(272,196), //bcp->offset
    119, //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
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S1446C6,    ABISELECT(184,128), //bcp->offset
    70, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1446C7,    ABISELECT(32,20), //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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1446C4,    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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1446C4,    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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S1446C3,    ABISELECT(72,44), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S1446C8,    ABISELECT(48,28), //bcp->offset
    28, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1446C1[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
extern void _ZN7S1446C1D1Ev();
extern void _ZN7S1446C1D0Ev();
extern void _ZN7S1446C12v1Ev();
extern void _ZN7S1446C12v2Ev();
extern void _ZN7S1446C12v3Ev();
extern void _ZN7S1446C12v4Ev();
extern void _ZN7S1446C73v21Ev();
extern void _ZN7S1446C73v22Ev();
extern void _ZN7S1446C73v23Ev();
extern void _ZN7S1446C73v24Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void ABISELECT(_ZThn48_N7S1446C1D1Ev,_ZThn28_N7S1446C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S1446C1D0Ev,_ZThn28_N7S1446C1D0Ev)();
extern void _ZN7S1446C83v25Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void ABISELECT(_ZTv0_n120_N7S1446C1D1Ev,_ZTv0_n60_N7S1446C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S1446C1D1Ev,_ZThn128_N7S1446C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1446C1D0Ev,_ZTv0_n60_N7S1446C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S1446C1D0Ev,_ZThn128_N7S1446C1D0Ev)() __attribute__((weak));
extern void _ZN7S1446C63v20Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY vtc_S1446C1[] = {
  ABISELECT(272,196),
  ABISELECT(240,176),
  ABISELECT(184,128),
  ABISELECT(160,112),
  ABISELECT(112,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1446C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1446C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1446C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1446C12v4Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C73v21Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v22Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v23Ev,
  (VTBL_ENTRY)&_ZN7S1446C73v24Ev,
  ABISELECT(224,168),
  ABISELECT(136,100),
  ABISELECT(112,84),
  ABISELECT(192,148),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1446C1D1Ev,_ZThn28_N7S1446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S1446C1D0Ev,_ZThn28_N7S1446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1446C83v25Ev,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  0,
  ABISELECT(-184,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,68),
  ABISELECT(-72,-60),
  ABISELECT(56,48),
  ABISELECT(-24,-16),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C1D1Ev,_ZTv0_n60_N7S1446C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C1D0Ev,_ZTv0_n60_N7S1446C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-64),
  ABISELECT(-128,-108),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI7S1446C1[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S1446C1[];
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__A__7S1446C1[] = {
  ABISELECT(160,112),
  ABISELECT(112,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__7S1446C2__A__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A2__7S1446C2__A__7S1446C1[] = {
  0,
  0,
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C8D1Ev();
extern void _ZN7S1446C8D0Ev();
extern void _ZN7S1446C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C8__7S1446C1[] = {
  ABISELECT(224,168),
  ABISELECT(136,100),
  ABISELECT(112,84),
  ABISELECT(192,148),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C83v25Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__7S1446C8__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__7S1446C8__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-64),
  ABISELECT(-128,-108),
  ABISELECT(-192,-148),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A3__7S1446C8__7S1446C1[] = {
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev)();
extern void ABISELECT(_ZThn136_N7S1446C8D1Ev,_ZThn100_N7S1446C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev)();
extern void ABISELECT(_ZThn136_N7S1446C8D0Ev,_ZThn100_N7S1446C8D0Ev)() __attribute__((weak));
extern void _ZN7S1446C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C6__7S1446C8__7S1446C1[] = {
  0,
  ABISELECT(-136,-100),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,68),
  ABISELECT(-72,-60),
  ABISELECT(56,48),
  ABISELECT(-24,-16),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev),
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C3__A1__7S1446C8__7S1446C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-224,-168),
  (VTBL_ENTRY)&(_ZTI7S1446C8[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
extern void _ZN7S1446C6D1Ev();
extern void _ZN7S1446C6D0Ev();
extern void _ZN7S1446C63v20Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C6__7S1446C1[] = {
  ABISELECT(88,68),
  ABISELECT(-72,-60),
  ABISELECT(56,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1446C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1446C63v20Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A1__7S1446C6__7S1446C1[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__7S1446C6__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-64),
  ABISELECT(-128,-108),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__A1__7S1446C6__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C3__A1__7S1446C6__7S1446C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI7S1446C6[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C32v7Ev();
extern void _ZN7S1446C32v8Ev();
extern void _ZN7S1446C23v15Ev();
extern void _ZN7S1446C23v16Ev();
extern void _ZN7S1446C23v17Ev();
extern void _ZN7S1446C23v18Ev();
extern void _ZN7S1446C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C2__A1__7S1446C1[] = {
  ABISELECT(-80,-64),
  ABISELECT(-128,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1446C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1446C23v19Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
extern void _ZN7S1446C52v9Ev();
extern void _ZN7S1446C53v10Ev();
extern void _ZN7S1446C53v11Ev();
extern void _ZN7S1446C53v12Ev();
extern void _ZN7S1446C53v13Ev();
extern void _ZN7S1446C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C5__7S1446C2__A1__7S1446C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,108),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1446C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1446C53v14Ev,
};
extern void _ZN7S1446C42v5Ev();
extern void _ZN7S1446C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S1446C4__A2__7S1446C2__A1__7S1446C1[] = {
  0,
  0,
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI7S1446C2[0]),
  (VTBL_ENTRY)&_ZN7S1446C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1446C42v6Ev,
};
static  VTT_ENTRY vtt_S1446C1[] = {
  {&(_ZTV7S1446C1[7]),  7,129},
  {&(_tg__ZTV7S1446C2__A__7S1446C1[4]),  4,13},
  {&(_tg__ZTV7S1446C5__7S1446C2__A__7S1446C1[10]),  10,18},
  {&(_tg__ZTV7S1446C4__A2__7S1446C2__A__7S1446C1[4]),  4,6},
  {&(_tg__ZTV7S1446C8__7S1446C1[7]),  7,12},
  {&(_tg__ZTV7S1446C5__7S1446C8__7S1446C1[10]),  10,18},
  {&(_tg__ZTV7S1446C2__7S1446C8__7S1446C1[13]),  13,22},
  {&(_tg__ZTV7S1446C4__A3__7S1446C8__7S1446C1[4]),  4,6},
  {&(_tg__ZTV7S1446C6__7S1446C8__7S1446C1[16]),  16,27},
  {&(_tg__ZTV7S1446C3__A1__7S1446C8__7S1446C1[6]),  6,10},
  {&(_ZTV7S1446C1[56]),  56,129},
  {&(_ZTV7S1446C1[68]),  68,129},
  {&(_ZTV7S1446C1[86]),  86,129},
  {&(_ZTV7S1446C1[110]),  110,129},
  {&(_ZTV7S1446C1[125]),  125,129},
  {&(_ZTV7S1446C1[35]),  35,129},
  {&(_tg__ZTV7S1446C6__7S1446C1[6]),  6,17},
  {&(_tg__ZTV7S1446C4__A1__7S1446C6__7S1446C1[4]),  4,6},
  {&(_tg__ZTV7S1446C2__7S1446C6__7S1446C1[13]),  13,22},
  {&(_tg__ZTV7S1446C5__A1__7S1446C6__7S1446C1[10]),  10,18},
  {&(_tg__ZTV7S1446C3__A1__7S1446C6__7S1446C1[6]),  6,10},
  {&(_tg__ZTV7S1446C2__A1__7S1446C1[4]),  4,13},
  {&(_tg__ZTV7S1446C5__7S1446C2__A1__7S1446C1[10]),  10,18},
  {&(_tg__ZTV7S1446C4__A2__7S1446C2__A1__7S1446C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S1446C1[];
extern  VTBL_ENTRY _ZTV7S1446C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1446C1[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C8D0Ev,_ZTv0_n60_N7S1446C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1446C8D0Ev,_ZThn100_N7S1446C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C8D1Ev,_ZTv0_n60_N7S1446C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S1446C8D1Ev,_ZThn100_N7S1446C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C1D0Ev,_ZTv0_n60_N7S1446C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1446C1D0Ev,_ZThn128_N7S1446C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S1446C1D1Ev,_ZTv0_n60_N7S1446C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S1446C1D1Ev,_ZThn128_N7S1446C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1446C1 = {  "S1446C1", // class name
  bases_S1446C1, 19,
  &(vtc_S1446C1[0]), // expected_vtbl_contents
  &(vtt_S1446C1[0]), // expected_vtt_contents
  ABISELECT(304,216), // object size
  NSPAIRA(_ZTI7S1446C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S1446C1),129, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1446C1),24, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C4_nt  {
  void *s4531c4f0[3];
  void  mf4531c4(); // _ZN10S4531C4_nt8mf4531c4Ev
};
//SIG(-1 S4531C4_nt) C1{ m Fp[3]}


void  S4531C4_nt ::mf4531c4(){}

//skip512 S4531C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C3_nt  {
  ::S4531C4_nt s4531c3f0;
  unsigned int s4531c3f1:1;
  virtual  ~S4531C3_nt(); // _ZN10S4531C3_ntD1Ev
  virtual void  v2(); // _ZN10S4531C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4531C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4531C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4531C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4531C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4531C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4531C3_nt2v8Ev
  S4531C3_nt(); // tgen
};
//SIG(-1 S4531C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4531C3_nt ::~S4531C3_nt(){ note_dtor("S4531C3_nt", this);}
void  S4531C3_nt ::v2(){vfunc_called(this, "_ZN10S4531C3_nt2v2Ev");}
void  S4531C3_nt ::v3(){vfunc_called(this, "_ZN10S4531C3_nt2v3Ev");}
void  S4531C3_nt ::v4(){vfunc_called(this, "_ZN10S4531C3_nt2v4Ev");}
void  S4531C3_nt ::v5(){vfunc_called(this, "_ZN10S4531C3_nt2v5Ev");}
void  S4531C3_nt ::v6(){vfunc_called(this, "_ZN10S4531C3_nt2v6Ev");}
void  S4531C3_nt ::v7(){vfunc_called(this, "_ZN10S4531C3_nt2v7Ev");}
void  S4531C3_nt ::v8(){vfunc_called(this, "_ZN10S4531C3_nt2v8Ev");}
S4531C3_nt ::S4531C3_nt(){ note_ctor("S4531C3_nt", this);} // tgen

//skip512 S4531C3_nt

#else // __cplusplus

extern void _ZN10S4531C3_ntC1Ev();
extern void _ZN10S4531C3_ntD1Ev();
Name_Map name_map_S4531C3_nt[] = {
  NSPAIR(_ZN10S4531C3_ntC1Ev),
  NSPAIR(_ZN10S4531C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4531C3_nt[];
extern void _ZN10S4531C3_ntD1Ev();
extern void _ZN10S4531C3_ntD0Ev();
extern void _ZN10S4531C3_nt2v2Ev();
extern void _ZN10S4531C3_nt2v3Ev();
extern void _ZN10S4531C3_nt2v4Ev();
extern void _ZN10S4531C3_nt2v5Ev();
extern void _ZN10S4531C3_nt2v6Ev();
extern void _ZN10S4531C3_nt2v7Ev();
extern void _ZN10S4531C3_nt2v8Ev();
static  VTBL_ENTRY vtc_S4531C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4531C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4531C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S4531C3_nt[];
VTBL_ENTRY *P__ZTI10S4531C3_nt = _ZTI10S4531C3_nt; 
extern  VTBL_ENTRY _ZTV10S4531C3_nt[];
Class_Descriptor cd_S4531C3_nt = {  "S4531C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4531C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI10S4531C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4531C3_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  S4531C5_nt  {
  virtual void  v9(); // _ZN10S4531C5_nt2v9Ev
  ~S4531C5_nt(); // tgen
  S4531C5_nt(); // tgen
};
//SIG(-1 S4531C5_nt) C1{ v1}


void  S4531C5_nt ::v9(){vfunc_called(this, "_ZN10S4531C5_nt2v9Ev");}
S4531C5_nt ::~S4531C5_nt(){ note_dtor("S4531C5_nt", this);} // tgen
S4531C5_nt ::S4531C5_nt(){ note_ctor("S4531C5_nt", this);} // tgen

//skip512 S4531C5_nt

#else // __cplusplus

extern void _ZN10S4531C5_ntC1Ev();
extern void _ZN10S4531C5_ntD1Ev();
Name_Map name_map_S4531C5_nt[] = {
  NSPAIR(_ZN10S4531C5_ntC1Ev),
  NSPAIR(_ZN10S4531C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4531C5_nt[];
extern void _ZN10S4531C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4531C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4531C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S4531C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S4531C5_nt[];
VTBL_ENTRY *P__ZTI10S4531C5_nt = _ZTI10S4531C5_nt; 
extern  VTBL_ENTRY _ZTV10S4531C5_nt[];
Class_Descriptor cd_S4531C5_nt = {  "S4531C5_nt", // class name
  0,0,//no base classes
  &(vtc_S4531C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4531C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4531C5_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  S4531C6_nt  {
  ::S3222C18 s4531c6f0;
  int s4531c6f1;
  void  mf4531c6(); // _ZN10S4531C6_nt8mf4531c6Ev
};
//SIG(-1 S4531C6_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fi}


void  S4531C6_nt ::mf4531c6(){}

//skip512 S4531C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C9_nt  {
  unsigned int s4531c9f0:1;
  int s4531c9f1:3;
};
//SIG(-1 S4531C9_nt) C1{ Fi:1 Fi:3}



//skip512 S4531C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C10_nt  {
  void *s4531c10f0;
  void  mf4531c10(); // _ZN11S4531C10_nt9mf4531c10Ev
};
//SIG(-1 S4531C10_nt) C1{ m Fp}


void  S4531C10_nt ::mf4531c10(){}

//skip512 S4531C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C12_nt  {
  int s4531c12f0[4];
  void  mf4531c12(); // _ZN11S4531C12_nt9mf4531c12Ev
};
//SIG(-1 S4531C12_nt) C1{ m Fi[4]}


void  S4531C12_nt ::mf4531c12(){}

//skip512 S4531C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C2_nt  : S4531C3_nt , S4531C5_nt {
  ::S4531C6_nt s4531c2f0;
  ::S4531C9_nt s4531c2f1;
  ::S4531C10_nt s4531c2f2;
  ::S4531C10_nt s4531c2f3;
  void *s4531c2f4;
  ::S4531C12_nt s4531c2f5;
  int s4531c2f6;
  void *s4531c2f7;
  int s4531c2f8[2];
  virtual  ~S4531C2_nt(); // _ZN10S4531C2_ntD1Ev
  virtual void  v10(); // _ZN10S4531C2_nt3v10Ev
  virtual void  v11(); // _ZN10S4531C2_nt3v11Ev
  virtual void  v12(); // _ZN10S4531C2_nt3v12Ev
  virtual void  v13(); // _ZN10S4531C2_nt3v13Ev
  virtual void  v14(); // _ZN10S4531C2_nt3v14Ev
  S4531C2_nt(); // tgen
};
//SIG(-1 S4531C2_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} FC9 Fp FC10{ m Fi[4]} Fi Fp Fi[2]}


 S4531C2_nt ::~S4531C2_nt(){ note_dtor("S4531C2_nt", this);}
void  S4531C2_nt ::v10(){vfunc_called(this, "_ZN10S4531C2_nt3v10Ev");}
void  S4531C2_nt ::v11(){vfunc_called(this, "_ZN10S4531C2_nt3v11Ev");}
void  S4531C2_nt ::v12(){vfunc_called(this, "_ZN10S4531C2_nt3v12Ev");}
void  S4531C2_nt ::v13(){vfunc_called(this, "_ZN10S4531C2_nt3v13Ev");}
void  S4531C2_nt ::v14(){vfunc_called(this, "_ZN10S4531C2_nt3v14Ev");}
S4531C2_nt ::S4531C2_nt(){ note_ctor("S4531C2_nt", this);} // tgen

//skip512 S4531C2_nt

#else // __cplusplus

extern void _ZN10S4531C2_ntC1Ev();
extern void _ZN10S4531C2_ntD1Ev();
Name_Map name_map_S4531C2_nt[] = {
  NSPAIR(_ZN10S4531C2_ntC1Ev),
  NSPAIR(_ZN10S4531C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4531C3_nt;
extern VTBL_ENTRY _ZTI10S4531C3_nt[];
extern  VTBL_ENTRY _ZTV10S4531C3_nt[];
extern Class_Descriptor cd_S4531C5_nt;
extern VTBL_ENTRY _ZTI10S4531C5_nt[];
extern  VTBL_ENTRY _ZTV10S4531C5_nt[];
static Base_Class bases_S4531C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4531C3_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},
  {&cd_S4531C5_nt,    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 _ZTI10S4531C2_nt[];
extern void _ZN10S4531C2_ntD1Ev();
extern void _ZN10S4531C2_ntD0Ev();
extern void _ZN10S4531C3_nt2v2Ev();
extern void _ZN10S4531C3_nt2v3Ev();
extern void _ZN10S4531C3_nt2v4Ev();
extern void _ZN10S4531C3_nt2v5Ev();
extern void _ZN10S4531C3_nt2v6Ev();
extern void _ZN10S4531C3_nt2v7Ev();
extern void _ZN10S4531C3_nt2v8Ev();
extern void _ZN10S4531C2_nt3v10Ev();
extern void _ZN10S4531C2_nt3v11Ev();
extern void _ZN10S4531C2_nt3v12Ev();
extern void _ZN10S4531C2_nt3v13Ev();
extern void _ZN10S4531C2_nt3v14Ev();
extern void _ZN10S4531C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4531C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4531C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4531C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S4531C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4531C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S4531C2_nt[];
VTBL_ENTRY *P__ZTI10S4531C2_nt = _ZTI10S4531C2_nt; 
extern  VTBL_ENTRY _ZTV10S4531C2_nt[];
Class_Descriptor cd_S4531C2_nt = {  "S4531C2_nt", // class name
  bases_S4531C2_nt, 2,
  &(vtc_S4531C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI10S4531C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S4531C2_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  S4531C14_nt  {
  short s4531c14f0[3];
  void  mf4531c14(); // _ZN11S4531C14_nt9mf4531c14Ev
};
//SIG(-1 S4531C14_nt) C1{ m Fs[3]}


void  S4531C14_nt ::mf4531c14(){}

//skip512 S4531C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4531C1  : S4531C2_nt {
  ::S3639C14_nt s4531c1f0;
  ::S4531C14_nt s4531c1f1;
  ::S4531C14_nt s4531c1f2;
  virtual void  v1(); // _ZN7S4531C12v1Ev
  ~S4531C1(); // tgen
  S4531C1(); // tgen
};
//SIG(1 S4531C1) 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} FC10 Fp FC11{ m Fi[4]} Fi Fp Fi[2]} v1 FC12{ m Fp[2]} FC13{ m Fs[3]} FC13}


void  S4531C1 ::v1(){vfunc_called(this, "_ZN7S4531C12v1Ev");}
S4531C1 ::~S4531C1(){ note_dtor("S4531C1", this);} // tgen
S4531C1 ::S4531C1(){ note_ctor("S4531C1", this);} // tgen

static void Test_S4531C1()
{
  extern Class_Descriptor cd_S4531C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S4531C1, buf);
    S4531C1 *dp, &lv = *(dp=new (buf) S4531C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S4531C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4531C1)");
    check_base_class_offset(lv, (S4531C3_nt*)(S4531C2_nt*), 0, "S4531C1");
    check_base_class_offset(lv, (S4531C5_nt*)(S4531C2_nt*), ABISELECT(40,20), "S4531C1");
    check_base_class_offset(lv, (S4531C2_nt*), 0, "S4531C1");
    check_field_offset(lv, s4531c1f0, ABISELECT(144,88), "S4531C1.s4531c1f0");
    check_field_offset(lv, s4531c1f1, ABISELECT(160,96), "S4531C1.s4531c1f1");
    check_field_offset(lv, s4531c1f2, ABISELECT(166,102), "S4531C1.s4531c1f2");
    test_class_info(&lv, &cd_S4531C1);
    dp->~S4531C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4531C1(Test_S4531C1, "S4531C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S4531C1C1Ev();
extern void _ZN7S4531C1D1Ev();
Name_Map name_map_S4531C1[] = {
  NSPAIR(_ZN7S4531C1C1Ev),
  NSPAIR(_ZN7S4531C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4531C3_nt;
extern VTBL_ENTRY _ZTI10S4531C3_nt[];
extern  VTBL_ENTRY _ZTV10S4531C3_nt[];
extern Class_Descriptor cd_S4531C5_nt;
extern VTBL_ENTRY _ZTI10S4531C5_nt[];
extern  VTBL_ENTRY _ZTV10S4531C5_nt[];
extern Class_Descriptor cd_S4531C2_nt;
extern VTBL_ENTRY _ZTI10S4531C2_nt[];
extern  VTBL_ENTRY _ZTV10S4531C2_nt[];
static Base_Class bases_S4531C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4531C3_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_S4531C5_nt,    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_S4531C2_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 _ZTI7S4531C1[];
extern void _ZN7S4531C1D1Ev();
extern void _ZN7S4531C1D0Ev();
extern void _ZN10S4531C3_nt2v2Ev();
extern void _ZN10S4531C3_nt2v3Ev();
extern void _ZN10S4531C3_nt2v4Ev();
extern void _ZN10S4531C3_nt2v5Ev();
extern void _ZN10S4531C3_nt2v6Ev();
extern void _ZN10S4531C3_nt2v7Ev();
extern void _ZN10S4531C3_nt2v8Ev();
extern void _ZN10S4531C2_nt3v10Ev();
extern void _ZN10S4531C2_nt3v11Ev();
extern void _ZN10S4531C2_nt3v12Ev();
extern void _ZN10S4531C2_nt3v13Ev();
extern void _ZN10S4531C2_nt3v14Ev();
extern void _ZN7S4531C12v1Ev();
extern void _ZN10S4531C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S4531C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4531C1[0]),
  (VTBL_ENTRY)&_ZN7S4531C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4531C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4531C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4531C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S4531C12v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4531C1[0]),
  (VTBL_ENTRY)&_ZN10S4531C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI7S4531C1[];
extern  VTBL_ENTRY _ZTV7S4531C1[];
Class_Descriptor cd_S4531C1 = {  "S4531C1", // class name
  bases_S4531C1, 3,
  &(vtc_S4531C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S4531C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4531C1),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  S7577C3  {
  char s7577c3f0;
  long s7577c3f1[8];
  virtual void  v3(); // _ZN7S7577C32v3Ev
  virtual void  v4(); // _ZN7S7577C32v4Ev
  virtual void  v5(); // _ZN7S7577C32v5Ev
  ~S7577C3(); // tgen
  S7577C3(); // tgen
};
//SIG(-1 S7577C3) C1{ v1 v2 v3 Fc Fl[8]}


void  S7577C3 ::v3(){vfunc_called(this, "_ZN7S7577C32v3Ev");}
void  S7577C3 ::v4(){vfunc_called(this, "_ZN7S7577C32v4Ev");}
void  S7577C3 ::v5(){vfunc_called(this, "_ZN7S7577C32v5Ev");}
S7577C3 ::~S7577C3(){ note_dtor("S7577C3", this);} // tgen
S7577C3 ::S7577C3(){ note_ctor("S7577C3", this);} // tgen

static void Test_S7577C3()
{
  extern Class_Descriptor cd_S7577C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7577C3, buf);
    S7577C3 *dp, &lv = *(dp=new (buf) S7577C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7577C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7577C3)");
    check_field_offset(lv, s7577c3f0, ABISELECT(8,4), "S7577C3.s7577c3f0");
    check_field_offset(lv, s7577c3f1, ABISELECT(16,8), "S7577C3.s7577c3f1");
    test_class_info(&lv, &cd_S7577C3);
    dp->~S7577C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C3(Test_S7577C3, "S7577C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7577C3C1Ev();
extern void _ZN7S7577C3D1Ev();
Name_Map name_map_S7577C3[] = {
  NSPAIR(_ZN7S7577C3C1Ev),
  NSPAIR(_ZN7S7577C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7577C3[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY vtc_S7577C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C3[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
Class_Descriptor cd_S7577C3 = {  "S7577C3", // class name
  0,0,//no base classes
  &(vtc_S7577C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7577C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7577C3),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  S7577C2  : virtual S7577C3 {
  short s7577c2f0;
  void *s7577c2f1[2];
  short s7577c2f2[4];
  virtual void  v6(); // _ZN7S7577C22v6Ev
  ~S7577C2(); // tgen
  S7577C2(); // tgen
};
//SIG(-1 S7577C2) C1{ VBC2{ v2 v3 v4 Fc Fl[8]} v1 Fs Fp[2] Fs[4]}


void  S7577C2 ::v6(){vfunc_called(this, "_ZN7S7577C22v6Ev");}
S7577C2 ::~S7577C2(){ note_dtor("S7577C2", this);} // tgen
S7577C2 ::S7577C2(){ note_ctor("S7577C2", this);} // tgen

static void Test_S7577C2()
{
  extern Class_Descriptor cd_S7577C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S7577C2, buf);
    S7577C2 *dp, &lv = *(dp=new (buf) S7577C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S7577C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7577C2)");
    check_base_class_offset(lv, (S7577C3*), ABISELECT(40,24), "S7577C2");
    check_field_offset(lv, s7577c2f0, ABISELECT(8,4), "S7577C2.s7577c2f0");
    check_field_offset(lv, s7577c2f1, ABISELECT(16,8), "S7577C2.s7577c2f1");
    check_field_offset(lv, s7577c2f2, ABISELECT(32,16), "S7577C2.s7577c2f2");
    test_class_info(&lv, &cd_S7577C2);
    dp->~S7577C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C2(Test_S7577C2, "S7577C2", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN7S7577C2C1Ev();
extern void _ZN7S7577C2D1Ev();
Name_Map name_map_S7577C2[] = {
  NSPAIR(_ZN7S7577C2C1Ev),
  NSPAIR(_ZN7S7577C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
static Base_Class bases_S7577C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    ABISELECT(40,24), //bcp->offset
    4, //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 _ZTI7S7577C2[];
extern void _ZN7S7577C22v6Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY vtc_S7577C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7577C2[];
static  VTT_ENTRY vtt_S7577C2[] = {
  {&(_ZTV7S7577C2[3]),  3,12},
  {&(_ZTV7S7577C2[9]),  9,12},
};
extern VTBL_ENTRY _ZTI7S7577C2[];
extern  VTBL_ENTRY _ZTV7S7577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C2[];
Class_Descriptor cd_S7577C2 = {  "S7577C2", // class name
  bases_S7577C2, 1,
  &(vtc_S7577C2[0]), // expected_vtbl_contents
  &(vtt_S7577C2[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI7S7577C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7577C2),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7577C2),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  S7577C4  : S7577C3 {
  ::S7577C3 s7577c4f0;
  long double s7577c4f1;
  ::S7577C3 s7577c4f2;
  virtual  ~S7577C4(); // _ZN7S7577C4D1Ev
  virtual void  v7(); // _ZN7S7577C42v7Ev
  virtual void  v8(); // _ZN7S7577C42v8Ev
  S7577C4(); // tgen
};
//SIG(-1 S7577C4) C1{ BC2{ v3 v4 v5 Fc Fl[8]} vd v1 v2 FC2 FD FC2}


 S7577C4 ::~S7577C4(){ note_dtor("S7577C4", this);}
void  S7577C4 ::v7(){vfunc_called(this, "_ZN7S7577C42v7Ev");}
void  S7577C4 ::v8(){vfunc_called(this, "_ZN7S7577C42v8Ev");}
S7577C4 ::S7577C4(){ note_ctor("S7577C4", this);} // tgen

static void Test_S7577C4()
{
  extern Class_Descriptor cd_S7577C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,34)];
    init_test(&cd_S7577C4, buf);
    S7577C4 *dp, &lv = *(dp=new (buf) S7577C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S7577C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7577C4)");
    check_base_class_offset(lv, (S7577C3*), 0, "S7577C4");
    check_field_offset(lv, s7577c4f0, ABISELECT(80,40), "S7577C4.s7577c4f0");
    check_field_offset(lv, s7577c4f1, ABISELECT(160,80), "S7577C4.s7577c4f1");
    check_field_offset(lv, s7577c4f2, ABISELECT(176,92), "S7577C4.s7577c4f2");
    test_class_info(&lv, &cd_S7577C4);
    dp->~S7577C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C4(Test_S7577C4, "S7577C4", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN7S7577C4C1Ev();
extern void _ZN7S7577C4D1Ev();
Name_Map name_map_S7577C4[] = {
  NSPAIR(_ZN7S7577C4C1Ev),
  NSPAIR(_ZN7S7577C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
static Base_Class bases_S7577C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7577C4[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C4D1Ev();
extern void _ZN7S7577C4D0Ev();
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
static  VTBL_ENTRY vtc_S7577C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C4[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S7577C4[];
extern  VTBL_ENTRY _ZTV7S7577C4[];
Class_Descriptor cd_S7577C4 = {  "S7577C4", // class name
  bases_S7577C4, 1,
  &(vtc_S7577C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI7S7577C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7577C4),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  S7577C7  : S7577C3 {
  int s7577c7f0;
  virtual void  v9(); // _ZN7S7577C72v9Ev
  virtual void  v10(); // _ZN7S7577C73v10Ev
  virtual void  v11(); // _ZN7S7577C73v11Ev
  ~S7577C7(); // tgen
  S7577C7(); // tgen
};
//SIG(-1 S7577C7) C1{ BC2{ v4 v5 v6 Fc Fl[8]} v1 v2 v3 Fi}


void  S7577C7 ::v9(){vfunc_called(this, "_ZN7S7577C72v9Ev");}
void  S7577C7 ::v10(){vfunc_called(this, "_ZN7S7577C73v10Ev");}
void  S7577C7 ::v11(){vfunc_called(this, "_ZN7S7577C73v11Ev");}
S7577C7 ::~S7577C7(){ note_dtor("S7577C7", this);} // tgen
S7577C7 ::S7577C7(){ note_ctor("S7577C7", this);} // tgen

static void Test_S7577C7()
{
  extern Class_Descriptor cd_S7577C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S7577C7, buf);
    S7577C7 *dp, &lv = *(dp=new (buf) S7577C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S7577C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7577C7)");
    check_base_class_offset(lv, (S7577C3*), 0, "S7577C7");
    check_field_offset(lv, s7577c7f0, ABISELECT(80,40), "S7577C7.s7577c7f0");
    test_class_info(&lv, &cd_S7577C7);
    dp->~S7577C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C7(Test_S7577C7, "S7577C7", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S7577C7C1Ev();
extern void _ZN7S7577C7D1Ev();
Name_Map name_map_S7577C7[] = {
  NSPAIR(_ZN7S7577C7C1Ev),
  NSPAIR(_ZN7S7577C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
static Base_Class bases_S7577C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7577C7[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY vtc_S7577C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C7[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
Class_Descriptor cd_S7577C7 = {  "S7577C7", // class name
  bases_S7577C7, 1,
  &(vtc_S7577C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S7577C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7577C7),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  S7577C6  : S7577C7 {
  long double s7577c6f0[7];
  void *s7577c6f1[2];
  virtual void  v12(); // _ZN7S7577C63v12Ev
  ~S7577C6(); // tgen
  S7577C6(); // tgen
};
//SIG(-1 S7577C6) C1{ BC2{ BC3{ v2 v3 v4 Fc Fl[8]} v5 v6 v7 Fi} v1 FD[7] Fp[2]}


void  S7577C6 ::v12(){vfunc_called(this, "_ZN7S7577C63v12Ev");}
S7577C6 ::~S7577C6(){ note_dtor("S7577C6", this);} // tgen
S7577C6 ::S7577C6(){ note_ctor("S7577C6", this);} // tgen

static void Test_S7577C6()
{
  extern Class_Descriptor cd_S7577C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,35)];
    init_test(&cd_S7577C6, buf);
    S7577C6 *dp, &lv = *(dp=new (buf) S7577C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,136), "sizeof(S7577C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7577C6)");
    check_base_class_offset(lv, (S7577C3*)(S7577C7*), 0, "S7577C6");
    check_base_class_offset(lv, (S7577C7*), 0, "S7577C6");
    check_field_offset(lv, s7577c6f0, ABISELECT(96,44), "S7577C6.s7577c6f0");
    check_field_offset(lv, s7577c6f1, ABISELECT(208,128), "S7577C6.s7577c6f1");
    test_class_info(&lv, &cd_S7577C6);
    dp->~S7577C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C6(Test_S7577C6, "S7577C6", ABISELECT(224,136));

#else // __cplusplus

extern void _ZN7S7577C6C1Ev();
extern void _ZN7S7577C6D1Ev();
Name_Map name_map_S7577C6[] = {
  NSPAIR(_ZN7S7577C6C1Ev),
  NSPAIR(_ZN7S7577C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
static Base_Class bases_S7577C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S7577C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S7577C6[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
extern void _ZN7S7577C63v12Ev();
static  VTBL_ENTRY vtc_S7577C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C6[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7577C63v12Ev,
};
extern VTBL_ENTRY _ZTI7S7577C6[];
extern  VTBL_ENTRY _ZTV7S7577C6[];
Class_Descriptor cd_S7577C6 = {  "S7577C6", // class name
  bases_S7577C6, 2,
  &(vtc_S7577C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,136), // object size
  NSPAIRA(_ZTI7S7577C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7577C6),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7577C9  : virtual S7577C7 {
  ::S7577C7 s7577c9f0;
  int s7577c9f1;
  ::S19762C18_nt s7577c9f2;
  void *s7577c9f3;
  ~S7577C9(); // tgen
  S7577C9(); // tgen
};
//SIG(-1 S7577C9) C1{ VBC2{ BC3{ v1 v2 v3 Fc Fl[8]} v4 v5 v6 Fi} FC2 Fi FC4{} Fp}


S7577C9 ::~S7577C9(){ note_dtor("S7577C9", this);} // tgen
S7577C9 ::S7577C9(){ note_ctor("S7577C9", this);} // tgen

static void Test_S7577C9()
{
  extern Class_Descriptor cd_S7577C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S7577C9, buf);
    S7577C9 *dp, &lv = *(dp=new (buf) S7577C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S7577C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7577C9)");
    check_base_class_offset(lv, (S7577C3*)(S7577C7*), ABISELECT(112,60), "S7577C9");
    check_base_class_offset(lv, (S7577C7*), ABISELECT(112,60), "S7577C9");
    check_field_offset(lv, s7577c9f0, ABISELECT(8,4), "S7577C9.s7577c9f0");
    check_field_offset(lv, s7577c9f1, ABISELECT(96,48), "S7577C9.s7577c9f1");
    check_field_offset(lv, s7577c9f2, ABISELECT(100,52), "S7577C9.s7577c9f2");
    check_field_offset(lv, s7577c9f3, ABISELECT(104,56), "S7577C9.s7577c9f3");
    test_class_info(&lv, &cd_S7577C9);
    dp->~S7577C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C9(Test_S7577C9, "S7577C9", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S7577C9C1Ev();
extern void _ZN7S7577C9D1Ev();
Name_Map name_map_S7577C9[] = {
  NSPAIR(_ZN7S7577C9C1Ev),
  NSPAIR(_ZN7S7577C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
static Base_Class bases_S7577C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    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
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7577C7,    ABISELECT(112,60), //bcp->offset
    3, //bcp->virtual_function_table_offset
    8, //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 _ZTI7S7577C9[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY vtc_S7577C9[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7577C9[];
static  VTT_ENTRY vtt_S7577C9[] = {
  {&(_ZTV7S7577C9[3]),  3,17},
  {&(_ZTV7S7577C9[11]),  11,17},
};
extern VTBL_ENTRY _ZTI7S7577C9[];
extern  VTBL_ENTRY _ZTV7S7577C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C9[];
Class_Descriptor cd_S7577C9 = {  "S7577C9", // class name
  bases_S7577C9, 2,
  &(vtc_S7577C9[0]), // expected_vtbl_contents
  &(vtt_S7577C9[0]), // expected_vtt_contents
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S7577C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7577C9),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7577C9),2, //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  S7577C8  : virtual S7577C4 , S7577C9 {
  long s7577c8f0;
  virtual  ~S7577C8(); // _ZN7S7577C8D2Ev
  S7577C8(); // tgen
};
//SIG(-1 S7577C8) C1{ VBC2{ BC3{ v1 v2 v3 Fc Fl[8]} vd v4 v5 FC3 FD FC3} BC4{ VBC5{ BC3 v6 v7 v8 Fi} FC5 Fi FC6{} Fp} vd Fl}


 S7577C8 ::~S7577C8(){ note_dtor("S7577C8", this);}
S7577C8 ::S7577C8(){ note_ctor("S7577C8", this);} // tgen

static void Test_S7577C8()
{
  extern Class_Descriptor cd_S7577C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,61)];
    init_test(&cd_S7577C8, buf);
    S7577C8 *dp, &lv = *(dp=new (buf) S7577C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,240), "sizeof(S7577C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7577C8)");
    check_base_class_offset(lv, (S7577C3*)(S7577C4*), ABISELECT(128,64), "S7577C8");
    check_base_class_offset(lv, (S7577C4*), ABISELECT(128,64), "S7577C8");
    check_base_class_offset(lv, (S7577C3*)(S7577C7*), ABISELECT(384,196), "S7577C8");
    check_base_class_offset(lv, (S7577C7*)(S7577C9*), ABISELECT(384,196), "S7577C8");
    check_base_class_offset(lv, (S7577C9*), 0, "S7577C8");
    check_field_offset(lv, s7577c8f0, ABISELECT(112,60), "S7577C8.s7577c8f0");
    test_class_info(&lv, &cd_S7577C8);
    dp->~S7577C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C8(Test_S7577C8, "S7577C8", ABISELECT(480,240));

#else // __cplusplus

extern void _ZN7S7577C8C1Ev();
extern void _ZN7S7577C8D2Ev();
Name_Map name_map_S7577C8[] = {
  NSPAIR(_ZN7S7577C8C1Ev),
  NSPAIR(_ZN7S7577C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C4;
extern VTBL_ENTRY _ZTI7S7577C4[];
extern  VTBL_ENTRY _ZTV7S7577C4[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
extern Class_Descriptor cd_S7577C9;
extern VTBL_ENTRY _ZTI7S7577C9[];
extern  VTBL_ENTRY _ZTV7S7577C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C9[];
static Base_Class bases_S7577C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7577C4,    ABISELECT(128,64), //bcp->offset
    6, //bcp->virtual_function_table_offset
    8, //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_S7577C3,    ABISELECT(384,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7577C7,    ABISELECT(384,196), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //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
    4, //immediately_derived
  0, 1},
  {&cd_S7577C9,    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 _ZTI7S7577C8[];
extern void _ZN7S7577C8D1Ev();
extern void _ZN7S7577C8D0Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7577C8D1Ev,_ZThn64_N7S7577C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7577C8D0Ev,_ZThn64_N7S7577C8D0Ev)() __attribute__((weak));
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY vtc_S7577C8[] = {
  ABISELECT(128,64),
  ABISELECT(384,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C8D0Ev,
  0,
  0,
  ABISELECT(-128,-64),
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7577C8[];
static  VTBL_ENTRY _tg__ZTV7S7577C9__7S7577C8[] = {
  ABISELECT(384,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__7S7577C9__7S7577C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
static  VTT_ENTRY vtt_S7577C8[] = {
  {&(_ZTV7S7577C8[4]),  4,35},
  {&(_tg__ZTV7S7577C9__7S7577C8[3]),  3,3},
  {&(_tg__ZTV7S7577C7__7S7577C9__7S7577C8[8]),  8,14},
  {&(_ZTV7S7577C8[14]),  14,35},
  {&(_ZTV7S7577C8[29]),  29,35},
};
extern VTBL_ENTRY _ZTI7S7577C8[];
extern  VTBL_ENTRY _ZTV7S7577C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C8[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7577C8D0Ev,_ZThn64_N7S7577C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7577C8D1Ev,_ZThn64_N7S7577C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7577C8 = {  "S7577C8", // class name
  bases_S7577C8, 5,
  &(vtc_S7577C8[0]), // expected_vtbl_contents
  &(vtt_S7577C8[0]), // expected_vtt_contents
  ABISELECT(480,240), // object size
  NSPAIRA(_ZTI7S7577C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7577C8),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7577C8),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7577C5  : S7577C3 , S7577C6 , virtual S7577C2 , virtual S7577C4 , virtual S7577C8 {
  void *s7577c5f0;
  virtual void  v13(); // _ZN7S7577C53v13Ev
  virtual void  v14(); // _ZN7S7577C53v14Ev
  ~S7577C5(); // tgen
  S7577C5(); // tgen
};
//SIG(-1 S7577C5) C1{ BC2{ v3 v4 v5 Fc Fl[8]} BC3{ BC4{ BC2 v6 v7 v8 Fi} v9 FD[7] Fp[2]} VBC5{ VBC2 v10 Fs Fp[2] Fs[4]} VBC6{ BC2 vd v11 v12 FC2 FD FC2} VBC7{ VBC6 BC8{ VBC4 FC4 Fi FC9{} Fp} vd Fl} v1 v2 Fp}


void  S7577C5 ::v13(){vfunc_called(this, "_ZN7S7577C53v13Ev");}
void  S7577C5 ::v14(){vfunc_called(this, "_ZN7S7577C53v14Ev");}
S7577C5 ::~S7577C5(){ note_dtor("S7577C5", this);} // tgen
S7577C5 ::S7577C5(){ note_ctor("S7577C5", this);} // tgen

static void Test_S7577C5()
{
  extern Class_Descriptor cd_S7577C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,122)];
    init_test(&cd_S7577C5, buf);
    S7577C5 *dp, &lv = *(dp=new (buf) S7577C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,484), "sizeof(S7577C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7577C5)");
    /*is_ambiguous_... S7577C5::S7577C3 */ AMB_check_base_class_offset(lv, (S7577C3*), 0, "S7577C5");
    check_base_class_offset(lv, (S7577C3*)(S7577C7*)(S7577C6*), ABISELECT(80,40), "S7577C5");
    check_base_class_offset(lv, (S7577C7*)(S7577C6*), ABISELECT(80,40), "S7577C5");
    check_base_class_offset(lv, (S7577C6*), ABISELECT(80,40), "S7577C5");
    check_base_class_offset(lv, (S7577C3*)(S7577C2*), ABISELECT(352,204), "S7577C5");
    check_base_class_offset(lv, (S7577C2*), ABISELECT(312,180), "S7577C5");
    check_base_class_offset(lv, (S7577C3*)(S7577C4*), ABISELECT(432,244), "S7577C5");
    check_base_class_offset(lv, (S7577C4*), ABISELECT(432,244), "S7577C5");
    check_base_class_offset(lv, (S7577C4*)(S7577C8*), ABISELECT(432,244), "S7577C5");
    /*is_ambiguous_... S7577C5::S7577C7 */ AMB_check_base_class_offset(lv, (S7577C3*)(S7577C7*), ABISELECT(808,440), "S7577C5");
    check_base_class_offset(lv, (S7577C7*)(S7577C9*)(S7577C8*), ABISELECT(808,440), "S7577C5");
    check_base_class_offset(lv, (S7577C9*)(S7577C8*), ABISELECT(688,376), "S7577C5");
    check_base_class_offset(lv, (S7577C8*), ABISELECT(688,376), "S7577C5");
    check_field_offset(lv, s7577c5f0, ABISELECT(304,176), "S7577C5.s7577c5f0");
    test_class_info(&lv, &cd_S7577C5);
    dp->~S7577C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C5(Test_S7577C5, "S7577C5", ABISELECT(896,484));

#else // __cplusplus

extern void _ZN7S7577C5C1Ev();
extern void _ZN7S7577C5D1Ev();
Name_Map name_map_S7577C5[] = {
  NSPAIR(_ZN7S7577C5C1Ev),
  NSPAIR(_ZN7S7577C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
extern Class_Descriptor cd_S7577C6;
extern VTBL_ENTRY _ZTI7S7577C6[];
extern  VTBL_ENTRY _ZTV7S7577C6[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C2;
extern VTBL_ENTRY _ZTI7S7577C2[];
extern  VTBL_ENTRY _ZTV7S7577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C2[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C4;
extern VTBL_ENTRY _ZTI7S7577C4[];
extern  VTBL_ENTRY _ZTV7S7577C4[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
extern Class_Descriptor cd_S7577C9;
extern VTBL_ENTRY _ZTI7S7577C9[];
extern  VTBL_ENTRY _ZTV7S7577C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C9[];
extern Class_Descriptor cd_S7577C8;
extern VTBL_ENTRY _ZTI7S7577C8[];
extern  VTBL_ENTRY _ZTV7S7577C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C8[];
static Base_Class bases_S7577C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7577C3,    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
    10, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7577C7,    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
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7577C6,    ABISELECT(80,40), //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
    -1, //immediately_derived
  1, 0},
  {&cd_S7577C3,    ABISELECT(352,204), //bcp->offset
    28, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7577C2,    ABISELECT(312,180), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7577C3,    ABISELECT(432,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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7577C4,    ABISELECT(432,244), //bcp->offset
    36, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7577C3,    ABISELECT(808,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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7577C7,    ABISELECT(808,440), //bcp->offset
    58, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7577C9,    ABISELECT(688,376), //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
    11, //immediately_derived
  0, 0},
  {&cd_S7577C8,    ABISELECT(688,376), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7577C5[];
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C53v13Ev();
extern void _ZN7S7577C53v14Ev();
extern void _ZN7S7577C5D1Ev();
extern void _ZN7S7577C5D0Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
extern void _ZN7S7577C63v12Ev();
extern void _ZN7S7577C22v6Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev)();
extern void ABISELECT(_ZThn432_N7S7577C5D1Ev,_ZThn244_N7S7577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev)();
extern void ABISELECT(_ZThn432_N7S7577C5D0Ev,_ZThn244_N7S7577C5D0Ev)() __attribute__((weak));
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
extern void ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev)();
extern void ABISELECT(_ZThn688_N7S7577C5D1Ev,_ZThn376_N7S7577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev)();
extern void ABISELECT(_ZThn688_N7S7577C5D0Ev,_ZThn376_N7S7577C5D0Ev)() __attribute__((weak));
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY vtc_S7577C5[] = {
  ABISELECT(808,440),
  ABISELECT(688,376),
  ABISELECT(432,244),
  ABISELECT(352,204),
  ABISELECT(312,180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7577C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C5D0Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7577C63v12Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-312,-180),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  0,
  0,
  ABISELECT(-432,-244),
  0,
  0,
  0,
  ABISELECT(-432,-244),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
  ABISELECT(-688,-376),
  ABISELECT(-256,-132),
  ABISELECT(120,64),
  ABISELECT(-688,-376),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-808,-440),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7577C5[];
extern void _ZN7S7577C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C2__7S7577C5[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C3__7S7577C2__7S7577C5[] = {
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern void _ZN7S7577C8D1Ev();
extern void _ZN7S7577C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C8__7S7577C5[] = {
  ABISELECT(-256,-132),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7577C97S7577C8__7S7577C5[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__7S7577C97S7577C8__7S7577C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev)();
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C4__7S7577C8__7S7577C5[] = {
  0,
  0,
  ABISELECT(256,132),
  0,
  0,
  0,
  ABISELECT(256,132),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__7S7577C8__7S7577C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
static  VTT_ENTRY vtt_S7577C5[] = {
  {&(_ZTV7S7577C5[7]),  7,72},
  {&(_ZTV7S7577C5[27]),  27,72},
  {&(_ZTV7S7577C5[33]),  33,72},
  {&(_ZTV7S7577C5[44]),  44,72},
  {&(_ZTV7S7577C5[56]),  56,72},
  {&(_ZTV7S7577C5[66]),  66,72},
  {&(_tg__ZTV7S7577C2__7S7577C5[3]),  3,4},
  {&(_tg__ZTV7S7577C3__7S7577C2__7S7577C5[5]),  5,8},
  {&(_tg__ZTV7S7577C8__7S7577C5[4]),  4,6},
  {&(_tg__ZTV7S7577C97S7577C8__7S7577C5[3]),  3,3},
  {&(_tg__ZTV7S7577C7__7S7577C97S7577C8__7S7577C5[8]),  8,14},
  {&(_tg__ZTV7S7577C4__7S7577C8__7S7577C5[8]),  8,15},
  {&(_tg__ZTV7S7577C7__7S7577C8__7S7577C5[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S7577C5[];
extern  VTBL_ENTRY _ZTV7S7577C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C5[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7577C5D0Ev,_ZThn376_N7S7577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn688_N7S7577C5D1Ev,_ZThn376_N7S7577C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7577C5D0Ev,_ZThn244_N7S7577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7577C5D1Ev,_ZThn244_N7S7577C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7577C5 = {  "S7577C5", // class name
  bases_S7577C5, 12,
  &(vtc_S7577C5[0]), // expected_vtbl_contents
  &(vtt_S7577C5[0]), // expected_vtt_contents
  ABISELECT(896,484), // object size
  NSPAIRA(_ZTI7S7577C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7577C5),72, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7577C5),13, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7577C1  : S7577C2 , virtual S7577C4 , S7577C5 {
  ::S7577C9 s7577c1f0[4];
  virtual void  v1(); // _ZN7S7577C12v1Ev
  virtual void  v2(); // _ZN7S7577C12v2Ev
  ~S7577C1(); // tgen
  S7577C1(); // tgen
};
//SIG(1 S7577C1) C1{ BC2{ VBC3{ v3 v4 v5 Fc Fl[8]} v6 Fs Fp[2] Fs[4]} VBC4{ BC3 vd v7 v8 FC3 FD FC3} BC5{ BC3 BC6{ BC7{ BC3 v9 v10 v11 Fi} v12 FD[7] Fp[2]} VBC2 VBC4 VBC8{ VBC4 BC9{ VBC7 FC7 Fi FC10{} Fp} vd Fl} v13 v14 Fp} v1 v2 FC9[4]}


void  S7577C1 ::v1(){vfunc_called(this, "_ZN7S7577C12v1Ev");}
void  S7577C1 ::v2(){vfunc_called(this, "_ZN7S7577C12v2Ev");}
S7577C1 ::~S7577C1(){ note_dtor("S7577C1", this);} // tgen
S7577C1 ::S7577C1(){ note_ctor("S7577C1", this);} // tgen

static void Test_S7577C1()
{
  extern Class_Descriptor cd_S7577C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(111,232)];
    init_test(&cd_S7577C1, buf);
    S7577C1 *dp, &lv = *(dp=new (buf) S7577C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1760,924), "sizeof(S7577C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7577C1)");
    /*is_ambiguous_... S7577C1::S7577C2 */ AMB_check_base_class_offset(lv, (S7577C3*)(S7577C2*), ABISELECT(1160,620), "S7577C1");
    /*is_ambiguous_... S7577C1::S7577C2 */ AMB_check_base_class_offset(lv, (S7577C3*)(S7577C2*), ABISELECT(1160,620), "S7577C1");
    /*is_ambiguous_... S7577C1::S7577C2 */ AMB_check_base_class_offset(lv, (S7577C2*), 0, "S7577C1");
    check_base_class_offset(lv, (S7577C3*)(S7577C4*), ABISELECT(1248,660), "S7577C1");
    check_base_class_offset(lv, (S7577C4*), ABISELECT(1248,660), "S7577C1");
    check_base_class_offset(lv, (S7577C4*)(S7577C5*), ABISELECT(1248,660), "S7577C1");
    check_base_class_offset(lv, (S7577C4*)(S7577C8*), ABISELECT(1248,660), "S7577C1");
    /*is_ambiguous_... S7577C5::S7577C3 */ AMB_check_base_class_offset(lv, (S7577C3*)(S7577C5*), ABISELECT(48,24), "S7577C1");
    check_base_class_offset(lv, (S7577C3*)(S7577C7*)(S7577C6*)(S7577C5*), ABISELECT(128,64), "S7577C1");
    check_base_class_offset(lv, (S7577C7*)(S7577C6*)(S7577C5*), ABISELECT(128,64), "S7577C1");
    check_base_class_offset(lv, (S7577C6*)(S7577C5*), ABISELECT(128,64), "S7577C1");
    check_base_class_offset(lv, (S7577C2*)(S7577C5*), ABISELECT(1504,792), "S7577C1");
    /*is_ambiguous_... S7577C1::S7577C7 */ AMB_check_base_class_offset(lv, (S7577C3*)(S7577C7*), ABISELECT(1664,880), "S7577C1");
    check_base_class_offset(lv, (S7577C7*)(S7577C9*)(S7577C8*), ABISELECT(1664,880), "S7577C1");
    check_base_class_offset(lv, (S7577C9*)(S7577C8*), ABISELECT(1544,816), "S7577C1");
    check_base_class_offset(lv, (S7577C8*)(S7577C5*), ABISELECT(1544,816), "S7577C1");
    check_base_class_offset(lv, (S7577C5*), ABISELECT(48,24), "S7577C1");
    check_field_offset(lv, s7577c1f0, ABISELECT(360,204), "S7577C1.s7577c1f0");
    test_class_info(&lv, &cd_S7577C1);
    dp->~S7577C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7577C1(Test_S7577C1, "S7577C1", ABISELECT(1760,924));

#else // __cplusplus

extern void _ZN7S7577C1C1Ev();
extern void _ZN7S7577C1D1Ev();
Name_Map name_map_S7577C1[] = {
  NSPAIR(_ZN7S7577C1C1Ev),
  NSPAIR(_ZN7S7577C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C2;
extern VTBL_ENTRY _ZTI7S7577C2[];
extern  VTBL_ENTRY _ZTV7S7577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C2[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C4;
extern VTBL_ENTRY _ZTI7S7577C4[];
extern  VTBL_ENTRY _ZTV7S7577C4[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
extern Class_Descriptor cd_S7577C6;
extern VTBL_ENTRY _ZTI7S7577C6[];
extern  VTBL_ENTRY _ZTV7S7577C6[];
extern Class_Descriptor cd_S7577C2;
extern VTBL_ENTRY _ZTI7S7577C2[];
extern  VTBL_ENTRY _ZTV7S7577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C2[];
extern Class_Descriptor cd_S7577C3;
extern VTBL_ENTRY _ZTI7S7577C3[];
extern  VTBL_ENTRY _ZTV7S7577C3[];
extern Class_Descriptor cd_S7577C7;
extern VTBL_ENTRY _ZTI7S7577C7[];
extern  VTBL_ENTRY _ZTV7S7577C7[];
extern Class_Descriptor cd_S7577C9;
extern VTBL_ENTRY _ZTI7S7577C9[];
extern  VTBL_ENTRY _ZTV7S7577C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C9[];
extern Class_Descriptor cd_S7577C8;
extern VTBL_ENTRY _ZTI7S7577C8[];
extern  VTBL_ENTRY _ZTV7S7577C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C8[];
extern Class_Descriptor cd_S7577C5;
extern VTBL_ENTRY _ZTI7S7577C5[];
extern  VTBL_ENTRY _ZTV7S7577C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C5[];
static Base_Class bases_S7577C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7577C3,    ABISELECT(1160,620), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //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_S7577C2,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7577C3,    ABISELECT(1248,660), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7577C4,    ABISELECT(1248,660), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7577C3,    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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7577C3,    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
    11, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7577C7,    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
    12, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7577C6,    ABISELECT(128,64), //bcp->offset
    26, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7577C2,    ABISELECT(1504,792), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7577C3,    ABISELECT(1664,880), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7577C7,    ABISELECT(1664,880), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7577C9,    ABISELECT(1544,816), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7577C8,    ABISELECT(1544,816), //bcp->offset
    63, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7577C5,    ABISELECT(48,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7577C1[];
extern void _ZN7S7577C22v6Ev();
extern void _ZN7S7577C12v1Ev();
extern void _ZN7S7577C12v2Ev();
extern void _ZN7S7577C1D1Ev();
extern void _ZN7S7577C1D0Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C53v13Ev();
extern void _ZN7S7577C53v14Ev();
extern void ABISELECT(_ZThn48_N7S7577C1D1Ev,_ZThn24_N7S7577C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7577C1D0Ev,_ZThn24_N7S7577C1D0Ev)();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
extern void _ZN7S7577C63v12Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C1D1Ev,_ZTv0_n24_N7S7577C1D1Ev)();
extern void ABISELECT(_ZThn1248_N7S7577C1D1Ev,_ZThn660_N7S7577C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7577C1D0Ev,_ZTv0_n24_N7S7577C1D0Ev)();
extern void ABISELECT(_ZThn1248_N7S7577C1D0Ev,_ZThn660_N7S7577C1D0Ev)() __attribute__((weak));
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
extern void _ZN7S7577C22v6Ev();
extern void ABISELECT(_ZTv0_n40_N7S7577C1D1Ev,_ZTv0_n20_N7S7577C1D1Ev)();
extern void ABISELECT(_ZThn1544_N7S7577C1D1Ev,_ZThn816_N7S7577C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7577C1D0Ev,_ZTv0_n20_N7S7577C1D0Ev)();
extern void ABISELECT(_ZThn1544_N7S7577C1D0Ev,_ZThn816_N7S7577C1D0Ev)() __attribute__((weak));
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY vtc_S7577C1[] = {
  ABISELECT(1664,880),
  ABISELECT(1544,816),
  ABISELECT(1504,792),
  ABISELECT(1248,660),
  ABISELECT(1160,620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7577C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7577C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7577C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C1D0Ev,
  ABISELECT(1616,856),
  ABISELECT(1496,792),
  ABISELECT(1200,636),
  ABISELECT(1112,596),
  ABISELECT(1456,768),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7577C1D1Ev,_ZThn24_N7S7577C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7577C1D0Ev,_ZThn24_N7S7577C1D0Ev),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7577C63v12Ev,
  0,
  0,
  0,
  ABISELECT(-1160,-620),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  0,
  0,
  ABISELECT(-1248,-660),
  0,
  0,
  0,
  ABISELECT(-1248,-660),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C1D1Ev,_ZTv0_n24_N7S7577C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C1D0Ev,_ZTv0_n24_N7S7577C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
  0,
  ABISELECT(-344,-172),
  ABISELECT(-1504,-792),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
  ABISELECT(-1544,-816),
  ABISELECT(-296,-156),
  ABISELECT(120,64),
  ABISELECT(-1544,-816),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C1D1Ev,_ZTv0_n20_N7S7577C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C1D0Ev,_ZTv0_n20_N7S7577C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1664,-880),
  (VTBL_ENTRY)&(_ZTI7S7577C1[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7577C1[];
extern void _ZN7S7577C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C2__A__7S7577C1[] = {
  ABISELECT(1160,620),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C3__7S7577C2__A__7S7577C1[] = {
  0,
  0,
  0,
  ABISELECT(-1160,-620),
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C53v13Ev();
extern void _ZN7S7577C53v14Ev();
extern void _ZN7S7577C5D1Ev();
extern void _ZN7S7577C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C5__7S7577C1[] = {
  ABISELECT(1616,856),
  ABISELECT(1496,792),
  ABISELECT(1200,636),
  ABISELECT(1112,596),
  ABISELECT(1456,768),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7577C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7577C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C5D0Ev,
};
extern void _ZN7S7577C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C2__7S7577C5__7S7577C1[] = {
  0,
  ABISELECT(-344,-172),
  ABISELECT(-1456,-768),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C3__A2__7S7577C5__7S7577C1[] = {
  0,
  0,
  0,
  ABISELECT(-1112,-596),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev)();
extern void ABISELECT(_ZThn1200_N7S7577C5D1Ev,_ZThn636_N7S7577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev)();
extern void ABISELECT(_ZThn1200_N7S7577C5D0Ev,_ZThn636_N7S7577C5D0Ev)() __attribute__((weak));
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C4__7S7577C5__7S7577C1[] = {
  0,
  0,
  ABISELECT(-1200,-636),
  0,
  0,
  0,
  ABISELECT(-1200,-636),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev)();
extern void ABISELECT(_ZThn1496_N7S7577C5D1Ev,_ZThn792_N7S7577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev)();
extern void ABISELECT(_ZThn1496_N7S7577C5D0Ev,_ZThn792_N7S7577C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7577C8__7S7577C5__7S7577C1[] = {
  ABISELECT(-1496,-792),
  ABISELECT(-296,-156),
  ABISELECT(120,64),
  ABISELECT(-1496,-792),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev),
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__A1__7S7577C5__7S7577C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1616,-856),
  (VTBL_ENTRY)&(_ZTI7S7577C5[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern void _ZN7S7577C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C2__A1__7S7577C1[] = {
  ABISELECT(-344,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C22v6Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C3__7S7577C2__A1__7S7577C1[] = {
  0,
  0,
  0,
  ABISELECT(344,172),
  (VTBL_ENTRY)&(_ZTI7S7577C2[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
};
extern void _ZN7S7577C8D1Ev();
extern void _ZN7S7577C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C8__7S7577C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7577C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7577C97S7577C8__7S7577C1[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__7S7577C97S7577C8__7S7577C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C9[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev)();
extern void _ZN7S7577C42v7Ev();
extern void _ZN7S7577C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C4__7S7577C8__7S7577C1[] = {
  0,
  0,
  ABISELECT(296,156),
  0,
  0,
  0,
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D1Ev,_ZTv0_n24_N7S7577C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7577C8D0Ev,_ZTv0_n24_N7S7577C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7577C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7577C42v8Ev,
};
extern void _ZN7S7577C32v3Ev();
extern void _ZN7S7577C32v4Ev();
extern void _ZN7S7577C32v5Ev();
extern void _ZN7S7577C72v9Ev();
extern void _ZN7S7577C73v10Ev();
extern void _ZN7S7577C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7577C7__7S7577C8__7S7577C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7577C8[0]),
  (VTBL_ENTRY)&_ZN7S7577C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7577C72v9Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7577C73v11Ev,
};
static  VTT_ENTRY vtt_S7577C1[] = {
  {&(_ZTV7S7577C1[7]),  7,84},
  {&(_tg__ZTV7S7577C2__A__7S7577C1[3]),  3,4},
  {&(_tg__ZTV7S7577C3__7S7577C2__A__7S7577C1[5]),  5,8},
  {&(_tg__ZTV7S7577C5__7S7577C1[7]),  7,14},
  {&(_tg__ZTV7S7577C2__7S7577C5__7S7577C1[4]),  4,5},
  {&(_tg__ZTV7S7577C3__A2__7S7577C5__7S7577C1[5]),  5,8},
  {&(_tg__ZTV7S7577C4__7S7577C5__7S7577C1[8]),  8,15},
  {&(_tg__ZTV7S7577C8__7S7577C5__7S7577C1[5]),  5,7},
  {&(_tg__ZTV7S7577C7__A1__7S7577C5__7S7577C1[8]),  8,14},
  {&(_ZTV7S7577C1[40]),  40,84},
  {&(_ZTV7S7577C1[51]),  51,84},
  {&(_ZTV7S7577C1[19]),  19,84},
  {&(_ZTV7S7577C1[62]),  62,84},
  {&(_ZTV7S7577C1[68]),  68,84},
  {&(_ZTV7S7577C1[78]),  78,84},
  {&(_tg__ZTV7S7577C2__A1__7S7577C1[3]),  3,4},
  {&(_tg__ZTV7S7577C3__7S7577C2__A1__7S7577C1[5]),  5,8},
  {&(_tg__ZTV7S7577C8__7S7577C1[4]),  4,6},
  {&(_tg__ZTV7S7577C97S7577C8__7S7577C1[3]),  3,3},
  {&(_tg__ZTV7S7577C7__7S7577C97S7577C8__7S7577C1[8]),  8,14},
  {&(_tg__ZTV7S7577C4__7S7577C8__7S7577C1[8]),  8,15},
  {&(_tg__ZTV7S7577C7__7S7577C8__7S7577C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S7577C1[];
extern  VTBL_ENTRY _ZTV7S7577C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7577C1[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C5D0Ev,_ZTv0_n20_N7S7577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1496_N7S7577C5D0Ev,_ZThn792_N7S7577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C5D1Ev,_ZTv0_n20_N7S7577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1496_N7S7577C5D1Ev,_ZThn792_N7S7577C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C5D0Ev,_ZTv0_n24_N7S7577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7577C5D0Ev,_ZThn636_N7S7577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C5D1Ev,_ZTv0_n24_N7S7577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7577C5D1Ev,_ZThn636_N7S7577C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C1D0Ev,_ZTv0_n20_N7S7577C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1544_N7S7577C1D0Ev,_ZThn816_N7S7577C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7577C1D1Ev,_ZTv0_n20_N7S7577C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1544_N7S7577C1D1Ev,_ZThn816_N7S7577C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C1D0Ev,_ZTv0_n24_N7S7577C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S7577C1D0Ev,_ZThn660_N7S7577C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7577C1D1Ev,_ZTv0_n24_N7S7577C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S7577C1D1Ev,_ZThn660_N7S7577C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7577C1 = {  "S7577C1", // class name
  bases_S7577C1, 14,
  &(vtc_S7577C1[0]), // expected_vtbl_contents
  &(vtt_S7577C1[0]), // expected_vtt_contents
  ABISELECT(1760,924), // object size
  NSPAIRA(_ZTI7S7577C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7577C1),84, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7577C1),22, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20975C5  {
  char s20975c5f0;
  virtual void  v5(); // _ZN8S20975C52v5Ev
  virtual void  v6(); // _ZN8S20975C52v6Ev
  virtual void  v7(); // _ZN8S20975C52v7Ev
  virtual void  v8(); // _ZN8S20975C52v8Ev
  virtual void  v9(); // _ZN8S20975C52v9Ev
  virtual void  v10(); // _ZN8S20975C53v10Ev
  ~S20975C5(); // tgen
  S20975C5(); // tgen
};
//SIG(-1 S20975C5) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S20975C5 ::v5(){vfunc_called(this, "_ZN8S20975C52v5Ev");}
void  S20975C5 ::v6(){vfunc_called(this, "_ZN8S20975C52v6Ev");}
void  S20975C5 ::v7(){vfunc_called(this, "_ZN8S20975C52v7Ev");}
void  S20975C5 ::v8(){vfunc_called(this, "_ZN8S20975C52v8Ev");}
void  S20975C5 ::v9(){vfunc_called(this, "_ZN8S20975C52v9Ev");}
void  S20975C5 ::v10(){vfunc_called(this, "_ZN8S20975C53v10Ev");}
S20975C5 ::~S20975C5(){ note_dtor("S20975C5", this);} // tgen
S20975C5 ::S20975C5(){ note_ctor("S20975C5", this);} // tgen

static void Test_S20975C5()
{
  extern Class_Descriptor cd_S20975C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20975C5, buf);
    S20975C5 *dp, &lv = *(dp=new (buf) S20975C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20975C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C5)");
    check_field_offset(lv, s20975c5f0, ABISELECT(8,4), "S20975C5.s20975c5f0");
    test_class_info(&lv, &cd_S20975C5);
    dp->~S20975C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C5(Test_S20975C5, "S20975C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20975C5C1Ev();
extern void _ZN8S20975C5D1Ev();
Name_Map name_map_S20975C5[] = {
  NSPAIR(_ZN8S20975C5C1Ev),
  NSPAIR(_ZN8S20975C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20975C5[];
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
static  VTBL_ENTRY vtc_S20975C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C5[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
};
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
Class_Descriptor cd_S20975C5 = {  "S20975C5", // class name
  0,0,//no base classes
  &(vtc_S20975C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20975C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20975C5),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  S20975C4  : S20975C5 {
  int s20975c4f0;
  virtual void  v11(); // _ZN8S20975C43v11Ev
  virtual void  v12(); // _ZN8S20975C43v12Ev
  ~S20975C4(); // tgen
  S20975C4(); // tgen
};
//SIG(-1 S20975C4) C1{ BC2{ v3 v4 v5 v6 v7 v8 Fc} v1 v2 Fi}


void  S20975C4 ::v11(){vfunc_called(this, "_ZN8S20975C43v11Ev");}
void  S20975C4 ::v12(){vfunc_called(this, "_ZN8S20975C43v12Ev");}
S20975C4 ::~S20975C4(){ note_dtor("S20975C4", this);} // tgen
S20975C4 ::S20975C4(){ note_ctor("S20975C4", this);} // tgen

static void Test_S20975C4()
{
  extern Class_Descriptor cd_S20975C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20975C4, buf);
    S20975C4 *dp, &lv = *(dp=new (buf) S20975C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20975C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C4)");
    check_base_class_offset(lv, (S20975C5*), 0, "S20975C4");
    check_field_offset(lv, s20975c4f0, ABISELECT(12,8), "S20975C4.s20975c4f0");
    test_class_info(&lv, &cd_S20975C4);
    dp->~S20975C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C4(Test_S20975C4, "S20975C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20975C4C1Ev();
extern void _ZN8S20975C4D1Ev();
Name_Map name_map_S20975C4[] = {
  NSPAIR(_ZN8S20975C4C1Ev),
  NSPAIR(_ZN8S20975C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
static Base_Class bases_S20975C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20975C4[];
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C4[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
Class_Descriptor cd_S20975C4 = {  "S20975C4", // class name
  bases_S20975C4, 1,
  &(vtc_S20975C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20975C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20975C4),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20975C6  {
  virtual void  v13(); // _ZN8S20975C63v13Ev
  virtual void  v14(); // _ZN8S20975C63v14Ev
  virtual void  v15(); // _ZN8S20975C63v15Ev
  virtual void  v16(); // _ZN8S20975C63v16Ev
  virtual void  v17(); // _ZN8S20975C63v17Ev
  ~S20975C6(); // tgen
  S20975C6(); // tgen
};
//SIG(-1 S20975C6) C1{ v1 v2 v3 v4 v5}


void  S20975C6 ::v13(){vfunc_called(this, "_ZN8S20975C63v13Ev");}
void  S20975C6 ::v14(){vfunc_called(this, "_ZN8S20975C63v14Ev");}
void  S20975C6 ::v15(){vfunc_called(this, "_ZN8S20975C63v15Ev");}
void  S20975C6 ::v16(){vfunc_called(this, "_ZN8S20975C63v16Ev");}
void  S20975C6 ::v17(){vfunc_called(this, "_ZN8S20975C63v17Ev");}
S20975C6 ::~S20975C6(){ note_dtor("S20975C6", this);} // tgen
S20975C6 ::S20975C6(){ note_ctor("S20975C6", this);} // tgen

static void Test_S20975C6()
{
  extern Class_Descriptor cd_S20975C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20975C6, buf);
    S20975C6 *dp, &lv = *(dp=new (buf) S20975C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20975C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C6)");
    test_class_info(&lv, &cd_S20975C6);
    dp->~S20975C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C6(Test_S20975C6, "S20975C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20975C6C1Ev();
extern void _ZN8S20975C6D1Ev();
Name_Map name_map_S20975C6[] = {
  NSPAIR(_ZN8S20975C6C1Ev),
  NSPAIR(_ZN8S20975C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20975C6[];
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
static  VTBL_ENTRY vtc_S20975C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C6[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
};
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
Class_Descriptor cd_S20975C6 = {  "S20975C6", // class name
  0,0,//no base classes
  &(vtc_S20975C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20975C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20975C6),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  S20975C3  : virtual S20975C4 , S20975C6 {
  int s20975c3f0;
  virtual void  v18(); // _ZN8S20975C33v18Ev
  ~S20975C3(); // tgen
  S20975C3(); // tgen
};
//SIG(-1 S20975C3) C1{ VBC2{ BC3{ v2 v3 v4 v5 v6 v7 Fc} v8 v9 Fi} BC4{ v10 v11 v12 v13 v14} v1 Fi}


void  S20975C3 ::v18(){vfunc_called(this, "_ZN8S20975C33v18Ev");}
S20975C3 ::~S20975C3(){ note_dtor("S20975C3", this);} // tgen
S20975C3 ::S20975C3(){ note_ctor("S20975C3", this);} // tgen

static void Test_S20975C3()
{
  extern Class_Descriptor cd_S20975C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20975C3, buf);
    S20975C3 *dp, &lv = *(dp=new (buf) S20975C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20975C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C3)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(16,8), "S20975C3");
    check_base_class_offset(lv, (S20975C4*), ABISELECT(16,8), "S20975C3");
    check_base_class_offset(lv, (S20975C6*), 0, "S20975C3");
    check_field_offset(lv, s20975c3f0, ABISELECT(8,4), "S20975C3.s20975c3f0");
    test_class_info(&lv, &cd_S20975C3);
    dp->~S20975C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C3(Test_S20975C3, "S20975C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20975C3C1Ev();
extern void _ZN8S20975C3D1Ev();
Name_Map name_map_S20975C3[] = {
  NSPAIR(_ZN8S20975C3C1Ev),
  NSPAIR(_ZN8S20975C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
static Base_Class bases_S20975C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    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_S20975C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    10, //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_S20975C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20975C3[];
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C3[];
static  VTT_ENTRY vtt_S20975C3[] = {
  {&(_ZTV8S20975C3[3]),  3,27},
  {&(_ZTV8S20975C3[19]),  19,27},
};
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
Class_Descriptor cd_S20975C3 = {  "S20975C3", // class name
  bases_S20975C3, 3,
  &(vtc_S20975C3[0]), // expected_vtbl_contents
  &(vtt_S20975C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20975C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20975C3),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C3),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  S20975C9  : virtual S20975C4 {
  __tsi64 s20975c9f0;
  ::S20975C5 s20975c9f1;
  virtual void  v19(); // _ZN8S20975C93v19Ev
  virtual void  v20(); // _ZN8S20975C93v20Ev
  virtual void  v21(); // _ZN8S20975C93v21Ev
  virtual void  v22(); // _ZN8S20975C93v22Ev
  ~S20975C9(); // tgen
  S20975C9(); // tgen
};
//SIG(-1 S20975C9) C1{ VBC2{ BC3{ v5 v6 v7 v8 v9 v10 Fc} v11 v12 Fi} v1 v2 v3 v4 FL FC3}


void  S20975C9 ::v19(){vfunc_called(this, "_ZN8S20975C93v19Ev");}
void  S20975C9 ::v20(){vfunc_called(this, "_ZN8S20975C93v20Ev");}
void  S20975C9 ::v21(){vfunc_called(this, "_ZN8S20975C93v21Ev");}
void  S20975C9 ::v22(){vfunc_called(this, "_ZN8S20975C93v22Ev");}
S20975C9 ::~S20975C9(){ note_dtor("S20975C9", this);} // tgen
S20975C9 ::S20975C9(){ note_ctor("S20975C9", this);} // tgen

static void Test_S20975C9()
{
  extern Class_Descriptor cd_S20975C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20975C9, buf);
    S20975C9 *dp, &lv = *(dp=new (buf) S20975C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20975C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C9)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(32,20), "S20975C9");
    check_base_class_offset(lv, (S20975C4*), ABISELECT(32,20), "S20975C9");
    check_field_offset(lv, s20975c9f0, ABISELECT(8,4), "S20975C9.s20975c9f0");
    check_field_offset(lv, s20975c9f1, ABISELECT(16,12), "S20975C9.s20975c9f1");
    test_class_info(&lv, &cd_S20975C9);
    dp->~S20975C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C9(Test_S20975C9, "S20975C9", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20975C9C1Ev();
extern void _ZN8S20975C9D1Ev();
Name_Map name_map_S20975C9[] = {
  NSPAIR(_ZN8S20975C9C1Ev),
  NSPAIR(_ZN8S20975C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
static Base_Class bases_S20975C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20975C4,    ABISELECT(32,20), //bcp->offset
    7, //bcp->virtual_function_table_offset
    10, //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 _ZTI8S20975C9[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C9[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C9[];
static  VTT_ENTRY vtt_S20975C9[] = {
  {&(_ZTV8S20975C9[3]),  3,25},
  {&(_ZTV8S20975C9[17]),  17,25},
};
extern VTBL_ENTRY _ZTI8S20975C9[];
extern  VTBL_ENTRY _ZTV8S20975C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C9[];
Class_Descriptor cd_S20975C9 = {  "S20975C9", // class name
  bases_S20975C9, 2,
  &(vtc_S20975C9[0]), // expected_vtbl_contents
  &(vtt_S20975C9[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20975C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20975C9),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C9),2, //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  S20975C8  : S20975C9 {
  ~S20975C8(); // tgen
  S20975C8(); // tgen
};
//SIG(-1 S20975C8) C1{ BC2{ VBC3{ BC4{ v1 v2 v3 v4 v5 v6 Fc} v7 v8 Fi} v9 v10 v11 v12 FL FC4}}


S20975C8 ::~S20975C8(){ note_dtor("S20975C8", this);} // tgen
S20975C8 ::S20975C8(){ note_ctor("S20975C8", this);} // tgen

static void Test_S20975C8()
{
  extern Class_Descriptor cd_S20975C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20975C8, buf);
    S20975C8 *dp, &lv = *(dp=new (buf) S20975C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20975C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C8)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(32,20), "S20975C8");
    check_base_class_offset(lv, (S20975C4*)(S20975C9*), ABISELECT(32,20), "S20975C8");
    check_base_class_offset(lv, (S20975C9*), 0, "S20975C8");
    test_class_info(&lv, &cd_S20975C8);
    dp->~S20975C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C8(Test_S20975C8, "S20975C8", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20975C8C1Ev();
extern void _ZN8S20975C8D1Ev();
Name_Map name_map_S20975C8[] = {
  NSPAIR(_ZN8S20975C8C1Ev),
  NSPAIR(_ZN8S20975C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
extern Class_Descriptor cd_S20975C9;
extern VTBL_ENTRY _ZTI8S20975C9[];
extern  VTBL_ENTRY _ZTV8S20975C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C9[];
static Base_Class bases_S20975C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20975C4,    ABISELECT(32,20), //bcp->offset
    7, //bcp->virtual_function_table_offset
    10, //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_S20975C9,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20975C8[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C8[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C9__8S20975C8[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C9__8S20975C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
static  VTT_ENTRY vtt_S20975C8[] = {
  {&(_ZTV8S20975C8[3]),  3,25},
  {&(_tg__ZTV8S20975C9__8S20975C8[3]),  3,7},
  {&(_tg__ZTV8S20975C4__8S20975C9__8S20975C8[10]),  10,18},
  {&(_ZTV8S20975C8[17]),  17,25},
};
extern VTBL_ENTRY _ZTI8S20975C8[];
extern  VTBL_ENTRY _ZTV8S20975C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C8[];
Class_Descriptor cd_S20975C8 = {  "S20975C8", // class name
  bases_S20975C8, 3,
  &(vtc_S20975C8[0]), // expected_vtbl_contents
  &(vtt_S20975C8[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20975C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20975C8),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C8),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  S20975C7  : S20975C8 , S20975C3 {
  __tsi64 s20975c7f0;
  int s20975c7f1;
  short s20975c7f2;
  int s20975c7f3;
  virtual  ~S20975C7(); // _ZN8S20975C7D2Ev
  virtual void  v23(); // _ZN8S20975C73v23Ev
  virtual void  v24(); // _ZN8S20975C73v24Ev
  virtual void  v25(); // _ZN8S20975C73v25Ev
  virtual void  v26(); // _ZN8S20975C73v26Ev
  S20975C7(); // tgen
};
//SIG(-1 S20975C7) C1{ BC2{ BC3{ VBC4{ BC5{ v5 v6 v7 v8 v9 v10 Fc} v11 v12 Fi} v13 v14 v15 v16 FL FC5}} BC6{ VBC4 BC7{ v17 v18 v19 v20 v21} v22 Fi} vd v1 v2 v3 v4 FL Fi Fs Fi}


 S20975C7 ::~S20975C7(){ note_dtor("S20975C7", this);}
void  S20975C7 ::v23(){vfunc_called(this, "_ZN8S20975C73v23Ev");}
void  S20975C7 ::v24(){vfunc_called(this, "_ZN8S20975C73v24Ev");}
void  S20975C7 ::v25(){vfunc_called(this, "_ZN8S20975C73v25Ev");}
void  S20975C7 ::v26(){vfunc_called(this, "_ZN8S20975C73v26Ev");}
S20975C7 ::S20975C7(){ note_ctor("S20975C7", this);} // tgen

static void Test_S20975C7()
{
  extern Class_Descriptor cd_S20975C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S20975C7, buf);
    S20975C7 *dp, &lv = *(dp=new (buf) S20975C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S20975C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C7)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(72,48), "S20975C7");
    check_base_class_offset(lv, (S20975C4*)(S20975C9*)(S20975C8*), ABISELECT(72,48), "S20975C7");
    check_base_class_offset(lv, (S20975C4*)(S20975C3*), ABISELECT(72,48), "S20975C7");
    check_base_class_offset(lv, (S20975C9*)(S20975C8*), 0, "S20975C7");
    check_base_class_offset(lv, (S20975C8*), 0, "S20975C7");
    check_base_class_offset(lv, (S20975C6*)(S20975C3*), ABISELECT(32,20), "S20975C7");
    check_base_class_offset(lv, (S20975C3*), ABISELECT(32,20), "S20975C7");
    check_field_offset(lv, s20975c7f0, ABISELECT(48,28), "S20975C7.s20975c7f0");
    check_field_offset(lv, s20975c7f1, ABISELECT(56,36), "S20975C7.s20975c7f1");
    check_field_offset(lv, s20975c7f2, ABISELECT(60,40), "S20975C7.s20975c7f2");
    check_field_offset(lv, s20975c7f3, ABISELECT(64,44), "S20975C7.s20975c7f3");
    test_class_info(&lv, &cd_S20975C7);
    dp->~S20975C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C7(Test_S20975C7, "S20975C7", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S20975C7C1Ev();
extern void _ZN8S20975C7D2Ev();
Name_Map name_map_S20975C7[] = {
  NSPAIR(_ZN8S20975C7C1Ev),
  NSPAIR(_ZN8S20975C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
extern Class_Descriptor cd_S20975C9;
extern VTBL_ENTRY _ZTI8S20975C9[];
extern  VTBL_ENTRY _ZTV8S20975C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C9[];
extern Class_Descriptor cd_S20975C8;
extern VTBL_ENTRY _ZTI8S20975C8[];
extern  VTBL_ENTRY _ZTV8S20975C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C8[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
extern Class_Descriptor cd_S20975C3;
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
static Base_Class bases_S20975C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20975C4,    ABISELECT(72,48), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20975C9,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20975C8,    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},
  {&cd_S20975C6,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20975C3,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20975C7[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C7D1Ev();
extern void _ZN8S20975C7D0Ev();
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
  ABISELECT(40,28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C7[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C8__8S20975C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C98S20975C8__8S20975C7[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C98S20975C8__8S20975C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C8__8S20975C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C7[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C3__8S20975C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
static  VTT_ENTRY vtt_S20975C7[] = {
  {&(_ZTV8S20975C7[3]),  3,40},
  {&(_tg__ZTV8S20975C8__8S20975C7[3]),  3,7},
  {&(_tg__ZTV8S20975C98S20975C8__8S20975C7[3]),  3,7},
  {&(_tg__ZTV8S20975C4__8S20975C98S20975C8__8S20975C7[10]),  10,18},
  {&(_tg__ZTV8S20975C4__8S20975C8__8S20975C7[10]),  10,18},
  {&(_tg__ZTV8S20975C3__8S20975C7[3]),  3,9},
  {&(_tg__ZTV8S20975C4__8S20975C3__8S20975C7[10]),  10,18},
  {&(_ZTV8S20975C7[32]),  32,40},
  {&(_ZTV8S20975C7[16]),  16,40},
};
extern VTBL_ENTRY _ZTI8S20975C7[];
extern  VTBL_ENTRY _ZTV8S20975C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C7[];
Class_Descriptor cd_S20975C7 = {  "S20975C7", // class name
  bases_S20975C7, 6,
  &(vtc_S20975C7[0]), // expected_vtbl_contents
  &(vtt_S20975C7[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S20975C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20975C7),40, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C7),9, //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  S20975C2  : virtual S20975C3 , S20975C7 {
  ::S20975C4 s20975c2f0;
  virtual  ~S20975C2(); // _ZN8S20975C2D2Ev
  virtual void  v27(); // _ZN8S20975C23v27Ev
  virtual void  v28(); // _ZN8S20975C23v28Ev
  virtual void  v29(); // _ZN8S20975C23v29Ev
  S20975C2(); // tgen
};
//SIG(-1 S20975C2) C1{ VBC2{ VBC3{ BC4{ v4 v5 v6 v7 v8 v9 Fc} v10 v11 Fi} BC5{ v12 v13 v14 v15 v16} v17 Fi} BC6{ BC7{ BC8{ VBC3 v18 v19 v20 v21 FL FC4}} BC2 vd v22 v23 v24 v25 FL Fi Fs Fi} vd v1 v2 v3 FC3}


 S20975C2 ::~S20975C2(){ note_dtor("S20975C2", this);}
void  S20975C2 ::v27(){vfunc_called(this, "_ZN8S20975C23v27Ev");}
void  S20975C2 ::v28(){vfunc_called(this, "_ZN8S20975C23v28Ev");}
void  S20975C2 ::v29(){vfunc_called(this, "_ZN8S20975C23v29Ev");}
S20975C2 ::S20975C2(){ note_ctor("S20975C2", this);} // tgen

static void Test_S20975C2()
{
  extern Class_Descriptor cd_S20975C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,21)];
    init_test(&cd_S20975C2, buf);
    S20975C2 *dp, &lv = *(dp=new (buf) S20975C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,80), "sizeof(S20975C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C2)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(104,68), "S20975C2");
    /*is_ambiguous_... S20975C2::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C4*)(S20975C3*), ABISELECT(104,68), "S20975C2");
    check_base_class_offset(lv, (S20975C4*)(S20975C9*)(S20975C8*)(S20975C7*), ABISELECT(104,68), "S20975C2");
    check_base_class_offset(lv, (S20975C4*)(S20975C3*)(S20975C7*), ABISELECT(104,68), "S20975C2");
    /*is_ambiguous_... S20975C2::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C6*)(S20975C3*), ABISELECT(88,60), "S20975C2");
    /*is_ambiguous_... S20975C2::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C3*), ABISELECT(88,60), "S20975C2");
    check_base_class_offset(lv, (S20975C9*)(S20975C8*)(S20975C7*), 0, "S20975C2");
    check_base_class_offset(lv, (S20975C8*)(S20975C7*), 0, "S20975C2");
    check_base_class_offset(lv, (S20975C6*)(S20975C3*)(S20975C7*), ABISELECT(32,20), "S20975C2");
    check_base_class_offset(lv, (S20975C3*)(S20975C7*), ABISELECT(32,20), "S20975C2");
    check_base_class_offset(lv, (S20975C7*), 0, "S20975C2");
    check_field_offset(lv, s20975c2f0, ABISELECT(72,48), "S20975C2.s20975c2f0");
    test_class_info(&lv, &cd_S20975C2);
    dp->~S20975C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C2(Test_S20975C2, "S20975C2", ABISELECT(120,80));

#else // __cplusplus

extern void _ZN8S20975C2C1Ev();
extern void _ZN8S20975C2D2Ev();
Name_Map name_map_S20975C2[] = {
  NSPAIR(_ZN8S20975C2C1Ev),
  NSPAIR(_ZN8S20975C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
extern Class_Descriptor cd_S20975C3;
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
extern Class_Descriptor cd_S20975C9;
extern VTBL_ENTRY _ZTI8S20975C9[];
extern  VTBL_ENTRY _ZTV8S20975C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C9[];
extern Class_Descriptor cd_S20975C8;
extern VTBL_ENTRY _ZTI8S20975C8[];
extern  VTBL_ENTRY _ZTV8S20975C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C8[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
extern Class_Descriptor cd_S20975C3;
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
extern Class_Descriptor cd_S20975C7;
extern VTBL_ENTRY _ZTI8S20975C7[];
extern  VTBL_ENTRY _ZTV8S20975C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C7[];
static Base_Class bases_S20975C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    ABISELECT(104,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_S20975C4,    ABISELECT(104,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20975C6,    ABISELECT(88,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20975C3,    ABISELECT(88,60), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20975C9,    0, //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20975C8,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20975C6,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20975C3,    ABISELECT(32,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //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
    8, //immediately_derived
  0, 0},
  {&cd_S20975C7,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20975C2[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C2D1Ev();
extern void _ZN8S20975C2D0Ev();
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
extern void _ZN8S20975C23v27Ev();
extern void _ZN8S20975C23v28Ev();
extern void _ZN8S20975C23v29Ev();
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C2[] = {
  ABISELECT(88,60),
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20975C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v27Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v29Ev,
  ABISELECT(72,48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C2[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C7D1Ev();
extern void _ZN8S20975C7D0Ev();
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C7__8S20975C2[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C88S20975C7__8S20975C2[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C98S20975C88S20975C7__8S20975C2[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C98S20975C88S20975C7__8S20975C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C88S20975C7__8S20975C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C38S20975C7__A1__8S20975C2[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C38S20975C7__A1__8S20975C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C7__8S20975C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C7__8S20975C2[] = {
  ABISELECT(72,48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C3__8S20975C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
static  VTT_ENTRY vtt_S20975C2[] = {
  {&(_ZTV8S20975C2[4]),  4,59},
  {&(_tg__ZTV8S20975C7__8S20975C2[3]),  3,13},
  {&(_tg__ZTV8S20975C88S20975C7__8S20975C2[3]),  3,7},
  {&(_tg__ZTV8S20975C98S20975C88S20975C7__8S20975C2[3]),  3,7},
  {&(_tg__ZTV8S20975C4__8S20975C98S20975C88S20975C7__8S20975C2[10]),  10,18},
  {&(_tg__ZTV8S20975C4__8S20975C88S20975C7__8S20975C2[10]),  10,18},
  {&(_tg__ZTV8S20975C38S20975C7__A1__8S20975C2[3]),  3,9},
  {&(_tg__ZTV8S20975C4__8S20975C38S20975C7__A1__8S20975C2[10]),  10,18},
  {&(_tg__ZTV8S20975C4__8S20975C7__8S20975C2[10]),  10,18},
  {&(_tg__ZTV8S20975C3__8S20975C7__8S20975C2[3]),  3,9},
  {&(_ZTV8S20975C2[35]),  35,59},
  {&(_ZTV8S20975C2[51]),  51,59},
  {&(_ZTV8S20975C2[20]),  20,59},
  {&(_tg__ZTV8S20975C3__8S20975C2[3]),  3,9},
  {&(_tg__ZTV8S20975C4__8S20975C3__8S20975C2[10]),  10,18},
};
extern VTBL_ENTRY _ZTI8S20975C2[];
extern  VTBL_ENTRY _ZTV8S20975C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C2[];
Class_Descriptor cd_S20975C2 = {  "S20975C2", // class name
  bases_S20975C2, 9,
  &(vtc_S20975C2[0]), // expected_vtbl_contents
  &(vtt_S20975C2[0]), // expected_vtt_contents
  ABISELECT(120,80), // object size
  NSPAIRA(_ZTI8S20975C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20975C2),59, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C2),15, //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  S20975C1  : virtual S20975C2 {
  __tsi64 s20975c1f0;
  virtual  ~S20975C1(); // _ZN8S20975C1D2Ev
  virtual void  v1(); // _ZN8S20975C12v1Ev
  virtual void  v2(); // _ZN8S20975C12v2Ev
  virtual void  v3(); // _ZN8S20975C12v3Ev
  virtual void  v4(); // _ZN8S20975C12v4Ev
  S20975C1(); // tgen
};
//SIG(1 S20975C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v5 v6 v7 v8 v9 v10 Fc} v11 v12 Fi} BC6{ v13 v14 v15 v16 v17} v18 Fi} BC7{ BC8{ BC9{ VBC4 v19 v20 v21 v22 FL FC5}} BC3 vd v23 v24 v25 v26 FL Fi Fs Fi} vd v27 v28 v29 FC4} vd v1 v2 v3 v4 FL}


 S20975C1 ::~S20975C1(){ note_dtor("S20975C1", this);}
void  S20975C1 ::v1(){vfunc_called(this, "_ZN8S20975C12v1Ev");}
void  S20975C1 ::v2(){vfunc_called(this, "_ZN8S20975C12v2Ev");}
void  S20975C1 ::v3(){vfunc_called(this, "_ZN8S20975C12v3Ev");}
void  S20975C1 ::v4(){vfunc_called(this, "_ZN8S20975C12v4Ev");}
S20975C1 ::S20975C1(){ note_ctor("S20975C1", this);} // tgen

static void Test_S20975C1()
{
  extern Class_Descriptor cd_S20975C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20975C1, buf);
    S20975C1 *dp, &lv = *(dp=new (buf) S20975C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20975C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20975C1)");
    check_base_class_offset(lv, (S20975C5*)(S20975C4*), ABISELECT(120,80), "S20975C1");
    /*is_ambiguous_... S20975C1::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C4*)(S20975C3*), ABISELECT(120,80), "S20975C1");
    check_base_class_offset(lv, (S20975C4*)(S20975C9*)(S20975C8*)(S20975C7*)(S20975C2*), ABISELECT(120,80), "S20975C1");
    check_base_class_offset(lv, (S20975C4*)(S20975C3*)(S20975C7*)(S20975C2*), ABISELECT(120,80), "S20975C1");
    /*is_ambiguous_... S20975C1::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C6*)(S20975C3*), ABISELECT(104,72), "S20975C1");
    /*is_ambiguous_... S20975C2::S20975C3 */ AMB_check_base_class_offset(lv, (S20975C3*)(S20975C2*), ABISELECT(104,72), "S20975C1");
    check_base_class_offset(lv, (S20975C9*)(S20975C8*)(S20975C7*)(S20975C2*), ABISELECT(16,12), "S20975C1");
    check_base_class_offset(lv, (S20975C8*)(S20975C7*)(S20975C2*), ABISELECT(16,12), "S20975C1");
    check_base_class_offset(lv, (S20975C6*)(S20975C3*)(S20975C7*)(S20975C2*), ABISELECT(48,32), "S20975C1");
    check_base_class_offset(lv, (S20975C3*)(S20975C7*)(S20975C2*), ABISELECT(48,32), "S20975C1");
    check_base_class_offset(lv, (S20975C7*)(S20975C2*), ABISELECT(16,12), "S20975C1");
    check_base_class_offset(lv, (S20975C2*), ABISELECT(16,12), "S20975C1");
    check_field_offset(lv, s20975c1f0, ABISELECT(8,4), "S20975C1.s20975c1f0");
    test_class_info(&lv, &cd_S20975C1);
    dp->~S20975C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20975C1(Test_S20975C1, "S20975C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20975C1C1Ev();
extern void _ZN8S20975C1D2Ev();
Name_Map name_map_S20975C1[] = {
  NSPAIR(_ZN8S20975C1C1Ev),
  NSPAIR(_ZN8S20975C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20975C5;
extern VTBL_ENTRY _ZTI8S20975C5[];
extern  VTBL_ENTRY _ZTV8S20975C5[];
extern Class_Descriptor cd_S20975C4;
extern VTBL_ENTRY _ZTI8S20975C4[];
extern  VTBL_ENTRY _ZTV8S20975C4[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
extern Class_Descriptor cd_S20975C3;
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
extern Class_Descriptor cd_S20975C9;
extern VTBL_ENTRY _ZTI8S20975C9[];
extern  VTBL_ENTRY _ZTV8S20975C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C9[];
extern Class_Descriptor cd_S20975C8;
extern VTBL_ENTRY _ZTI8S20975C8[];
extern  VTBL_ENTRY _ZTV8S20975C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C8[];
extern Class_Descriptor cd_S20975C6;
extern VTBL_ENTRY _ZTI8S20975C6[];
extern  VTBL_ENTRY _ZTV8S20975C6[];
extern Class_Descriptor cd_S20975C3;
extern VTBL_ENTRY _ZTI8S20975C3[];
extern  VTBL_ENTRY _ZTV8S20975C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C3[];
extern Class_Descriptor cd_S20975C7;
extern VTBL_ENTRY _ZTI8S20975C7[];
extern  VTBL_ENTRY _ZTV8S20975C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C7[];
extern Class_Descriptor cd_S20975C2;
extern VTBL_ENTRY _ZTI8S20975C2[];
extern  VTBL_ENTRY _ZTV8S20975C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C2[];
static Base_Class bases_S20975C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20975C5,    ABISELECT(120,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
    1, //immediately_derived
  0, 0},
  {&cd_S20975C4,    ABISELECT(120,80), //bcp->offset
    70, //bcp->virtual_function_table_offset
    10, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20975C6,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20975C3,    ABISELECT(104,72), //bcp->offset
    55, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20975C9,    ABISELECT(16,12), //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20975C8,    ABISELECT(16,12), //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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20975C6,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20975C3,    ABISELECT(48,32), //bcp->offset
    46, //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20975C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20975C2,    ABISELECT(16,12), //bcp->offset
    11, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20975C1[];
extern void _ZN8S20975C1D1Ev();
extern void _ZN8S20975C1D0Ev();
extern void _ZN8S20975C12v1Ev();
extern void _ZN8S20975C12v2Ev();
extern void _ZN8S20975C12v3Ev();
extern void _ZN8S20975C12v4Ev();
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void ABISELECT(_ZTv0_n72_N8S20975C1D1Ev,_ZTv0_n36_N8S20975C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20975C1D1Ev,_ZThn12_N8S20975C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20975C1D0Ev,_ZTv0_n36_N8S20975C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20975C1D0Ev,_ZThn12_N8S20975C1D0Ev)() __attribute__((weak));
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
extern void _ZN8S20975C23v27Ev();
extern void _ZN8S20975C23v28Ev();
extern void _ZN8S20975C23v29Ev();
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY vtc_S20975C1[] = {
  ABISELECT(120,80),
  ABISELECT(104,72),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C1[0]),
  (VTBL_ENTRY)&_ZN8S20975C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20975C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20975C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20975C12v4Ev,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  ABISELECT(88,60),
  ABISELECT(104,68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20975C1[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20975C1D1Ev,_ZTv0_n36_N8S20975C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20975C1D0Ev,_ZTv0_n36_N8S20975C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v27Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v29Ev,
  ABISELECT(72,48),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20975C1[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S20975C1[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20975C1[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20975C1[];
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C2D1Ev();
extern void _ZN8S20975C2D0Ev();
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
extern void _ZN8S20975C23v27Ev();
extern void _ZN8S20975C23v28Ev();
extern void _ZN8S20975C23v29Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C2__8S20975C1[] = {
  ABISELECT(88,60),
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20975C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v27Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20975C23v29Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
extern void _ZN8S20975C7D1Ev();
extern void _ZN8S20975C7D0Ev();
extern void _ZN8S20975C73v23Ev();
extern void _ZN8S20975C73v24Ev();
extern void _ZN8S20975C73v25Ev();
extern void _ZN8S20975C73v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C78S20975C2__8S20975C1[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20975C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20975C73v26Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C88S20975C78S20975C2__8S20975C1[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C93v19Ev();
extern void _ZN8S20975C93v20Ev();
extern void _ZN8S20975C93v21Ev();
extern void _ZN8S20975C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C98S20975C88S20975C78S20975C2__8S20975C1[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20975C93v22Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C98S20975C88S20975C78S20975C2__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C9[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C88S20975C78S20975C2__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C8[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C38S20975C78S20975C2__A1__8S20975C1[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C38S20975C78S20975C2__A1__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C78S20975C2__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C78S20975C2__8S20975C1[] = {
  ABISELECT(72,48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C7[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C2__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C2__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C38S20975C7__A1__8S20975C2__8S20975C1[] = {
  ABISELECT(72,48),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20975C2[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C63v13Ev();
extern void _ZN8S20975C63v14Ev();
extern void _ZN8S20975C63v15Ev();
extern void _ZN8S20975C63v16Ev();
extern void _ZN8S20975C63v17Ev();
extern void _ZN8S20975C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C3__8S20975C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20975C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20975C33v18Ev,
};
extern void _ZN8S20975C52v5Ev();
extern void _ZN8S20975C52v6Ev();
extern void _ZN8S20975C52v7Ev();
extern void _ZN8S20975C52v8Ev();
extern void _ZN8S20975C52v9Ev();
extern void _ZN8S20975C53v10Ev();
extern void _ZN8S20975C43v11Ev();
extern void _ZN8S20975C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20975C4__8S20975C3__8S20975C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20975C3[0]),
  (VTBL_ENTRY)&_ZN8S20975C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20975C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20975C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20975C43v12Ev,
};
static  VTT_ENTRY vtt_S20975C1[] = {
  {&(_ZTV8S20975C1[5]),  5,88},
  {&(_ZTV8S20975C1[33]),  33,88},
  {&(_ZTV8S20975C1[64]),  64,88},
  {&(_ZTV8S20975C1[80]),  80,88},
  {&(_ZTV8S20975C1[49]),  49,88},
  {&(_tg__ZTV8S20975C2__8S20975C1[4]),  4,17},
  {&(_tg__ZTV8S20975C78S20975C2__8S20975C1[3]),  3,13},
  {&(_tg__ZTV8S20975C88S20975C78S20975C2__8S20975C1[3]),  3,7},
  {&(_tg__ZTV8S20975C98S20975C88S20975C78S20975C2__8S20975C1[3]),  3,7},
  {&(_tg__ZTV8S20975C4__8S20975C98S20975C88S20975C78S20975C2__8S20975C1[10]),  10,18},
  {&(_tg__ZTV8S20975C4__8S20975C88S20975C78S20975C2__8S20975C1[10]),  10,18},
  {&(_tg__ZTV8S20975C38S20975C78S20975C2__A1__8S20975C1[3]),  3,9},
  {&(_tg__ZTV8S20975C4__8S20975C38S20975C78S20975C2__A1__8S20975C1[10]),  10,18},
  {&(_tg__ZTV8S20975C4__8S20975C78S20975C2__8S20975C1[10]),  10,18},
  {&(_tg__ZTV8S20975C3__8S20975C78S20975C2__8S20975C1[3]),  3,9},
  {&(_tg__ZTV8S20975C3__8S20975C2__8S20975C1[9]),  9,15},
  {&(_tg__ZTV8S20975C4__8S20975C2__8S20975C1[10]),  10,18},
  {&(_tg__ZTV8S20975C38S20975C7__A1__8S20975C2__8S20975C1[3]),  3,9},
  {&(_tg__ZTV8S20975C3__8S20975C1[3]),  3,9},
  {&(_tg__ZTV8S20975C4__8S20975C3__8S20975C1[10]),  10,18},
};
extern VTBL_ENTRY _ZTI8S20975C1[];
extern  VTBL_ENTRY _ZTV8S20975C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20975C1[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20975C1D0Ev,_ZTv0_n36_N8S20975C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20975C1D0Ev,_ZThn12_N8S20975C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20975C1D1Ev,_ZTv0_n36_N8S20975C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20975C1D1Ev,_ZThn12_N8S20975C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20975C1 = {  "S20975C1", // class name
  bases_S20975C1, 10,
  &(vtc_S20975C1[0]), // expected_vtbl_contents
  &(vtt_S20975C1[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20975C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20975C1),88, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20975C1),20, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19140C6  : virtual S19169C6_nt {
  ~S19140C6(); // tgen
  S19140C6(); // tgen
};
//SIG(-1 S19140C6) C1{ VBC2{ m Fp[6]}}


S19140C6 ::~S19140C6(){ note_dtor("S19140C6", this);} // tgen
S19140C6 ::S19140C6(){ note_ctor("S19140C6", this);} // tgen

static void Test_S19140C6()
{
  extern Class_Descriptor cd_S19140C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19140C6, buf);
    S19140C6 *dp, &lv = *(dp=new (buf) S19140C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19140C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C6)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(8,4), "S19140C6");
    test_class_info(&lv, &cd_S19140C6);
    dp->~S19140C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C6(Test_S19140C6, "S19140C6", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19140C6C1Ev();
extern void _ZN8S19140C6D1Ev();
Name_Map name_map_S19140C6[] = {
  NSPAIR(_ZN8S19140C6C1Ev),
  NSPAIR(_ZN8S19140C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19140C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19140C6[];
static  VTBL_ENTRY vtc_S19140C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
extern VTBL_ENTRY _ZTV8S19140C6[];
static  VTT_ENTRY vtt_S19140C6[] = {
  {&(_ZTV8S19140C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
Class_Descriptor cd_S19140C6 = {  "S19140C6", // class name
  bases_S19140C6, 1,
  &(vtc_S19140C6[0]), // expected_vtbl_contents
  &(vtt_S19140C6[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19140C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19140C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19140C6),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  S19140C4  : virtual S19169C6_nt {
  __tsi64 s19140c4f0;
  ~S19140C4(); // tgen
  S19140C4(); // tgen
};
//SIG(-1 S19140C4) C1{ VBC2{ m Fp[6]} FL}


S19140C4 ::~S19140C4(){ note_dtor("S19140C4", this);} // tgen
S19140C4 ::S19140C4(){ note_ctor("S19140C4", this);} // tgen

static void Test_S19140C4()
{
  extern Class_Descriptor cd_S19140C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19140C4, buf);
    S19140C4 *dp, &lv = *(dp=new (buf) S19140C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19140C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C4)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S19140C4");
    check_field_offset(lv, s19140c4f0, ABISELECT(8,4), "S19140C4.s19140c4f0");
    test_class_info(&lv, &cd_S19140C4);
    dp->~S19140C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C4(Test_S19140C4, "S19140C4", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19140C4C1Ev();
extern void _ZN8S19140C4D1Ev();
Name_Map name_map_S19140C4[] = {
  NSPAIR(_ZN8S19140C4C1Ev),
  NSPAIR(_ZN8S19140C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19140C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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},
  {0}};
extern VTBL_ENTRY _ZTI8S19140C4[];
static  VTBL_ENTRY vtc_S19140C4[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
extern VTBL_ENTRY _ZTV8S19140C4[];
static  VTT_ENTRY vtt_S19140C4[] = {
  {&(_ZTV8S19140C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
Class_Descriptor cd_S19140C4 = {  "S19140C4", // class name
  bases_S19140C4, 1,
  &(vtc_S19140C4[0]), // expected_vtbl_contents
  &(vtt_S19140C4[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19140C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19140C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19140C4),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  S19140C9  : S19169C6_nt , S19140C4 , virtual S19140C6 {
  ~S19140C9(); // tgen
  S19140C9(); // tgen
};
//SIG(-1 S19140C9) C1{ BC2{ m Fp[6]} BC3{ VBC2 FL} VBC4{ VBC2}}


S19140C9 ::~S19140C9(){ note_dtor("S19140C9", this);} // tgen
S19140C9 ::S19140C9(){ note_ctor("S19140C9", this);} // tgen

static void Test_S19140C9()
{
  extern Class_Descriptor cd_S19140C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19140C9, buf);
    S19140C9 *dp, &lv = *(dp=new (buf) S19140C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19140C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C9)");
    /*is_ambiguous_... S19140C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S19140C9");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*), ABISELECT(64,36), "S19140C9");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*), ABISELECT(64,36), "S19140C9");
    check_base_class_offset(lv, (S19140C4*), 0, "S19140C9");
    check_base_class_offset(lv, (S19140C6*), ABISELECT(112,60), "S19140C9");
    test_class_info(&lv, &cd_S19140C9);
    dp->~S19140C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C9(Test_S19140C9, "S19140C9", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S19140C9C1Ev();
extern void _ZN8S19140C9D1Ev();
Name_Map name_map_S19140C9[] = {
  NSPAIR(_ZN8S19140C9C1Ev),
  NSPAIR(_ZN8S19140C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
static Base_Class bases_S19140C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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_S19169C6_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
    2, //immediately_derived
  0, 1},
  {&cd_S19140C4,    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_S19140C6,    ABISELECT(112,60), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19140C9[];
static  VTBL_ENTRY vtc_S19140C9[] = {
  ABISELECT(112,60),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
extern VTBL_ENTRY _ZTV8S19140C9[];
static  VTBL_ENTRY _tg__ZTV8S19140C4__8S19140C9[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C9[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTT_ENTRY vtt_S19140C9[] = {
  {&(_ZTV8S19140C9[4]),  4,7},
  {&(_tg__ZTV8S19140C4__8S19140C9[3]),  3,3},
  {&(_ZTV8S19140C9[7]),  7,7},
  {&(_tg__ZTV8S19140C6__8S19140C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
Class_Descriptor cd_S19140C9 = {  "S19140C9", // class name
  bases_S19140C9, 4,
  &(vtc_S19140C9[0]), // expected_vtbl_contents
  &(vtt_S19140C9[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S19140C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19140C9),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19140C9),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  S19140C2  : S19169C16_nt , S19140C6 , S19169C3_nt , virtual S19169C11_nt , S19140C9 {
  virtual  ~S19140C2(); // _ZN8S19140C2D2Ev
  S19140C2(); // tgen
};
//SIG(-1 S19140C2) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC5{ VBC4} BC6{ m Fl[10]} VBC7{ vd m} BC8{ BC4 BC9{ VBC4 FL} VBC5} vd}


 S19140C2 ::~S19140C2(){ note_dtor("S19140C2", this);}
S19140C2 ::S19140C2(){ note_ctor("S19140C2", this);} // tgen

static void Test_S19140C2()
{
  extern Class_Descriptor cd_S19140C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,38)];
    init_test(&cd_S19140C2, buf);
    S19140C2 *dp, &lv = *(dp=new (buf) S19140C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,148), "sizeof(S19140C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C2)");
    check_base_class_offset(lv, (S19169C16_nt*), ABISELECT(8,4), "S19140C2");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*), ABISELECT(216,116), "S19140C2");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*)(S19140C9*), ABISELECT(216,116), "S19140C2");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*), ABISELECT(216,116), "S19140C2");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19140C6*), 0, "S19140C2");
    check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(72,40), "S19140C2");
    check_base_class_offset(lv, (S19169C11_nt*), ABISELECT(264,140), "S19140C2");
    /*is_ambiguous_... S19140C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C9*), ABISELECT(168,92), "S19140C2");
    check_base_class_offset(lv, (S19140C4*)(S19140C9*), ABISELECT(152,80), "S19140C2");
    check_base_class_offset(lv, (S19140C6*)(S19140C9*), ABISELECT(272,144), "S19140C2");
    check_base_class_offset(lv, (S19140C9*), ABISELECT(152,80), "S19140C2");
    test_class_info(&lv, &cd_S19140C2);
    dp->~S19140C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C2(Test_S19140C2, "S19140C2", ABISELECT(280,148));

#else // __cplusplus

extern void _ZN8S19140C2C1Ev();
extern void _ZN8S19140C2D2Ev();
Name_Map name_map_S19140C2[] = {
  NSPAIR(_ZN8S19140C2C1Ev),
  NSPAIR(_ZN8S19140C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19140C9;
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
static Base_Class bases_S19140C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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_S19169C6_nt,    ABISELECT(216,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
    2, //immediately_derived
  0, 1},
  {&cd_S19140C6,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C3_nt,    ABISELECT(72,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C11_nt,    ABISELECT(264,140), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C6_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
    8, //immediately_derived
  0, 0},
  {&cd_S19140C4,    ABISELECT(152,80), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19140C6,    ABISELECT(272,144), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19140C9,    ABISELECT(152,80), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19140C2[];
extern void _ZN8S19140C2D1Ev();
extern void _ZN8S19140C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S19140C2D1Ev,_ZThn140_N8S19140C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S19140C2D0Ev,_ZThn140_N8S19140C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19140C2[] = {
  ABISELECT(272,144),
  ABISELECT(264,140),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&_ZN8S19140C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19140C2D0Ev,
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
extern VTBL_ENTRY _ZTV8S19140C2[];
static  VTBL_ENTRY _tg__ZTV8S19140C6__A__8S19140C2[] = {
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C9__8S19140C2[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C48S19140C9__8S19140C2[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C9__8S19140C2[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__8S19140C2[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTT_ENTRY vtt_S19140C2[] = {
  {&(_ZTV8S19140C2[5]),  5,19},
  {&(_tg__ZTV8S19140C6__A__8S19140C2[3]),  3,3},
  {&(_tg__ZTV8S19140C9__8S19140C2[4]),  4,4},
  {&(_tg__ZTV8S19140C48S19140C9__8S19140C2[3]),  3,3},
  {&(_tg__ZTV8S19140C6__8S19140C9__8S19140C2[3]),  3,3},
  {&(_ZTV8S19140C2[14]),  14,19},
  {&(_ZTV8S19140C2[11]),  11,19},
  {&(_ZTV8S19140C2[19]),  19,19},
  {&(_tg__ZTV8S19140C6__A1__8S19140C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19140C2[];
extern  VTBL_ENTRY _ZTV8S19140C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C2[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19140C2D0Ev,_ZThn140_N8S19140C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19140C2D1Ev,_ZThn140_N8S19140C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19140C2 = {  "S19140C2", // class name
  bases_S19140C2, 9,
  &(vtc_S19140C2[0]), // expected_vtbl_contents
  &(vtt_S19140C2[0]), // expected_vtt_contents
  ABISELECT(280,148), // object size
  NSPAIRA(_ZTI8S19140C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19140C2),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19140C2),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19140C12_nt  {
  void  mf19140c12(); // _ZN12S19140C12_nt10mf19140c12Ev
  virtual  ~S19140C12_nt(); // _ZN12S19140C12_ntD1Ev
  S19140C12_nt(); // tgen
};
//SIG(-1 S19140C12_nt) C1{ vd m}


void  S19140C12_nt ::mf19140c12(){}
 S19140C12_nt ::~S19140C12_nt(){ note_dtor("S19140C12_nt", this);}
S19140C12_nt ::S19140C12_nt(){ note_ctor("S19140C12_nt", this);} // tgen

//skip512 S19140C12_nt

#else // __cplusplus

extern void _ZN12S19140C12_ntC1Ev();
extern void _ZN12S19140C12_ntD1Ev();
Name_Map name_map_S19140C12_nt[] = {
  NSPAIR(_ZN12S19140C12_ntC1Ev),
  NSPAIR(_ZN12S19140C12_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19140C12_nt[];
extern void _ZN12S19140C12_ntD1Ev();
extern void _ZN12S19140C12_ntD0Ev();
static  VTBL_ENTRY vtc_S19140C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19140C12_nt[0]),
  (VTBL_ENTRY)&_ZN12S19140C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19140C12_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19140C12_nt[];
VTBL_ENTRY *P__ZTI12S19140C12_nt = _ZTI12S19140C12_nt; 
extern  VTBL_ENTRY _ZTV12S19140C12_nt[];
Class_Descriptor cd_S19140C12_nt = {  "S19140C12_nt", // class name
  0,0,//no base classes
  &(vtc_S19140C12_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19140C12_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19140C12_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  S19140C11_nt  : virtual S19140C12_nt , S2014C28 {
  __tsi64 s19140c11f0:8;
  ~S19140C11_nt(); // tgen
  S19140C11_nt(); // tgen
};
//SIG(-1 S19140C11_nt) C1{ VBC2{ vd m} BC3{ m} FL:8}


S19140C11_nt ::~S19140C11_nt(){ note_dtor("S19140C11_nt", this);} // tgen
S19140C11_nt ::S19140C11_nt(){ note_ctor("S19140C11_nt", this);} // tgen

//skip512 S19140C11_nt

#else // __cplusplus

extern void _ZN12S19140C11_ntC1Ev();
extern void _ZN12S19140C11_ntD1Ev();
Name_Map name_map_S19140C11_nt[] = {
  NSPAIR(_ZN12S19140C11_ntC1Ev),
  NSPAIR(_ZN12S19140C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19140C12_nt;
extern VTBL_ENTRY _ZTI12S19140C12_nt[];
extern  VTBL_ENTRY _ZTV12S19140C12_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19140C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19140C12_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI12S19140C11_nt[];
extern void _ZN12S19140C11_ntD1Ev();
extern void _ZN12S19140C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19140C11_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19140C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19140C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19140C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S19140C11_nt[];
static  VTT_ENTRY vtt_S19140C11_nt[] = {
  {&(_ZTV12S19140C11_nt[4]),  4,6},
  {&(_ZTV12S19140C11_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI12S19140C11_nt[];
VTBL_ENTRY *P__ZTI12S19140C11_nt = _ZTI12S19140C11_nt; 
extern  VTBL_ENTRY _ZTV12S19140C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19140C11_nt[];
Class_Descriptor cd_S19140C11_nt = {  "S19140C11_nt", // class name
  bases_S19140C11_nt, 2,
  &(vtc_S19140C11_nt[0]), // expected_vtbl_contents
  &(vtt_S19140C11_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI12S19140C11_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S19140C11_nt),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19140C11_nt),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  S19140C16  : S19169C16_nt , S19169C6_nt , virtual S19140C4 , virtual S19169C3_nt {
  int s19140c16f0;
  ~S19140C16(); // tgen
  S19140C16(); // tgen
};
//SIG(-1 S19140C16) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC4 VBC5{ VBC4 FL} VBC6{ m Fl[10]} Fi}


S19140C16 ::~S19140C16(){ note_dtor("S19140C16", this);} // tgen
S19140C16 ::S19140C16(){ note_ctor("S19140C16", this);} // tgen

static void Test_S19140C16()
{
  extern Class_Descriptor cd_S19140C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,37)];
    init_test(&cd_S19140C16, buf);
    S19140C16 *dp, &lv = *(dp=new (buf) S19140C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,144), "sizeof(S19140C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C16)");
    check_base_class_offset(lv, (S19169C16_nt*), ABISELECT(8,4), "S19140C16");
    /*is_ambiguous_... S19140C16::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(72,40), "S19140C16");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*), ABISELECT(144,80), "S19140C16");
    check_base_class_offset(lv, (S19140C4*), ABISELECT(128,68), "S19140C16");
    check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(192,104), "S19140C16");
    check_field_offset(lv, s19140c16f0, ABISELECT(120,64), "S19140C16.s19140c16f0");
    test_class_info(&lv, &cd_S19140C16);
    dp->~S19140C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C16(Test_S19140C16, "S19140C16", ABISELECT(272,144));

#else // __cplusplus

extern void _ZN9S19140C16C1Ev();
extern void _ZN9S19140C16D1Ev();
Name_Map name_map_S19140C16[] = {
  NSPAIR(_ZN9S19140C16C1Ev),
  NSPAIR(_ZN9S19140C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
static Base_Class bases_S19140C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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_S19169C6_nt,    ABISELECT(72,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19140C4,    ABISELECT(128,68), //bcp->offset
    5, //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},
  {&cd_S19169C3_nt,    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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19140C16[];
static  VTBL_ENTRY vtc_S19140C16[] = {
  ABISELECT(192,104),
  ABISELECT(144,80),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
};
extern VTBL_ENTRY _ZTV9S19140C16[];
static  VTBL_ENTRY _tg__ZTV8S19140C4__9S19140C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTT_ENTRY vtt_S19140C16[] = {
  {&(_ZTV9S19140C16[5]),  5,8},
  {&(_ZTV9S19140C16[8]),  8,8},
  {&(_tg__ZTV8S19140C4__9S19140C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19140C16[];
extern  VTBL_ENTRY _ZTV9S19140C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19140C16[];
Class_Descriptor cd_S19140C16 = {  "S19140C16", // class name
  bases_S19140C16, 5,
  &(vtc_S19140C16[0]), // expected_vtbl_contents
  &(vtt_S19140C16[0]), // expected_vtt_contents
  ABISELECT(272,144), // object size
  NSPAIRA(_ZTI9S19140C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19140C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19140C16),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  S19140C14  : S19140C2 , virtual S19140C12_nt , virtual S3222C8_nt , virtual S19140C16 {
  int s19140c14f0;
  ~S19140C14(); // tgen
  S19140C14(); // tgen
};
//SIG(-1 S19140C14) C1{ BC2{ BC3{ m FC4{ VBC5{ m Fp[6]} FL}} BC6{ VBC5} BC7{ m Fl[10]} VBC8{ vd m} BC9{ BC5 BC10{ VBC5 FL} VBC6} vd} VBC11{ vd m} VBC12{ m Fi} VBC13{ BC3 BC5 VBC10 VBC7 Fi} Fi}


S19140C14 ::~S19140C14(){ note_dtor("S19140C14", this);} // tgen
S19140C14 ::S19140C14(){ note_ctor("S19140C14", this);} // tgen

static void Test_S19140C14()
{
  extern Class_Descriptor cd_S19140C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,71)];
    init_test(&cd_S19140C14, buf);
    S19140C14 *dp, &lv = *(dp=new (buf) S19140C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,280), "sizeof(S19140C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C14)");
    check_base_class_offset(lv, (S19169C16_nt*)(S19140C2*), ABISELECT(8,4), "S19140C14");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*)(S19140C2*), ABISELECT(224,120), "S19140C14");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*)(S19140C9*)(S19140C2*), ABISELECT(224,120), "S19140C14");
    /*is_ambiguous_... S19140C14::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*), ABISELECT(224,120), "S19140C14");
    /*is_ambiguous_... S19140C14::S19140C4 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*), ABISELECT(224,120), "S19140C14");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19140C6*)(S19140C2*), 0, "S19140C14");
    check_base_class_offset(lv, (S19169C3_nt*)(S19140C2*), ABISELECT(72,40), "S19140C14");
    check_base_class_offset(lv, (S19169C11_nt*)(S19140C2*), ABISELECT(272,144), "S19140C14");
    /*is_ambiguous_... S19140C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C9*)(S19140C2*), ABISELECT(168,92), "S19140C14");
    check_base_class_offset(lv, (S19140C4*)(S19140C9*)(S19140C2*), ABISELECT(152,80), "S19140C14");
    check_base_class_offset(lv, (S19140C6*)(S19140C9*)(S19140C2*), ABISELECT(280,148), "S19140C14");
    check_base_class_offset(lv, (S19140C9*)(S19140C2*), ABISELECT(152,80), "S19140C14");
    check_base_class_offset(lv, (S19140C2*), 0, "S19140C14");
    check_base_class_offset(lv, (S19140C12_nt*), ABISELECT(288,152), "S19140C14");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(296,156), "S19140C14");
    check_base_class_offset(lv, (S19169C16_nt*)(S19140C16*), ABISELECT(312,164), "S19140C14");
    /*is_ambiguous_... S19140C16::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C16*), ABISELECT(376,200), "S19140C14");
    check_base_class_offset(lv, (S19140C4*)(S19140C16*), ABISELECT(432,228), "S19140C14");
    check_base_class_offset(lv, (S19169C3_nt*)(S19140C16*), ABISELECT(448,240), "S19140C14");
    check_base_class_offset(lv, (S19140C16*), ABISELECT(304,160), "S19140C14");
    check_field_offset(lv, s19140c14f0, ABISELECT(216,116), "S19140C14.s19140c14f0");
    test_class_info(&lv, &cd_S19140C14);
    dp->~S19140C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C14(Test_S19140C14, "S19140C14", ABISELECT(528,280));

#else // __cplusplus

extern void _ZN9S19140C14C1Ev();
extern void _ZN9S19140C14D1Ev();
Name_Map name_map_S19140C14[] = {
  NSPAIR(_ZN9S19140C14C1Ev),
  NSPAIR(_ZN9S19140C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19140C9;
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
extern Class_Descriptor cd_S19140C2;
extern VTBL_ENTRY _ZTI8S19140C2[];
extern  VTBL_ENTRY _ZTV8S19140C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C2[];
extern Class_Descriptor cd_S19140C12_nt;
extern VTBL_ENTRY _ZTI12S19140C12_nt[];
extern  VTBL_ENTRY _ZTV12S19140C12_nt[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19140C16;
extern VTBL_ENTRY _ZTI9S19140C16[];
extern  VTBL_ENTRY _ZTV9S19140C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19140C16[];
static Base_Class bases_S19140C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(224,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
    2, //immediately_derived
  0, 1},
  {&cd_S19140C6,    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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(72,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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C11_nt,    ABISELECT(272,144), //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
    9, //immediately_derived
  0, 1},
  {&cd_S19169C6_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
    8, //immediately_derived
  0, 0},
  {&cd_S19140C4,    ABISELECT(152,80), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19140C6,    ABISELECT(280,148), //bcp->offset
    21, //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19140C9,    ABISELECT(152,80), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19140C2,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19140C12_nt,    ABISELECT(288,152), //bcp->offset
    24, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3222C8_nt,    ABISELECT(296,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C16_nt,    ABISELECT(312,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
    16, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(376,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
    16, //immediately_derived
  0, 0},
  {&cd_S19140C4,    ABISELECT(432,228), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //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
    16, //immediately_derived
  0, 1},
  {&cd_S19169C3_nt,    ABISELECT(448,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19140C16,    ABISELECT(304,160), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19140C14[];
extern void _ZN9S19140C14D1Ev();
extern void _ZN9S19140C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev)();
extern void ABISELECT(_ZThn272_N9S19140C14D1Ev,_ZThn144_N9S19140C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev)();
extern void ABISELECT(_ZThn272_N9S19140C14D0Ev,_ZThn144_N9S19140C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev)();
extern void ABISELECT(_ZThn288_N9S19140C14D1Ev,_ZThn152_N9S19140C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev)();
extern void ABISELECT(_ZThn288_N9S19140C14D0Ev,_ZThn152_N9S19140C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19140C14[] = {
  ABISELECT(448,240),
  ABISELECT(432,228),
  ABISELECT(304,160),
  ABISELECT(296,156),
  ABISELECT(288,152),
  ABISELECT(280,148),
  ABISELECT(272,144),
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&_ZN9S19140C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19140C14D0Ev,
  ABISELECT(128,68),
  ABISELECT(72,40),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  ABISELECT(-288,-152),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev),
  ABISELECT(144,80),
  ABISELECT(-80,-40),
  ABISELECT(128,68),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  ABISELECT(-208,-108),
  ABISELECT(-432,-228),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
};
extern VTBL_ENTRY _ZTV9S19140C14[];
extern void _ZN8S19140C2D1Ev();
extern void _ZN8S19140C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19140C2__9S19140C14[] = {
  ABISELECT(280,148),
  ABISELECT(272,144),
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&_ZN8S19140C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19140C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19140C68S19140C2__9S19140C14[] = {
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C98S19140C2__9S19140C14[] = {
  ABISELECT(128,68),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C48S19140C98S19140C2__9S19140C14[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C98S19140C2__9S19140C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S19140C2D1Ev,_ZThn144_N8S19140C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S19140C2D0Ev,_ZThn144_N8S19140C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19169C11_nt__8S19140C2__9S19140C14[] = {
  ABISELECT(-272,-144),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19140C9__8S19140C2__9S19140C14[] = {
  ABISELECT(128,68),
  ABISELECT(72,40),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__8S19140C2__9S19140C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(-280,-148),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__9S19140C14[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19140C16__9S19140C14[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-40),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C4__9S19140C16__9S19140C14[] = {
  ABISELECT(-208,-108),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C4__A1__9S19140C14[] = {
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTT_ENTRY vtt_S19140C14[] = {
  {&(_ZTV9S19140C14[10]),  10,37},
  {&(_tg__ZTV8S19140C2__9S19140C14[5]),  5,7},
  {&(_tg__ZTV8S19140C68S19140C2__9S19140C14[3]),  3,3},
  {&(_tg__ZTV8S19140C98S19140C2__9S19140C14[4]),  4,4},
  {&(_tg__ZTV8S19140C48S19140C98S19140C2__9S19140C14[3]),  3,3},
  {&(_tg__ZTV8S19140C6__8S19140C98S19140C2__9S19140C14[3]),  3,3},
  {&(_tg__ZTV12S19169C11_nt__8S19140C2__9S19140C14[3]),  3,5},
  {&(_tg__ZTV8S19140C9__8S19140C2__9S19140C14[4]),  4,4},
  {&(_tg__ZTV8S19140C6__A1__8S19140C2__9S19140C14[3]),  3,3},
  {&(_ZTV9S19140C14[19]),  19,37},
  {&(_ZTV9S19140C14[16]),  16,37},
  {&(_ZTV9S19140C14[24]),  24,37},
  {&(_ZTV9S19140C14[27]),  27,37},
  {&(_ZTV9S19140C14[34]),  34,37},
  {&(_ZTV9S19140C14[37]),  37,37},
  {&(_tg__ZTV8S19140C6__A1__9S19140C14[3]),  3,3},
  {&(_tg__ZTV9S19140C16__9S19140C14[5]),  5,5},
  {&(_tg__ZTV8S19140C4__9S19140C16__9S19140C14[3]),  3,3},
  {&(_tg__ZTV8S19140C4__A1__9S19140C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19140C14[];
extern  VTBL_ENTRY _ZTV9S19140C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19140C14[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19140C2D0Ev,_ZThn144_N8S19140C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19140C2D1Ev,_ZThn144_N8S19140C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19140C14D0Ev,_ZThn152_N9S19140C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19140C14D0Ev,_ZThn144_N9S19140C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19140C14D1Ev,_ZThn152_N9S19140C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19140C14D1Ev,_ZThn144_N9S19140C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19140C14 = {  "S19140C14", // class name
  bases_S19140C14, 17,
  &(vtc_S19140C14[0]), // expected_vtbl_contents
  &(vtt_S19140C14[0]), // expected_vtt_contents
  ABISELECT(528,280), // object size
  NSPAIRA(_ZTI9S19140C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19140C14),37, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19140C14),19, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19140C17  : S19169C16_nt {
};
//SIG(1 S19140C17) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}}}



static void Test_S19140C17()
{
  extern Class_Descriptor cd_S19140C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19140C17, buf);
    S19140C17 &lv = *(new (buf) S19140C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19140C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C17)");
    check_base_class_offset(lv, (S19169C16_nt*), 0, "S19140C17");
    test_class_info(&lv, &cd_S19140C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C17(Test_S19140C17, "S19140C17", ABISELECT(64,36));

#else // __cplusplus

extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
static Base_Class bases_S19140C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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_S19140C17 = {  "S19140C17", // class name
  bases_S19140C17, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19140C1  : virtual S19140C2 , S2014C38 , virtual S19140C11_nt , S19140C9 , S19140C14 {
  ::S19140C17 s19140c1f0[5];
  virtual  ~S19140C1(); // _ZN8S19140C1D2Ev
  S19140C1(); // tgen
};
//SIG(1 S19140C1) C1{ VBC2{ BC3{ m FC4{ VBC5{ m Fp[6]} FL}} BC6{ VBC5} BC7{ m Fl[10]} VBC8{ vd m} BC9{ BC5 BC10{ VBC5 FL} VBC6} vd} BC11{ m} VBC12{ VBC13{ vd m} BC14{ m} FL:8} BC9 BC15{ BC2 VBC13 VBC16{ m Fi} VBC17{ BC3 BC5 VBC10 VBC7 Fi} Fi} vd FC18{ BC3}[5]}


 S19140C1 ::~S19140C1(){ note_dtor("S19140C1", this);}
S19140C1 ::S19140C1(){ note_ctor("S19140C1", this);} // tgen

static void Test_S19140C1()
{
  extern Class_Descriptor cd_S19140C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(142,155)];
    init_test(&cd_S19140C1, buf);
    S19140C1 *dp, &lv = *(dp=new (buf) S19140C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1128,616), "sizeof(S19140C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19140C1)");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C16_nt*)(S19140C2*), ABISELECT(616,340), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*)(S19140C2*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*)(S19140C9*)(S19140C2*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C9 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*)(S19140C9*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C6*)(S19140C2*)(S19140C14*), ABISELECT(824,452), "S19140C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*)(S19140C9*)(S19140C2*)(S19140C14*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C4 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C4*), ABISELECT(824,452), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19140C6*)(S19140C2*), ABISELECT(608,336), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S19140C2*), ABISELECT(680,376), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C11_nt*)(S19140C2*), ABISELECT(872,476), "S19140C1");
    check_base_class_offset(lv, (S19169C11_nt*)(S19140C2*)(S19140C14*), ABISELECT(872,476), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C9*)(S19140C2*), ABISELECT(776,428), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19140C4*)(S19140C9*)(S19140C2*), ABISELECT(760,416), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19140C6*)(S19140C9*)(S19140C2*), ABISELECT(880,480), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C9 */ AMB_check_base_class_offset(lv, (S19140C6*)(S19140C9*), ABISELECT(880,480), "S19140C1");
    check_base_class_offset(lv, (S19140C6*)(S19140C9*)(S19140C2*)(S19140C14*), ABISELECT(880,480), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19140C9*)(S19140C2*), ABISELECT(760,416), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C2 */ AMB_check_base_class_offset(lv, (S19140C2*), ABISELECT(608,336), "S19140C1");
    check_base_class_offset(lv, (S2014C38*), 0, "S19140C1");
    check_base_class_offset(lv, (S19140C12_nt*)(S19140C11_nt*), ABISELECT(888,484), "S19140C1");
    check_base_class_offset(lv, (S19140C12_nt*)(S19140C14*), ABISELECT(888,484), "S19140C1");
    check_base_class_offset(lv, (S2014C28*)(S19140C11_nt*), ABISELECT(888,484), "S19140C1");
    check_base_class_offset(lv, (S19140C11_nt*), ABISELECT(888,484), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C9 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C9*), ABISELECT(16,12), "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C9 */ AMB_check_base_class_offset(lv, (S19140C4*)(S19140C9*), 0, "S19140C1");
    /*is_ambiguous_... S19140C1::S19140C9 */ AMB_check_base_class_offset(lv, (S19140C9*), 0, "S19140C1");
    check_base_class_offset(lv, (S19169C16_nt*)(S19140C2*)(S19140C14*), ABISELECT(72,40), "S19140C1");
    /*is_ambiguous_... S19140C2::S19140C6 */ AMB_check_base_class_offset(lv, (S19140C6*)(S19140C2*)(S19140C14*), ABISELECT(64,36), "S19140C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S19140C2*)(S19140C14*), ABISELECT(136,76), "S19140C1");
    /*is_ambiguous_... S19140C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C9*)(S19140C2*)(S19140C14*), ABISELECT(232,128), "S19140C1");
    check_base_class_offset(lv, (S19140C4*)(S19140C9*)(S19140C2*)(S19140C14*), ABISELECT(216,116), "S19140C1");
    check_base_class_offset(lv, (S19140C9*)(S19140C2*)(S19140C14*), ABISELECT(216,116), "S19140C1");
    check_base_class_offset(lv, (S19140C2*)(S19140C14*), ABISELECT(64,36), "S19140C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S19140C14*), ABISELECT(900,492), "S19140C1");
    check_base_class_offset(lv, (S19169C16_nt*)(S19140C16*), ABISELECT(912,500), "S19140C1");
    /*is_ambiguous_... S19140C16::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19140C16*), ABISELECT(976,536), "S19140C1");
    check_base_class_offset(lv, (S19140C4*)(S19140C16*), ABISELECT(1032,564), "S19140C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S19140C16*), ABISELECT(1048,576), "S19140C1");
    check_base_class_offset(lv, (S19140C16*)(S19140C14*), ABISELECT(904,496), "S19140C1");
    check_base_class_offset(lv, (S19140C14*), ABISELECT(64,36), "S19140C1");
    check_field_offset(lv, s19140c1f0, ABISELECT(288,156), "S19140C1.s19140c1f0");
    test_class_info(&lv, &cd_S19140C1);
    dp->~S19140C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19140C1(Test_S19140C1, "S19140C1", ABISELECT(1128,616));

#else // __cplusplus

extern void _ZN8S19140C1C1Ev();
extern void _ZN8S19140C1D2Ev();
Name_Map name_map_S19140C1[] = {
  NSPAIR(_ZN8S19140C1C1Ev),
  NSPAIR(_ZN8S19140C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19140C9;
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
extern Class_Descriptor cd_S19140C2;
extern VTBL_ENTRY _ZTI8S19140C2[];
extern  VTBL_ENTRY _ZTV8S19140C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C2[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19140C12_nt;
extern VTBL_ENTRY _ZTI12S19140C12_nt[];
extern  VTBL_ENTRY _ZTV12S19140C12_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19140C11_nt;
extern VTBL_ENTRY _ZTI12S19140C11_nt[];
extern  VTBL_ENTRY _ZTV12S19140C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19140C11_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C9;
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19140C6;
extern VTBL_ENTRY _ZTI8S19140C6[];
extern  VTBL_ENTRY _ZTV8S19140C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19140C9;
extern VTBL_ENTRY _ZTI8S19140C9[];
extern  VTBL_ENTRY _ZTV8S19140C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C9[];
extern Class_Descriptor cd_S19140C2;
extern VTBL_ENTRY _ZTI8S19140C2[];
extern  VTBL_ENTRY _ZTV8S19140C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C2[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19140C4;
extern VTBL_ENTRY _ZTI8S19140C4[];
extern  VTBL_ENTRY _ZTV8S19140C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C4[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19140C16;
extern VTBL_ENTRY _ZTI9S19140C16[];
extern  VTBL_ENTRY _ZTV9S19140C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19140C16[];
extern Class_Descriptor cd_S19140C14;
extern VTBL_ENTRY _ZTI9S19140C14[];
extern  VTBL_ENTRY _ZTV9S19140C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19140C14[];
static Base_Class bases_S19140C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_nt,    ABISELECT(616,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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(824,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19140C6,    ABISELECT(608,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(680,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C11_nt,    ABISELECT(872,476), //bcp->offset
    42, //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
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19169C6_nt,    ABISELECT(776,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19140C4,    ABISELECT(760,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19140C6,    ABISELECT(880,480), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19140C9,    ABISELECT(760,416), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19140C2,    ABISELECT(608,336), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19140C12_nt,    ABISELECT(888,484), //bcp->offset
    -1, //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
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2014C28,    ABISELECT(888,484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19140C11_nt,    ABISELECT(888,484), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C6_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
    16, //immediately_derived
  0, 0},
  {&cd_S19140C4,    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
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19140C9,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C16_nt,    ABISELECT(72,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
    23, //immediately_derived
  0, 0},
  {&cd_S19140C6,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(136,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
    23, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(232,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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19140C4,    ABISELECT(216,116), //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
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19140C9,    ABISELECT(216,116), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19140C2,    ABISELECT(64,36), //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
    16, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(900,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
    30, //immediately_derived
  0, 1},
  {&cd_S19169C16_nt,    ABISELECT(912,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19169C6_nt,    ABISELECT(976,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19140C4,    ABISELECT(1032,564), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19169C3_nt,    ABISELECT(1048,576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19140C16,    ABISELECT(904,496), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19140C14,    ABISELECT(64,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19140C1[];
extern void _ZN8S19140C1D1Ev();
extern void _ZN8S19140C1D0Ev();
extern void ABISELECT(_ZThn64_N8S19140C1D1Ev,_ZThn36_N8S19140C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19140C1D0Ev,_ZThn36_N8S19140C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19140C1D1Ev,_ZTv0_n24_N8S19140C1D1Ev)();
extern void ABISELECT(_ZThn608_N8S19140C1D1Ev,_ZThn336_N8S19140C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19140C1D0Ev,_ZTv0_n24_N8S19140C1D0Ev)();
extern void ABISELECT(_ZThn608_N8S19140C1D0Ev,_ZThn336_N8S19140C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C1D1Ev,_ZTv0_n12_N8S19140C1D1Ev)();
extern void ABISELECT(_ZThn872_N8S19140C1D1Ev,_ZThn476_N8S19140C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C1D0Ev,_ZTv0_n12_N8S19140C1D0Ev)();
extern void ABISELECT(_ZThn872_N8S19140C1D0Ev,_ZThn476_N8S19140C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C1D1Ev,_ZTv0_n12_N8S19140C1D1Ev)();
extern void ABISELECT(_ZThn888_N8S19140C1D1Ev,_ZThn484_N8S19140C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C1D0Ev,_ZTv0_n12_N8S19140C1D0Ev)();
extern void ABISELECT(_ZThn888_N8S19140C1D0Ev,_ZThn484_N8S19140C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19140C1[] = {
  ABISELECT(1048,576),
  ABISELECT(1032,564),
  ABISELECT(904,496),
  ABISELECT(900,492),
  ABISELECT(888,484),
  ABISELECT(888,484),
  ABISELECT(872,476),
  ABISELECT(608,336),
  ABISELECT(880,480),
  ABISELECT(824,452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  (VTBL_ENTRY)&_ZN8S19140C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19140C1D0Ev,
  ABISELECT(984,540),
  ABISELECT(968,528),
  ABISELECT(840,460),
  ABISELECT(836,456),
  ABISELECT(824,448),
  ABISELECT(816,444),
  ABISELECT(808,440),
  ABISELECT(760,416),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19140C1D1Ev,_ZThn36_N8S19140C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19140C1D0Ev,_ZThn36_N8S19140C1D0Ev),
  ABISELECT(664,364),
  ABISELECT(608,336),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  ABISELECT(-608,-336),
  ABISELECT(272,144),
  ABISELECT(264,140),
  ABISELECT(216,116),
  ABISELECT(-608,-336),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19140C1D1Ev,_ZTv0_n24_N8S19140C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19140C1D0Ev,_ZTv0_n24_N8S19140C1D0Ev),
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-760,-416),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  ABISELECT(-872,-476),
  ABISELECT(-872,-476),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C1D1Ev,_ZTv0_n12_N8S19140C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C1D0Ev,_ZTv0_n12_N8S19140C1D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-880,-480),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  0,
  ABISELECT(-888,-484),
  ABISELECT(-888,-484),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C1D1Ev,_ZTv0_n12_N8S19140C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C1D0Ev,_ZTv0_n12_N8S19140C1D0Ev),
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  ABISELECT(-904,-496),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
  ABISELECT(-208,-112),
  ABISELECT(-1032,-564),
  (VTBL_ENTRY)&(_ZTI8S19140C1[0]),
};
extern VTBL_ENTRY _ZTV8S19140C1[];
static  VTBL_ENTRY _tg__ZTV8S19140C9__A1__8S19140C1[] = {
  ABISELECT(880,480),
  ABISELECT(824,452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C48S19140C9__A1__8S19140C1[] = {
  ABISELECT(824,452),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C9__A1__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-880,-480),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
extern void _ZN9S19140C14D1Ev();
extern void _ZN9S19140C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19140C14__8S19140C1[] = {
  ABISELECT(984,540),
  ABISELECT(968,528),
  ABISELECT(840,460),
  ABISELECT(836,456),
  ABISELECT(824,448),
  ABISELECT(816,444),
  ABISELECT(808,440),
  ABISELECT(760,416),
  0,
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&_ZN9S19140C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19140C14D0Ev,
};
extern void _ZN8S19140C2D1Ev();
extern void _ZN8S19140C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19140C29S19140C14__A1__8S19140C1[] = {
  ABISELECT(816,444),
  ABISELECT(808,440),
  ABISELECT(760,416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&_ZN8S19140C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19140C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19140C68S19140C29S19140C14__A2__8S19140C1[] = {
  ABISELECT(760,416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C98S19140C29S19140C14__A2__8S19140C1[] = {
  ABISELECT(664,364),
  ABISELECT(608,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C48S19140C98S19140C29S19140C14__A2__8S19140C1[] = {
  ABISELECT(608,336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C98S19140C29S19140C14__A2__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-664,-364),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev)();
extern void ABISELECT(_ZThn808_N8S19140C2D1Ev,_ZThn440_N8S19140C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev)();
extern void ABISELECT(_ZThn808_N8S19140C2D0Ev,_ZThn440_N8S19140C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19169C11_nt__8S19140C29S19140C14__A1__8S19140C1[] = {
  ABISELECT(-808,-440),
  ABISELECT(-808,-440),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19140C9__8S19140C29S19140C14__A1__8S19140C1[] = {
  ABISELECT(664,364),
  ABISELECT(608,336),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__8S19140C29S19140C14__A1__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-816,-444),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
extern void ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev)();
extern void ABISELECT(_ZThn808_N9S19140C14D1Ev,_ZThn440_N9S19140C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev)();
extern void ABISELECT(_ZThn808_N9S19140C14D0Ev,_ZThn440_N9S19140C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19169C11_nt__9S19140C14__8S19140C1[] = {
  ABISELECT(-808,-440),
  ABISELECT(-808,-440),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19140C98S19140C2__9S19140C14__8S19140C1[] = {
  ABISELECT(664,364),
  ABISELECT(608,336),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__9S19140C14__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-816,-444),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
};
extern void ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev)();
extern void ABISELECT(_ZThn824_N9S19140C14D1Ev,_ZThn448_N9S19140C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev)();
extern void ABISELECT(_ZThn824_N9S19140C14D0Ev,_ZThn448_N9S19140C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19140C12_nt__9S19140C14__8S19140C1[] = {
  ABISELECT(-824,-448),
  ABISELECT(-824,-448),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19140C16__9S19140C14__8S19140C1[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  ABISELECT(-840,-460),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C4__A1__9S19140C14__8S19140C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-968,-528),
  (VTBL_ENTRY)&(_ZTI9S19140C14[0]),
};
extern void _ZN8S19140C2D1Ev();
extern void _ZN8S19140C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19140C2__8S19140C1[] = {
  ABISELECT(272,144),
  ABISELECT(264,140),
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&_ZN8S19140C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19140C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19140C68S19140C2__8S19140C1[] = {
  ABISELECT(216,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C98S19140C2__8S19140C1[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C48S19140C98S19140C2__8S19140C1[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__8S19140C98S19140C2__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19140C9[0]),
};
extern void ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S19140C2D1Ev,_ZThn140_N8S19140C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S19140C2D0Ev,_ZThn140_N8S19140C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19169C11_nt__8S19140C2__8S19140C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(-264,-140),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19140C9__8S19140C2__8S19140C1[] = {
  ABISELECT(120,64),
  ABISELECT(64,36),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__8S19140C2__8S19140C1[] = {
  ABISELECT(-56,-28),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S19140C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C6__A1__8S19140C1[] = {
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C6[0]),
};
extern void ABISELECT(_ZTv0_n24_N12S19140C11_ntD1Ev,_ZTv0_n12_N12S19140C11_ntD1Ev)();
extern void _ZN12S19140C11_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S19140C11_ntD0Ev,_ZTv0_n12_N12S19140C11_ntD0Ev)();
extern void _ZN12S19140C11_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19140C11_nt__8S19140C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19140C11_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S19140C11_ntD1Ev,_ZTv0_n12_N12S19140C11_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S19140C11_ntD0Ev,_ZTv0_n12_N12S19140C11_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19140C16__8S19140C1[] = {
  ABISELECT(144,80),
  ABISELECT(-80,-44),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C4__9S19140C16__8S19140C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19140C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19140C4__A3__8S19140C1[] = {
  ABISELECT(-208,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19140C4[0]),
};
static  VTT_ENTRY vtt_S19140C1[] = {
  {&(_ZTV8S19140C1[12]),  12,64},
  {&(_tg__ZTV8S19140C9__A1__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C48S19140C9__A1__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C6__8S19140C9__A1__8S19140C1[3]),  3,3},
  {&(_tg__ZTV9S19140C14__8S19140C1[10]),  10,12},
  {&(_tg__ZTV8S19140C29S19140C14__A1__8S19140C1[5]),  5,7},
  {&(_tg__ZTV8S19140C68S19140C29S19140C14__A2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C98S19140C29S19140C14__A2__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C48S19140C98S19140C29S19140C14__A2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C6__8S19140C98S19140C29S19140C14__A2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV12S19169C11_nt__8S19140C29S19140C14__A1__8S19140C1[3]),  3,5},
  {&(_tg__ZTV8S19140C9__8S19140C29S19140C14__A1__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C6__A1__8S19140C29S19140C14__A1__8S19140C1[3]),  3,3},
  {&(_tg__ZTV12S19169C11_nt__9S19140C14__8S19140C1[3]),  3,5},
  {&(_tg__ZTV8S19140C98S19140C2__9S19140C14__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C6__A1__9S19140C14__8S19140C1[3]),  3,3},
  {&(_tg__ZTV12S19140C12_nt__9S19140C14__8S19140C1[3]),  3,5},
  {&(_tg__ZTV9S19140C16__9S19140C14__8S19140C1[5]),  5,5},
  {&(_tg__ZTV8S19140C4__A1__9S19140C14__8S19140C1[3]),  3,3},
  {&(_ZTV8S19140C1[36]),  36,64},
  {&(_ZTV8S19140C1[45]),  45,64},
  {&(_ZTV8S19140C1[42]),  42,64},
  {&(_ZTV8S19140C1[50]),  50,64},
  {&(_ZTV8S19140C1[54]),  54,64},
  {&(_ZTV8S19140C1[54]),  54,64},
  {&(_ZTV8S19140C1[24]),  24,64},
  {&(_ZTV8S19140C1[30]),  30,64},
  {&(_ZTV8S19140C1[61]),  61,64},
  {&(_ZTV8S19140C1[64]),  64,64},
  {&(_tg__ZTV8S19140C2__8S19140C1[5]),  5,7},
  {&(_tg__ZTV8S19140C68S19140C2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C98S19140C2__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C48S19140C98S19140C2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C6__8S19140C98S19140C2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV12S19169C11_nt__8S19140C2__8S19140C1[3]),  3,5},
  {&(_tg__ZTV8S19140C9__8S19140C2__8S19140C1[4]),  4,4},
  {&(_tg__ZTV8S19140C6__A1__8S19140C2__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C6__A1__8S19140C1[3]),  3,3},
  {&(_tg__ZTV12S19140C11_nt__8S19140C1[4]),  4,6},
  {&(_tg__ZTV12S19140C11_nt__8S19140C1[4]),  4,6},
  {&(_tg__ZTV9S19140C16__8S19140C1[5]),  5,5},
  {&(_tg__ZTV8S19140C4__9S19140C16__8S19140C1[3]),  3,3},
  {&(_tg__ZTV8S19140C4__A3__8S19140C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19140C1[];
extern  VTBL_ENTRY _ZTV8S19140C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19140C1[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S19140C11_ntD0Ev,_ZTv0_n12_N12S19140C11_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S19140C11_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S19140C11_ntD1Ev,_ZTv0_n12_N12S19140C11_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S19140C11_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19140C14D0Ev,_ZTv0_n12_N9S19140C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19140C14D0Ev,_ZThn448_N9S19140C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N9S19140C14D0Ev,_ZThn440_N9S19140C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19140C14D1Ev,_ZTv0_n12_N9S19140C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19140C14D1Ev,_ZThn448_N9S19140C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N9S19140C14D1Ev,_ZThn440_N9S19140C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D0Ev,_ZTv0_n12_N8S19140C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19140C2D0Ev,_ZThn140_N8S19140C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S19140C2D0Ev,_ZThn440_N8S19140C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C2D1Ev,_ZTv0_n12_N8S19140C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19140C2D1Ev,_ZThn140_N8S19140C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S19140C2D1Ev,_ZThn440_N8S19140C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C1D0Ev,_ZTv0_n12_N8S19140C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn888_N8S19140C1D0Ev,_ZThn484_N8S19140C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S19140C1D0Ev,_ZThn476_N8S19140C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19140C1D1Ev,_ZTv0_n12_N8S19140C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn888_N8S19140C1D1Ev,_ZThn484_N8S19140C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S19140C1D1Ev,_ZThn476_N8S19140C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19140C1D0Ev,_ZTv0_n24_N8S19140C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19140C1D0Ev,_ZThn336_N8S19140C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19140C1D1Ev,_ZTv0_n24_N8S19140C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19140C1D1Ev,_ZThn336_N8S19140C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19140C1 = {  "S19140C1", // class name
  bases_S19140C1, 31,
  &(vtc_S19140C1[0]), // expected_vtbl_contents
  &(vtt_S19140C1[0]), // expected_vtt_contents
  ABISELECT(1128,616), // object size
  NSPAIRA(_ZTI8S19140C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19140C1),64, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19140C1),43, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7672C3  {
  virtual  ~S7672C3(); // _ZN7S7672C3D1Ev
  virtual void  v7(); // _ZN7S7672C32v7Ev
  S7672C3(); // tgen
};
//SIG(-1 S7672C3) C1{ vd v1}


 S7672C3 ::~S7672C3(){ note_dtor("S7672C3", this);}
void  S7672C3 ::v7(){vfunc_called(this, "_ZN7S7672C32v7Ev");}
S7672C3 ::S7672C3(){ note_ctor("S7672C3", this);} // tgen

static void Test_S7672C3()
{
  extern Class_Descriptor cd_S7672C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7672C3, buf);
    S7672C3 *dp, &lv = *(dp=new (buf) S7672C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7672C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7672C3)");
    test_class_info(&lv, &cd_S7672C3);
    dp->~S7672C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7672C3(Test_S7672C3, "S7672C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7672C3C1Ev();
extern void _ZN7S7672C3D1Ev();
Name_Map name_map_S7672C3[] = {
  NSPAIR(_ZN7S7672C3C1Ev),
  NSPAIR(_ZN7S7672C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7672C3[];
extern void _ZN7S7672C3D1Ev();
extern void _ZN7S7672C3D0Ev();
extern void _ZN7S7672C32v7Ev();
static  VTBL_ENTRY vtc_S7672C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7672C3[0]),
  (VTBL_ENTRY)&_ZN7S7672C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7672C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
Class_Descriptor cd_S7672C3 = {  "S7672C3", // class name
  0,0,//no base classes
  &(vtc_S7672C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7672C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7672C3),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  S7672C4_nt  {
  long s7672c4f0;
  virtual void  v8(); // _ZN10S7672C4_nt2v8Ev
  virtual void  v9(); // _ZN10S7672C4_nt2v9Ev
  virtual void  v10(); // _ZN10S7672C4_nt3v10Ev
  ~S7672C4_nt(); // tgen
  S7672C4_nt(); // tgen
};
//SIG(-1 S7672C4_nt) C1{ v1 v2 v3 Fl}


void  S7672C4_nt ::v8(){vfunc_called(this, "_ZN10S7672C4_nt2v8Ev");}
void  S7672C4_nt ::v9(){vfunc_called(this, "_ZN10S7672C4_nt2v9Ev");}
void  S7672C4_nt ::v10(){vfunc_called(this, "_ZN10S7672C4_nt3v10Ev");}
S7672C4_nt ::~S7672C4_nt(){ note_dtor("S7672C4_nt", this);} // tgen
S7672C4_nt ::S7672C4_nt(){ note_ctor("S7672C4_nt", this);} // tgen

//skip512 S7672C4_nt

#else // __cplusplus

extern void _ZN10S7672C4_ntC1Ev();
extern void _ZN10S7672C4_ntD1Ev();
Name_Map name_map_S7672C4_nt[] = {
  NSPAIR(_ZN10S7672C4_ntC1Ev),
  NSPAIR(_ZN10S7672C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7672C4_nt[];
extern void _ZN10S7672C4_nt2v8Ev();
extern void _ZN10S7672C4_nt2v9Ev();
extern void _ZN10S7672C4_nt3v10Ev();
static  VTBL_ENTRY vtc_S7672C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S7672C4_nt[];
VTBL_ENTRY *P__ZTI10S7672C4_nt = _ZTI10S7672C4_nt; 
extern  VTBL_ENTRY _ZTV10S7672C4_nt[];
Class_Descriptor cd_S7672C4_nt = {  "S7672C4_nt", // class name
  0,0,//no base classes
  &(vtc_S7672C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7672C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7672C4_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  S7672C2_nt  : virtual S7672C3 , S7672C4_nt {
  long s7672c2f0[9];
  virtual  ~S7672C2_nt(); // _ZN10S7672C2_ntD2Ev
  virtual void  v11(); // _ZN10S7672C2_nt3v11Ev
  S7672C2_nt(); // tgen
};
//SIG(-1 S7672C2_nt) C1{ VBC2{ vd v2} BC3{ v3 v4 v5 Fl} vd v1 Fl[9]}


 S7672C2_nt ::~S7672C2_nt(){ note_dtor("S7672C2_nt", this);}
void  S7672C2_nt ::v11(){vfunc_called(this, "_ZN10S7672C2_nt3v11Ev");}
S7672C2_nt ::S7672C2_nt(){ note_ctor("S7672C2_nt", this);} // tgen

//skip512 S7672C2_nt

#else // __cplusplus

extern void _ZN10S7672C2_ntC1Ev();
extern void _ZN10S7672C2_ntD2Ev();
Name_Map name_map_S7672C2_nt[] = {
  NSPAIR(_ZN10S7672C2_ntC1Ev),
  NSPAIR(_ZN10S7672C2_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
extern Class_Descriptor cd_S7672C4_nt;
extern VTBL_ENTRY _ZTI10S7672C4_nt[];
extern  VTBL_ENTRY _ZTV10S7672C4_nt[];
static Base_Class bases_S7672C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7672C3,    ABISELECT(88,44), //bcp->offset
    9, //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_S7672C4_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 _ZTI10S7672C2_nt[];
extern void _ZN10S7672C4_nt2v8Ev();
extern void _ZN10S7672C4_nt2v9Ev();
extern void _ZN10S7672C4_nt3v10Ev();
extern void _ZN10S7672C2_ntD1Ev();
extern void _ZN10S7672C2_ntD0Ev();
extern void _ZN10S7672C2_nt3v11Ev();
extern void ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev)();
extern void ABISELECT(_ZThn88_N10S7672C2_ntD1Ev,_ZThn44_N10S7672C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev)();
extern void ABISELECT(_ZThn88_N10S7672C2_ntD0Ev,_ZThn44_N10S7672C2_ntD0Ev)() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
static  VTBL_ENTRY vtc_S7672C2_nt[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_nt3v11Ev,
  0,
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI10S7672C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
};
extern VTBL_ENTRY _ZTV10S7672C2_nt[];
static  VTT_ENTRY vtt_S7672C2_nt[] = {
  {&(_ZTV10S7672C2_nt[3]),  3,16},
  {&(_ZTV10S7672C2_nt[13]),  13,16},
};
extern VTBL_ENTRY _ZTI10S7672C2_nt[];
VTBL_ENTRY *P__ZTI10S7672C2_nt = _ZTI10S7672C2_nt; 
extern  VTBL_ENTRY _ZTV10S7672C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C2_nt[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N10S7672C2_ntD0Ev,_ZThn44_N10S7672C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N10S7672C2_ntD1Ev,_ZThn44_N10S7672C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7672C2_nt = {  "S7672C2_nt", // class name
  bases_S7672C2_nt, 2,
  &(vtc_S7672C2_nt[0]), // expected_vtbl_contents
  &(vtt_S7672C2_nt[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI10S7672C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S7672C2_nt),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S7672C2_nt),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7672C6_nt  : virtual S7672C3 {
  virtual  ~S7672C6_nt(); // _ZN10S7672C6_ntD2Ev
  virtual void  v12(); // _ZN10S7672C6_nt3v12Ev
  virtual void  v13(); // _ZN10S7672C6_nt3v13Ev
  S7672C6_nt(); // tgen
};
//SIG(-1 S7672C6_nt) C1{ VBC2{ vd v3} vd v1 v2}


 S7672C6_nt ::~S7672C6_nt(){ note_dtor("S7672C6_nt", this);}
void  S7672C6_nt ::v12(){vfunc_called(this, "_ZN10S7672C6_nt3v12Ev");}
void  S7672C6_nt ::v13(){vfunc_called(this, "_ZN10S7672C6_nt3v13Ev");}
S7672C6_nt ::S7672C6_nt(){ note_ctor("S7672C6_nt", this);} // tgen

//skip512 S7672C6_nt

#else // __cplusplus

extern void _ZN10S7672C6_ntC1Ev();
extern void _ZN10S7672C6_ntD2Ev();
Name_Map name_map_S7672C6_nt[] = {
  NSPAIR(_ZN10S7672C6_ntC1Ev),
  NSPAIR(_ZN10S7672C6_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
static Base_Class bases_S7672C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7672C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI10S7672C6_nt[];
extern void _ZN10S7672C6_ntD1Ev();
extern void _ZN10S7672C6_ntD0Ev();
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S7672C6_nt[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV10S7672C6_nt[];
static  VTT_ENTRY vtt_S7672C6_nt[] = {
  {&(_ZTV10S7672C6_nt[5]),  5,10},
  {&(_ZTV10S7672C6_nt[5]),  5,10},
};
extern VTBL_ENTRY _ZTI10S7672C6_nt[];
VTBL_ENTRY *P__ZTI10S7672C6_nt = _ZTI10S7672C6_nt; 
extern  VTBL_ENTRY _ZTV10S7672C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C6_nt[];
Class_Descriptor cd_S7672C6_nt = {  "S7672C6_nt", // class name
  bases_S7672C6_nt, 1,
  &(vtc_S7672C6_nt[0]), // expected_vtbl_contents
  &(vtt_S7672C6_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7672C6_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S7672C6_nt),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S7672C6_nt),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  S7672C5_nt  : virtual S7672C6_nt , S7672C3 {
  void *s7672c5f0;
  ::S7672C6_nt s7672c5f1;
  virtual void  v14(); // _ZN10S7672C5_nt3v14Ev
  virtual void  v15(); // _ZN10S7672C5_nt3v15Ev
  virtual void  v16(); // _ZN10S7672C5_nt3v16Ev
  virtual void  v17(); // _ZN10S7672C5_nt3v17Ev
  virtual void  v18(); // _ZN10S7672C5_nt3v18Ev
  ~S7672C5_nt(); // tgen
  S7672C5_nt(); // tgen
};
//SIG(-1 S7672C5_nt) C1{ VBC2{ VBC3{ vd v6} vd v7 v8} BC3 v1 v2 v3 v4 v5 Fp FC2}


void  S7672C5_nt ::v14(){vfunc_called(this, "_ZN10S7672C5_nt3v14Ev");}
void  S7672C5_nt ::v15(){vfunc_called(this, "_ZN10S7672C5_nt3v15Ev");}
void  S7672C5_nt ::v16(){vfunc_called(this, "_ZN10S7672C5_nt3v16Ev");}
void  S7672C5_nt ::v17(){vfunc_called(this, "_ZN10S7672C5_nt3v17Ev");}
void  S7672C5_nt ::v18(){vfunc_called(this, "_ZN10S7672C5_nt3v18Ev");}
S7672C5_nt ::~S7672C5_nt(){ note_dtor("S7672C5_nt", this);} // tgen
S7672C5_nt ::S7672C5_nt(){ note_ctor("S7672C5_nt", this);} // tgen

//skip512 S7672C5_nt

#else // __cplusplus

extern void _ZN10S7672C5_ntC1Ev();
extern void _ZN10S7672C5_ntD1Ev();
Name_Map name_map_S7672C5_nt[] = {
  NSPAIR(_ZN10S7672C5_ntC1Ev),
  NSPAIR(_ZN10S7672C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
extern Class_Descriptor cd_S7672C6_nt;
extern VTBL_ENTRY _ZTI10S7672C6_nt[];
extern  VTBL_ENTRY _ZTV10S7672C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C6_nt[];
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
static Base_Class bases_S7672C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7672C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S7672C6_nt,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //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},
  {&cd_S7672C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI10S7672C5_nt[];
extern void _ZN10S7672C5_ntD1Ev();
extern void _ZN10S7672C5_ntD0Ev();
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C5_nt3v14Ev();
extern void _ZN10S7672C5_nt3v15Ev();
extern void _ZN10S7672C5_nt3v16Ev();
extern void _ZN10S7672C5_nt3v17Ev();
extern void _ZN10S7672C5_nt3v18Ev();
extern void ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S7672C5_ntD1Ev,_ZThn12_N10S7672C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S7672C5_ntD0Ev,_ZThn12_N10S7672C5_ntD0Ev)() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
static  VTBL_ENTRY vtc_S7672C5_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S7672C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV10S7672C5_nt[];
extern void ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev)();
extern void _ZN10S7672C6_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev)();
extern void _ZN10S7672C6_ntD0Ev() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV10S7672C6_nt__10S7672C5_nt[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C6_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
};
static  VTT_ENTRY vtt_S7672C5_nt[] = {
  {&(_ZTV10S7672C5_nt[4]),  4,24},
  {&(_ZTV10S7672C5_nt[19]),  19,24},
  {&(_ZTV10S7672C5_nt[19]),  19,24},
  {&(_tg__ZTV10S7672C6_nt__10S7672C5_nt[5]),  5,10},
  {&(_tg__ZTV10S7672C6_nt__10S7672C5_nt[5]),  5,10},
};
extern VTBL_ENTRY _ZTI10S7672C5_nt[];
VTBL_ENTRY *P__ZTI10S7672C5_nt = _ZTI10S7672C5_nt; 
extern  VTBL_ENTRY _ZTV10S7672C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C5_nt[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev), // 
  (VTBL_ENTRY)_ZN10S7672C6_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev), // 
  (VTBL_ENTRY)_ZN10S7672C6_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7672C5_ntD0Ev,_ZThn12_N10S7672C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7672C5_ntD1Ev,_ZThn12_N10S7672C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7672C5_nt = {  "S7672C5_nt", // class name
  bases_S7672C5_nt, 3,
  &(vtc_S7672C5_nt[0]), // expected_vtbl_contents
  &(vtt_S7672C5_nt[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI10S7672C5_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S7672C5_nt),24, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S7672C5_nt),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7672C7_nt  {
  int s7672c7f0[2];
  virtual void  v19(); // _ZN10S7672C7_nt3v19Ev
  virtual void  v20(); // _ZN10S7672C7_nt3v20Ev
  virtual void  v21(); // _ZN10S7672C7_nt3v21Ev
  virtual void  v22(); // _ZN10S7672C7_nt3v22Ev
  virtual void  v23(); // _ZN10S7672C7_nt3v23Ev
  virtual void  v24(); // _ZN10S7672C7_nt3v24Ev
  virtual void  v25(); // _ZN10S7672C7_nt3v25Ev
  virtual void  v26(); // _ZN10S7672C7_nt3v26Ev
  ~S7672C7_nt(); // tgen
  S7672C7_nt(); // tgen
};
//SIG(-1 S7672C7_nt) C1{ v1 v2 v3 v4 v5 v6 v7 v8 Fi[2]}


void  S7672C7_nt ::v19(){vfunc_called(this, "_ZN10S7672C7_nt3v19Ev");}
void  S7672C7_nt ::v20(){vfunc_called(this, "_ZN10S7672C7_nt3v20Ev");}
void  S7672C7_nt ::v21(){vfunc_called(this, "_ZN10S7672C7_nt3v21Ev");}
void  S7672C7_nt ::v22(){vfunc_called(this, "_ZN10S7672C7_nt3v22Ev");}
void  S7672C7_nt ::v23(){vfunc_called(this, "_ZN10S7672C7_nt3v23Ev");}
void  S7672C7_nt ::v24(){vfunc_called(this, "_ZN10S7672C7_nt3v24Ev");}
void  S7672C7_nt ::v25(){vfunc_called(this, "_ZN10S7672C7_nt3v25Ev");}
void  S7672C7_nt ::v26(){vfunc_called(this, "_ZN10S7672C7_nt3v26Ev");}
S7672C7_nt ::~S7672C7_nt(){ note_dtor("S7672C7_nt", this);} // tgen
S7672C7_nt ::S7672C7_nt(){ note_ctor("S7672C7_nt", this);} // tgen

//skip512 S7672C7_nt

#else // __cplusplus

extern void _ZN10S7672C7_ntC1Ev();
extern void _ZN10S7672C7_ntD1Ev();
Name_Map name_map_S7672C7_nt[] = {
  NSPAIR(_ZN10S7672C7_ntC1Ev),
  NSPAIR(_ZN10S7672C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7672C7_nt[];
extern void _ZN10S7672C7_nt3v19Ev();
extern void _ZN10S7672C7_nt3v20Ev();
extern void _ZN10S7672C7_nt3v21Ev();
extern void _ZN10S7672C7_nt3v22Ev();
extern void _ZN10S7672C7_nt3v23Ev();
extern void _ZN10S7672C7_nt3v24Ev();
extern void _ZN10S7672C7_nt3v25Ev();
extern void _ZN10S7672C7_nt3v26Ev();
static  VTBL_ENTRY vtc_S7672C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S7672C7_nt[];
VTBL_ENTRY *P__ZTI10S7672C7_nt = _ZTI10S7672C7_nt; 
extern  VTBL_ENTRY _ZTV10S7672C7_nt[];
Class_Descriptor cd_S7672C7_nt = {  "S7672C7_nt", // class name
  0,0,//no base classes
  &(vtc_S7672C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S7672C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7672C7_nt),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  S7672C8_nt  {
  ::S7672C3 s7672c8f0;
  __tsi64 s7672c8f1:18;
  virtual void  v27(); // _ZN10S7672C8_nt3v27Ev
  ~S7672C8_nt(); // tgen
  S7672C8_nt(); // tgen
};
//SIG(-1 S7672C8_nt) C1{ v1 FC2{ vd v2} FL:18}


void  S7672C8_nt ::v27(){vfunc_called(this, "_ZN10S7672C8_nt3v27Ev");}
S7672C8_nt ::~S7672C8_nt(){ note_dtor("S7672C8_nt", this);} // tgen
S7672C8_nt ::S7672C8_nt(){ note_ctor("S7672C8_nt", this);} // tgen

//skip512 S7672C8_nt

#else // __cplusplus

extern void _ZN10S7672C8_ntC1Ev();
extern void _ZN10S7672C8_ntD1Ev();
Name_Map name_map_S7672C8_nt[] = {
  NSPAIR(_ZN10S7672C8_ntC1Ev),
  NSPAIR(_ZN10S7672C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7672C8_nt[];
extern void _ZN10S7672C8_nt3v27Ev();
static  VTBL_ENTRY vtc_S7672C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C8_nt3v27Ev,
};
extern VTBL_ENTRY _ZTI10S7672C8_nt[];
VTBL_ENTRY *P__ZTI10S7672C8_nt = _ZTI10S7672C8_nt; 
extern  VTBL_ENTRY _ZTV10S7672C8_nt[];
Class_Descriptor cd_S7672C8_nt = {  "S7672C8_nt", // class name
  0,0,//no base classes
  &(vtc_S7672C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S7672C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7672C8_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7672C1  : S7672C2_nt , S7672C4_nt , S7672C5_nt , virtual S7672C7_nt , virtual S7672C8_nt {
  virtual  ~S7672C1(); // _ZN7S7672C1D2Ev
  virtual void  v1(); // _ZN7S7672C12v1Ev
  virtual void  v2(); // _ZN7S7672C12v2Ev
  virtual void  v3(); // _ZN7S7672C12v3Ev
  virtual void  v4(); // _ZN7S7672C12v4Ev
  virtual void  v5(); // _ZN7S7672C12v5Ev
  virtual void  v6(); // _ZN7S7672C12v6Ev
  S7672C1(); // tgen
};
//SIG(1 S7672C1) C1{ BC2{ VBC3{ vd v7} BC4{ v8 v9 v10 Fl} vd v11 Fl[9]} BC4 BC5{ VBC6{ VBC3 vd v12 v13} BC3 v14 v15 v16 v17 v18 Fp FC6} VBC7{ v19 v20 v21 v22 v23 v24 v25 v26 Fi[2]} VBC8{ v27 FC3 FL:18} vd v1 v2 v3 v4 v5 v6}


 S7672C1 ::~S7672C1(){ note_dtor("S7672C1", this);}
void  S7672C1 ::v1(){vfunc_called(this, "_ZN7S7672C12v1Ev");}
void  S7672C1 ::v2(){vfunc_called(this, "_ZN7S7672C12v2Ev");}
void  S7672C1 ::v3(){vfunc_called(this, "_ZN7S7672C12v3Ev");}
void  S7672C1 ::v4(){vfunc_called(this, "_ZN7S7672C12v4Ev");}
void  S7672C1 ::v5(){vfunc_called(this, "_ZN7S7672C12v5Ev");}
void  S7672C1 ::v6(){vfunc_called(this, "_ZN7S7672C12v6Ev");}
S7672C1 ::S7672C1(){ note_ctor("S7672C1", this);} // tgen

static void Test_S7672C1()
{
  extern Class_Descriptor cd_S7672C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S7672C1, buf);
    S7672C1 *dp, &lv = *(dp=new (buf) S7672C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7672C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7672C1)");
    check_base_class_offset(lv, (S7672C3*)(S7672C2_nt*), ABISELECT(128,64), "S7672C1");
    check_base_class_offset(lv, (S7672C3*)(S7672C6_nt*), ABISELECT(128,64), "S7672C1");
    check_base_class_offset(lv, (S7672C4_nt*)(S7672C2_nt*), 0, "S7672C1");
    check_base_class_offset(lv, (S7672C2_nt*), 0, "S7672C1");
    /*is_ambiguous_... S7672C1::S7672C4_nt */ AMB_check_base_class_offset(lv, (S7672C4_nt*), ABISELECT(88,44), "S7672C1");
    check_base_class_offset(lv, (S7672C6_nt*)(S7672C5_nt*), ABISELECT(128,64), "S7672C1");
    /*is_ambiguous_... S7672C5_nt::S7672C3 */ AMB_check_base_class_offset(lv, (S7672C3*)(S7672C5_nt*), ABISELECT(104,52), "S7672C1");
    check_base_class_offset(lv, (S7672C5_nt*), ABISELECT(104,52), "S7672C1");
    check_base_class_offset(lv, (S7672C7_nt*), ABISELECT(136,68), "S7672C1");
    check_base_class_offset(lv, (S7672C8_nt*), ABISELECT(152,80), "S7672C1");
    test_class_info(&lv, &cd_S7672C1);
    dp->~S7672C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7672C1(Test_S7672C1, "S7672C1", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7672C1C1Ev();
extern void _ZN7S7672C1D2Ev();
Name_Map name_map_S7672C1[] = {
  NSPAIR(_ZN7S7672C1C1Ev),
  NSPAIR(_ZN7S7672C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
extern Class_Descriptor cd_S7672C4_nt;
extern VTBL_ENTRY _ZTI10S7672C4_nt[];
extern  VTBL_ENTRY _ZTV10S7672C4_nt[];
extern Class_Descriptor cd_S7672C2_nt;
extern VTBL_ENTRY _ZTI10S7672C2_nt[];
extern  VTBL_ENTRY _ZTV10S7672C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C2_nt[];
extern Class_Descriptor cd_S7672C4_nt;
extern VTBL_ENTRY _ZTI10S7672C4_nt[];
extern  VTBL_ENTRY _ZTV10S7672C4_nt[];
extern Class_Descriptor cd_S7672C6_nt;
extern VTBL_ENTRY _ZTI10S7672C6_nt[];
extern  VTBL_ENTRY _ZTV10S7672C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C6_nt[];
extern Class_Descriptor cd_S7672C3;
extern VTBL_ENTRY _ZTI7S7672C3[];
extern  VTBL_ENTRY _ZTV7S7672C3[];
extern Class_Descriptor cd_S7672C5_nt;
extern VTBL_ENTRY _ZTI10S7672C5_nt[];
extern  VTBL_ENTRY _ZTV10S7672C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7672C5_nt[];
extern Class_Descriptor cd_S7672C7_nt;
extern VTBL_ENTRY _ZTI10S7672C7_nt[];
extern  VTBL_ENTRY _ZTV10S7672C7_nt[];
extern Class_Descriptor cd_S7672C8_nt;
extern VTBL_ENTRY _ZTI10S7672C8_nt[];
extern  VTBL_ENTRY _ZTV10S7672C8_nt[];
static Base_Class bases_S7672C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7672C3,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7672C4_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
    2, //immediately_derived
  0, 0},
  {&cd_S7672C2_nt,    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},
  {&cd_S7672C4_nt,    ABISELECT(88,44), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7672C6_nt,    ABISELECT(128,64), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7672C3,    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
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7672C5_nt,    ABISELECT(104,52), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7672C7_nt,    ABISELECT(136,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7672C8_nt,    ABISELECT(152,80), //bcp->offset
    65, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7672C1[];
extern void _ZN10S7672C4_nt2v8Ev();
extern void _ZN10S7672C4_nt2v9Ev();
extern void _ZN10S7672C4_nt3v10Ev();
extern void _ZN7S7672C1D1Ev();
extern void _ZN7S7672C1D0Ev();
extern void _ZN10S7672C2_nt3v11Ev();
extern void _ZN7S7672C12v1Ev();
extern void _ZN7S7672C12v2Ev();
extern void _ZN7S7672C12v3Ev();
extern void _ZN7S7672C12v4Ev();
extern void _ZN7S7672C12v5Ev();
extern void _ZN7S7672C12v6Ev();
extern void _ZN10S7672C4_nt2v8Ev();
extern void _ZN10S7672C4_nt2v9Ev();
extern void _ZN10S7672C4_nt3v10Ev();
extern void ABISELECT(_ZThn104_N7S7672C1D1Ev,_ZThn52_N7S7672C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7672C1D0Ev,_ZThn52_N7S7672C1D0Ev)();
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C5_nt3v14Ev();
extern void _ZN10S7672C5_nt3v15Ev();
extern void _ZN10S7672C5_nt3v16Ev();
extern void _ZN10S7672C5_nt3v17Ev();
extern void _ZN10S7672C5_nt3v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S7672C1D1Ev,_ZTv0_n12_N7S7672C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7672C1D1Ev,_ZThn64_N7S7672C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7672C1D0Ev,_ZTv0_n12_N7S7672C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S7672C1D0Ev,_ZThn64_N7S7672C1D0Ev)() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
extern void _ZN10S7672C7_nt3v19Ev();
extern void _ZN10S7672C7_nt3v20Ev();
extern void _ZN10S7672C7_nt3v21Ev();
extern void _ZN10S7672C7_nt3v22Ev();
extern void _ZN10S7672C7_nt3v23Ev();
extern void _ZN10S7672C7_nt3v24Ev();
extern void _ZN10S7672C7_nt3v25Ev();
extern void _ZN10S7672C7_nt3v26Ev();
extern void _ZN10S7672C8_nt3v27Ev();
static  VTBL_ENTRY vtc_S7672C1[] = {
  ABISELECT(152,80),
  ABISELECT(136,68),
  ABISELECT(128,64),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S7672C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7672C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7672C12v6Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt3v10Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7672C1D1Ev,_ZThn52_N7S7672C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7672C1D0Ev,_ZThn52_N7S7672C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7672C1D1Ev,_ZTv0_n12_N7S7672C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7672C1D0Ev,_ZTv0_n12_N7S7672C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7672C7_nt3v26Ev,
  0,
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S7672C1[0]),
  (VTBL_ENTRY)&_ZN10S7672C8_nt3v27Ev,
};
extern VTBL_ENTRY _ZTV7S7672C1[];
extern void _ZN10S7672C4_nt2v8Ev();
extern void _ZN10S7672C4_nt2v9Ev();
extern void _ZN10S7672C4_nt3v10Ev();
extern void _ZN10S7672C2_ntD1Ev();
extern void _ZN10S7672C2_ntD0Ev();
extern void _ZN10S7672C2_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV10S7672C2_nt__7S7672C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7672C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7672C2_nt3v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev)();
extern void ABISELECT(_ZThn128_N10S7672C2_ntD1Ev,_ZThn64_N10S7672C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev)();
extern void ABISELECT(_ZThn128_N10S7672C2_ntD0Ev,_ZThn64_N10S7672C2_ntD0Ev)() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7672C3__10S7672C2_nt__7S7672C1[] = {
  0,
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI10S7672C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
};
extern void _ZN10S7672C5_ntD1Ev();
extern void _ZN10S7672C5_ntD0Ev();
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C5_nt3v14Ev();
extern void _ZN10S7672C5_nt3v15Ev();
extern void _ZN10S7672C5_nt3v16Ev();
extern void _ZN10S7672C5_nt3v17Ev();
extern void _ZN10S7672C5_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S7672C5_nt__7S7672C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S7672C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7672C5_nt3v18Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S7672C5_ntD1Ev,_ZThn12_N10S7672C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S7672C5_ntD0Ev,_ZThn12_N10S7672C5_ntD0Ev)() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV10S7672C6_nt__10S7672C5_nt__7S7672C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S7672C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev)();
extern void _ZN10S7672C6_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev)();
extern void _ZN10S7672C6_ntD0Ev() __attribute__((weak));
extern void _ZN7S7672C32v7Ev();
extern void _ZN10S7672C6_nt3v12Ev();
extern void _ZN10S7672C6_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV10S7672C6_nt__7S7672C1[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI10S7672C6_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7672C32v7Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7672C6_nt3v13Ev,
};
static  VTT_ENTRY vtt_S7672C1[] = {
  {&(_ZTV7S7672C1[6]),  6,69},
  {&(_tg__ZTV10S7672C2_nt__7S7672C1[3]),  3,9},
  {&(_tg__ZTV7S7672C3__10S7672C2_nt__7S7672C1[4]),  4,7},
  {&(_tg__ZTV10S7672C5_nt__7S7672C1[4]),  4,12},
  {&(_tg__ZTV10S7672C6_nt__10S7672C5_nt__7S7672C1[7]),  7,12},
  {&(_tg__ZTV10S7672C6_nt__10S7672C5_nt__7S7672C1[7]),  7,12},
  {&(_ZTV7S7672C1[42]),  42,69},
  {&(_ZTV7S7672C1[27]),  27,69},
  {&(_ZTV7S7672C1[42]),  42,69},
  {&(_ZTV7S7672C1[57]),  57,69},
  {&(_ZTV7S7672C1[68]),  68,69},
  {&(_tg__ZTV10S7672C6_nt__7S7672C1[5]),  5,10},
  {&(_tg__ZTV10S7672C6_nt__7S7672C1[5]),  5,10},
};
extern VTBL_ENTRY _ZTI7S7672C1[];
extern  VTBL_ENTRY _ZTV7S7672C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7672C1[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C6_ntD0Ev,_ZTv0_n12_N10S7672C6_ntD0Ev), // 
  (VTBL_ENTRY)_ZN10S7672C6_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C6_ntD1Ev,_ZTv0_n12_N10S7672C6_ntD1Ev), // 
  (VTBL_ENTRY)_ZN10S7672C6_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C5_ntD0Ev,_ZTv0_n12_N10S7672C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7672C5_ntD0Ev,_ZThn12_N10S7672C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C5_ntD1Ev,_ZTv0_n12_N10S7672C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7672C5_ntD1Ev,_ZThn12_N10S7672C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C2_ntD0Ev,_ZTv0_n12_N10S7672C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N10S7672C2_ntD0Ev,_ZThn64_N10S7672C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7672C2_ntD1Ev,_ZTv0_n12_N10S7672C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N10S7672C2_ntD1Ev,_ZThn64_N10S7672C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7672C1D0Ev,_ZTv0_n12_N7S7672C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7672C1D0Ev,_ZThn64_N7S7672C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7672C1D1Ev,_ZTv0_n12_N7S7672C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7672C1D1Ev,_ZThn64_N7S7672C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7672C1 = {  "S7672C1", // class name
  bases_S7672C1, 9,
  &(vtc_S7672C1[0]), // expected_vtbl_contents
  &(vtt_S7672C1[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7672C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7672C1),69, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7672C1),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4952C3_nt  {
  virtual  ~S4952C3_nt(); // _ZN10S4952C3_ntD1Ev
  virtual void  v3(); // _ZN10S4952C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4952C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4952C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4952C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4952C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4952C3_nt2v8Ev
  virtual void  v9(); // _ZN10S4952C3_nt2v9Ev
  virtual void  v10(); // _ZN10S4952C3_nt3v10Ev
  virtual void  v11(); // _ZN10S4952C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4952C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4952C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4952C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4952C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4952C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4952C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4952C3_nt3v18Ev
  S4952C3_nt(); // tgen
};
//SIG(-1 S4952C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S4952C3_nt ::~S4952C3_nt(){ note_dtor("S4952C3_nt", this);}
void  S4952C3_nt ::v3(){vfunc_called(this, "_ZN10S4952C3_nt2v3Ev");}
void  S4952C3_nt ::v4(){vfunc_called(this, "_ZN10S4952C3_nt2v4Ev");}
void  S4952C3_nt ::v5(){vfunc_called(this, "_ZN10S4952C3_nt2v5Ev");}
void  S4952C3_nt ::v6(){vfunc_called(this, "_ZN10S4952C3_nt2v6Ev");}
void  S4952C3_nt ::v7(){vfunc_called(this, "_ZN10S4952C3_nt2v7Ev");}
void  S4952C3_nt ::v8(){vfunc_called(this, "_ZN10S4952C3_nt2v8Ev");}
void  S4952C3_nt ::v9(){vfunc_called(this, "_ZN10S4952C3_nt2v9Ev");}
void  S4952C3_nt ::v10(){vfunc_called(this, "_ZN10S4952C3_nt3v10Ev");}
void  S4952C3_nt ::v11(){vfunc_called(this, "_ZN10S4952C3_nt3v11Ev");}
void  S4952C3_nt ::v12(){vfunc_called(this, "_ZN10S4952C3_nt3v12Ev");}
void  S4952C3_nt ::v13(){vfunc_called(this, "_ZN10S4952C3_nt3v13Ev");}
void  S4952C3_nt ::v14(){vfunc_called(this, "_ZN10S4952C3_nt3v14Ev");}
void  S4952C3_nt ::v15(){vfunc_called(this, "_ZN10S4952C3_nt3v15Ev");}
void  S4952C3_nt ::v16(){vfunc_called(this, "_ZN10S4952C3_nt3v16Ev");}
void  S4952C3_nt ::v17(){vfunc_called(this, "_ZN10S4952C3_nt3v17Ev");}
void  S4952C3_nt ::v18(){vfunc_called(this, "_ZN10S4952C3_nt3v18Ev");}
S4952C3_nt ::S4952C3_nt(){ note_ctor("S4952C3_nt", this);} // tgen

//skip512 S4952C3_nt

#else // __cplusplus

extern void _ZN10S4952C3_ntC1Ev();
extern void _ZN10S4952C3_ntD1Ev();
Name_Map name_map_S4952C3_nt[] = {
  NSPAIR(_ZN10S4952C3_ntC1Ev),
  NSPAIR(_ZN10S4952C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4952C3_nt[];
extern void _ZN10S4952C3_ntD1Ev();
extern void _ZN10S4952C3_ntD0Ev();
extern void _ZN10S4952C3_nt2v3Ev();
extern void _ZN10S4952C3_nt2v4Ev();
extern void _ZN10S4952C3_nt2v5Ev();
extern void _ZN10S4952C3_nt2v6Ev();
extern void _ZN10S4952C3_nt2v7Ev();
extern void _ZN10S4952C3_nt2v8Ev();
extern void _ZN10S4952C3_nt2v9Ev();
extern void _ZN10S4952C3_nt3v10Ev();
extern void _ZN10S4952C3_nt3v11Ev();
extern void _ZN10S4952C3_nt3v12Ev();
extern void _ZN10S4952C3_nt3v13Ev();
extern void _ZN10S4952C3_nt3v14Ev();
extern void _ZN10S4952C3_nt3v15Ev();
extern void _ZN10S4952C3_nt3v16Ev();
extern void _ZN10S4952C3_nt3v17Ev();
extern void _ZN10S4952C3_nt3v18Ev();
static  VTBL_ENTRY vtc_S4952C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4952C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4952C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI10S4952C3_nt[];
VTBL_ENTRY *P__ZTI10S4952C3_nt = _ZTI10S4952C3_nt; 
extern  VTBL_ENTRY _ZTV10S4952C3_nt[];
Class_Descriptor cd_S4952C3_nt = {  "S4952C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4952C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4952C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4952C3_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  S4952C8_nt  {
  __tsi64 s4952c8f0[4];
  void  mf4952c8(); // _ZN10S4952C8_nt8mf4952c8Ev
};
//SIG(-1 S4952C8_nt) C1{ m FL[4]}


void  S4952C8_nt ::mf4952c8(){}

//skip512 S4952C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4952C2  : S4952C3_nt {
  ::S2014C25 s4952c2f0;
  ::S4952C8_nt s4952c2f1;
  virtual  ~S4952C2(); // _ZN7S4952C2D1Ev
  virtual void  v19(); // _ZN7S4952C23v19Ev
  virtual void  v20(); // _ZN7S4952C23v20Ev
  virtual void  v21(); // _ZN7S4952C23v21Ev
  virtual void  v22(); // _ZN7S4952C23v22Ev
  virtual void  v23(); // _ZN7S4952C23v23Ev
  virtual void  v24(); // _ZN7S4952C23v24Ev
  virtual void  v25(); // _ZN7S4952C23v25Ev
  virtual void  v26(); // _ZN7S4952C23v26Ev
  virtual void  v27(); // _ZN7S4952C23v27Ev
  virtual void  v28(); // _ZN7S4952C23v28Ev
  virtual void  v29(); // _ZN7S4952C23v29Ev
  virtual void  v30(); // _ZN7S4952C23v30Ev
  virtual void  v31(); // _ZN7S4952C23v31Ev
  virtual void  v32(); // _ZN7S4952C23v32Ev
  virtual void  v33(); // _ZN7S4952C23v33Ev
  S4952C2(); // tgen
};
//SIG(-1 S4952C2) C1{ BC2{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}} FC7{ m FL[4]}}


 S4952C2 ::~S4952C2(){ note_dtor("S4952C2", this);}
void  S4952C2 ::v19(){vfunc_called(this, "_ZN7S4952C23v19Ev");}
void  S4952C2 ::v20(){vfunc_called(this, "_ZN7S4952C23v20Ev");}
void  S4952C2 ::v21(){vfunc_called(this, "_ZN7S4952C23v21Ev");}
void  S4952C2 ::v22(){vfunc_called(this, "_ZN7S4952C23v22Ev");}
void  S4952C2 ::v23(){vfunc_called(this, "_ZN7S4952C23v23Ev");}
void  S4952C2 ::v24(){vfunc_called(this, "_ZN7S4952C23v24Ev");}
void  S4952C2 ::v25(){vfunc_called(this, "_ZN7S4952C23v25Ev");}
void  S4952C2 ::v26(){vfunc_called(this, "_ZN7S4952C23v26Ev");}
void  S4952C2 ::v27(){vfunc_called(this, "_ZN7S4952C23v27Ev");}
void  S4952C2 ::v28(){vfunc_called(this, "_ZN7S4952C23v28Ev");}
void  S4952C2 ::v29(){vfunc_called(this, "_ZN7S4952C23v29Ev");}
void  S4952C2 ::v30(){vfunc_called(this, "_ZN7S4952C23v30Ev");}
void  S4952C2 ::v31(){vfunc_called(this, "_ZN7S4952C23v31Ev");}
void  S4952C2 ::v32(){vfunc_called(this, "_ZN7S4952C23v32Ev");}
void  S4952C2 ::v33(){vfunc_called(this, "_ZN7S4952C23v33Ev");}
S4952C2 ::S4952C2(){ note_ctor("S4952C2", this);} // tgen

static void Test_S4952C2()
{
  extern Class_Descriptor cd_S4952C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S4952C2, buf);
    S4952C2 *dp, &lv = *(dp=new (buf) S4952C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S4952C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4952C2)");
    check_base_class_offset(lv, (S4952C3_nt*), 0, "S4952C2");
    check_field_offset(lv, s4952c2f0, ABISELECT(8,4), "S4952C2.s4952c2f0");
    check_field_offset(lv, s4952c2f1, ABISELECT(24,16), "S4952C2.s4952c2f1");
    test_class_info(&lv, &cd_S4952C2);
    dp->~S4952C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4952C2(Test_S4952C2, "S4952C2", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S4952C2C1Ev();
extern void _ZN7S4952C2D1Ev();
Name_Map name_map_S4952C2[] = {
  NSPAIR(_ZN7S4952C2C1Ev),
  NSPAIR(_ZN7S4952C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4952C3_nt;
extern VTBL_ENTRY _ZTI10S4952C3_nt[];
extern  VTBL_ENTRY _ZTV10S4952C3_nt[];
static Base_Class bases_S4952C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4952C3_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 _ZTI7S4952C2[];
extern void _ZN7S4952C2D1Ev();
extern void _ZN7S4952C2D0Ev();
extern void _ZN10S4952C3_nt2v3Ev();
extern void _ZN10S4952C3_nt2v4Ev();
extern void _ZN10S4952C3_nt2v5Ev();
extern void _ZN10S4952C3_nt2v6Ev();
extern void _ZN10S4952C3_nt2v7Ev();
extern void _ZN10S4952C3_nt2v8Ev();
extern void _ZN10S4952C3_nt2v9Ev();
extern void _ZN10S4952C3_nt3v10Ev();
extern void _ZN10S4952C3_nt3v11Ev();
extern void _ZN10S4952C3_nt3v12Ev();
extern void _ZN10S4952C3_nt3v13Ev();
extern void _ZN10S4952C3_nt3v14Ev();
extern void _ZN10S4952C3_nt3v15Ev();
extern void _ZN10S4952C3_nt3v16Ev();
extern void _ZN10S4952C3_nt3v17Ev();
extern void _ZN10S4952C3_nt3v18Ev();
extern void _ZN7S4952C23v19Ev();
extern void _ZN7S4952C23v20Ev();
extern void _ZN7S4952C23v21Ev();
extern void _ZN7S4952C23v22Ev();
extern void _ZN7S4952C23v23Ev();
extern void _ZN7S4952C23v24Ev();
extern void _ZN7S4952C23v25Ev();
extern void _ZN7S4952C23v26Ev();
extern void _ZN7S4952C23v27Ev();
extern void _ZN7S4952C23v28Ev();
extern void _ZN7S4952C23v29Ev();
extern void _ZN7S4952C23v30Ev();
extern void _ZN7S4952C23v31Ev();
extern void _ZN7S4952C23v32Ev();
extern void _ZN7S4952C23v33Ev();
static  VTBL_ENTRY vtc_S4952C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4952C2[0]),
  (VTBL_ENTRY)&_ZN7S4952C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4952C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v33Ev,
};
extern VTBL_ENTRY _ZTI7S4952C2[];
extern  VTBL_ENTRY _ZTV7S4952C2[];
Class_Descriptor cd_S4952C2 = {  "S4952C2", // class name
  bases_S4952C2, 1,
  &(vtc_S4952C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S4952C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4952C2),35, //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  S4952C1  : S4952C2 {
  virtual  ~S4952C1(); // _ZN7S4952C1D1Ev
  virtual void  v1(); // _ZN7S4952C12v1Ev
  virtual void  v2(); // _ZN7S4952C12v2Ev
  S4952C1(); // tgen
};
//SIG(1 S4952C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} FC8{ m FL[4]}} vd v1 v2}


 S4952C1 ::~S4952C1(){ note_dtor("S4952C1", this);}
void  S4952C1 ::v1(){vfunc_called(this, "_ZN7S4952C12v1Ev");}
void  S4952C1 ::v2(){vfunc_called(this, "_ZN7S4952C12v2Ev");}
S4952C1 ::S4952C1(){ note_ctor("S4952C1", this);} // tgen

static void Test_S4952C1()
{
  extern Class_Descriptor cd_S4952C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S4952C1, buf);
    S4952C1 *dp, &lv = *(dp=new (buf) S4952C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S4952C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4952C1)");
    check_base_class_offset(lv, (S4952C3_nt*)(S4952C2*), 0, "S4952C1");
    check_base_class_offset(lv, (S4952C2*), 0, "S4952C1");
    test_class_info(&lv, &cd_S4952C1);
    dp->~S4952C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4952C1(Test_S4952C1, "S4952C1", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S4952C1C1Ev();
extern void _ZN7S4952C1D1Ev();
Name_Map name_map_S4952C1[] = {
  NSPAIR(_ZN7S4952C1C1Ev),
  NSPAIR(_ZN7S4952C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4952C3_nt;
extern VTBL_ENTRY _ZTI10S4952C3_nt[];
extern  VTBL_ENTRY _ZTV10S4952C3_nt[];
extern Class_Descriptor cd_S4952C2;
extern VTBL_ENTRY _ZTI7S4952C2[];
extern  VTBL_ENTRY _ZTV7S4952C2[];
static Base_Class bases_S4952C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4952C3_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_S4952C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S4952C1[];
extern void _ZN7S4952C1D1Ev();
extern void _ZN7S4952C1D0Ev();
extern void _ZN10S4952C3_nt2v3Ev();
extern void _ZN10S4952C3_nt2v4Ev();
extern void _ZN10S4952C3_nt2v5Ev();
extern void _ZN10S4952C3_nt2v6Ev();
extern void _ZN10S4952C3_nt2v7Ev();
extern void _ZN10S4952C3_nt2v8Ev();
extern void _ZN10S4952C3_nt2v9Ev();
extern void _ZN10S4952C3_nt3v10Ev();
extern void _ZN10S4952C3_nt3v11Ev();
extern void _ZN10S4952C3_nt3v12Ev();
extern void _ZN10S4952C3_nt3v13Ev();
extern void _ZN10S4952C3_nt3v14Ev();
extern void _ZN10S4952C3_nt3v15Ev();
extern void _ZN10S4952C3_nt3v16Ev();
extern void _ZN10S4952C3_nt3v17Ev();
extern void _ZN10S4952C3_nt3v18Ev();
extern void _ZN7S4952C23v19Ev();
extern void _ZN7S4952C23v20Ev();
extern void _ZN7S4952C23v21Ev();
extern void _ZN7S4952C23v22Ev();
extern void _ZN7S4952C23v23Ev();
extern void _ZN7S4952C23v24Ev();
extern void _ZN7S4952C23v25Ev();
extern void _ZN7S4952C23v26Ev();
extern void _ZN7S4952C23v27Ev();
extern void _ZN7S4952C23v28Ev();
extern void _ZN7S4952C23v29Ev();
extern void _ZN7S4952C23v30Ev();
extern void _ZN7S4952C23v31Ev();
extern void _ZN7S4952C23v32Ev();
extern void _ZN7S4952C23v33Ev();
extern void _ZN7S4952C12v1Ev();
extern void _ZN7S4952C12v2Ev();
static  VTBL_ENTRY vtc_S4952C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4952C1[0]),
  (VTBL_ENTRY)&_ZN7S4952C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4952C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4952C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v23Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v27Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v28Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v29Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v30Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v31Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v32Ev,
  (VTBL_ENTRY)&_ZN7S4952C23v33Ev,
  (VTBL_ENTRY)&_ZN7S4952C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4952C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4952C1[];
extern  VTBL_ENTRY _ZTV7S4952C1[];
Class_Descriptor cd_S4952C1 = {  "S4952C1", // class name
  bases_S4952C1, 2,
  &(vtc_S4952C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S4952C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4952C1),37, //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  S15026C2  {
  unsigned char s15026c2f0:1;
  unsigned char s15026c2f1:1;
  unsigned char s15026c2f2:1;
  unsigned char s15026c2f3:1;
  unsigned char s15026c2f4:1;
  unsigned char s15026c2f5:1;
  unsigned char s15026c2f6:1;
  unsigned char s15026c2f7:1;
};
//SIG(-1 S15026C2) C1{ Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_S15026C2()
{
  {
    init_simple_test("S15026C2");
    static S15026C2 lv;
    check2(sizeof(lv), 1, "sizeof(S15026C2)");
    check2(__alignof__(lv), 1, "__alignof__(S15026C2)");
    set_bf_and_test(lv, s15026c2f0, 0, 0, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f1, 0, 1, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f2, 0, 2, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f3, 0, 3, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f4, 0, 4, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f5, 0, 5, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f6, 0, 6, 1, 1, "S15026C2");
    set_bf_and_test(lv, s15026c2f7, 0, 7, 1, 1, "S15026C2");
  }
}
static Arrange_To_Call_Me vS15026C2(Test_S15026C2, "S15026C2", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15026C8  {
  int s15026c8f0[4];
  __tsi64 s15026c8f1[2];
};
//SIG(-1 S15026C8) C1{ Fi[4] FL[2]}



static void Test_S15026C8()
{
  {
    init_simple_test("S15026C8");
    S15026C8 lv;
    check2(sizeof(lv), 32, "sizeof(S15026C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15026C8)");
    check_field_offset(lv, s15026c8f0, 0, "S15026C8.s15026c8f0");
    check_field_offset(lv, s15026c8f1, 16, "S15026C8.s15026c8f1");
  }
}
static Arrange_To_Call_Me vS15026C8(Test_S15026C8, "S15026C8", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15026C3  {
  char s15026c3f0[32];
  unsigned char s15026c3f1:1;
  unsigned char s15026c3f2:1;
  unsigned char s15026c3f3:1;
  unsigned char s15026c3f4:1;
  unsigned char s15026c3f5:1;
  unsigned char s15026c3f6:1;
  unsigned char s15026c3f7:1;
  char s15026c3f8[33];
  int s15026c3f9[2];
  ::S2014C37 s15026c3f10;
  ::S2014C29_nt s15026c3f11;
  char s15026c3f12[8];
  ::S15026C8 s15026c3f13;
  void *s15026c3f14;
  void  mf15026c3(); // _ZN8S15026C39mf15026c3Ev
};
//SIG(-1 S15026C3) C1{ m Fc[32] Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc[33] Fi[2] FC2{ m Fp Fi[2] FC3{ m}} FC4{ m Fp Fi[2] FC5{ m}} Fc[8] FC6{ Fi[4] FL[2]} Fp}


void  S15026C3 ::mf15026c3(){}

static void Test_S15026C3()
{
  {
    init_simple_test("S15026C3");
    static S15026C3 lv;
    check2(sizeof(lv), ABISELECT(176,152), "sizeof(S15026C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15026C3)");
    check_field_offset(lv, s15026c3f0, 0, "S15026C3.s15026c3f0");
    set_bf_and_test(lv, s15026c3f1, 32, 0, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f2, 32, 1, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f3, 32, 2, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f4, 32, 3, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f5, 32, 4, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f6, 32, 5, 1, 1, "S15026C3");
    set_bf_and_test(lv, s15026c3f7, 32, 6, 1, 1, "S15026C3");
    check_field_offset(lv, s15026c3f8, 33, "S15026C3.s15026c3f8");
    check_field_offset(lv, s15026c3f9, 68, "S15026C3.s15026c3f9");
    check_field_offset(lv, s15026c3f10, ABISELECT(80,76), "S15026C3.s15026c3f10");
    check_field_offset(lv, s15026c3f11, ABISELECT(104,92), "S15026C3.s15026c3f11");
    check_field_offset(lv, s15026c3f12, ABISELECT(128,108), "S15026C3.s15026c3f12");
    check_field_offset(lv, s15026c3f13, ABISELECT(136,116), "S15026C3.s15026c3f13");
    check_field_offset(lv, s15026c3f14, ABISELECT(168,148), "S15026C3.s15026c3f14");
  }
}
static Arrange_To_Call_Me vS15026C3(Test_S15026C3, "S15026C3", ABISELECT(176,152));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15026C1  {
  char s15026c1f0;
  ::S15026C2 s15026c1f1;
  ::S15026C3 s15026c1f2;
  void  mf15026c1(); // _ZN8S15026C19mf15026c1Ev
};
//SIG(1 S15026C1) C1{ m Fc FC2{ Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1} FC3{ m Fc[32] Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc[33] Fi[2] FC4{ m Fp Fi[2] FC5{ m}} FC6{ m Fp Fi[2] FC7{ m}} Fc[8] FC8{ Fi[4] FL[2]} Fp}}


void  S15026C1 ::mf15026c1(){}

static void Test_S15026C1()
{
  {
    init_simple_test("S15026C1");
    static S15026C1 lv;
    check2(sizeof(lv), ABISELECT(184,156), "sizeof(S15026C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15026C1)");
    check_field_offset(lv, s15026c1f0, 0, "S15026C1.s15026c1f0");
    check_field_offset(lv, s15026c1f1, 1, "S15026C1.s15026c1f1");
    check_field_offset(lv, s15026c1f2, ABISELECT(8,4), "S15026C1.s15026c1f2");
  }
}
static Arrange_To_Call_Me vS15026C1(Test_S15026C1, "S15026C1", ABISELECT(184,156));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C2_nt  {
  int s8710c2f0;
  char s8710c2f1[3];
  virtual  ~S8710C2_nt(); // _ZN10S8710C2_ntD1Ev
  virtual void  v2(); // _ZN10S8710C2_nt2v2Ev
  S8710C2_nt(); // tgen
};
//SIG(-1 S8710C2_nt) C1{ vd v1 Fi Fc[3]}


 S8710C2_nt ::~S8710C2_nt(){ note_dtor("S8710C2_nt", this);}
void  S8710C2_nt ::v2(){vfunc_called(this, "_ZN10S8710C2_nt2v2Ev");}
S8710C2_nt ::S8710C2_nt(){ note_ctor("S8710C2_nt", this);} // tgen

//skip512 S8710C2_nt

#else // __cplusplus

extern void _ZN10S8710C2_ntC1Ev();
extern void _ZN10S8710C2_ntD1Ev();
Name_Map name_map_S8710C2_nt[] = {
  NSPAIR(_ZN10S8710C2_ntC1Ev),
  NSPAIR(_ZN10S8710C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8710C2_nt[];
extern void _ZN10S8710C2_ntD1Ev();
extern void _ZN10S8710C2_ntD0Ev();
extern void _ZN10S8710C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S8710C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8710C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8710C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8710C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8710C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S8710C2_nt[];
VTBL_ENTRY *P__ZTI10S8710C2_nt = _ZTI10S8710C2_nt; 
extern  VTBL_ENTRY _ZTV10S8710C2_nt[];
Class_Descriptor cd_S8710C2_nt = {  "S8710C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8710C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S8710C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8710C2_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  S8710C3_nt  {
  ::S2014C26 s8710c3f0;
  void  mf8710c3(); // _ZN10S8710C3_nt8mf8710c3Ev
};
//SIG(-1 S8710C3_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S8710C3_nt ::mf8710c3(){}

//skip512 S8710C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C7  {
  int s8710c7f0[14];
  char s8710c7f1;
};
//SIG(-1 S8710C7) C1{ Fi[14] Fc}



static void Test_S8710C7()
{
  {
    init_simple_test("S8710C7");
    S8710C7 lv;
    check2(sizeof(lv), 60, "sizeof(S8710C7)");
    check2(__alignof__(lv), 4, "__alignof__(S8710C7)");
    check_field_offset(lv, s8710c7f0, 0, "S8710C7.s8710c7f0");
    check_field_offset(lv, s8710c7f1, 56, "S8710C7.s8710c7f1");
  }
}
static Arrange_To_Call_Me vS8710C7(Test_S8710C7, "S8710C7", 60);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C9_nt  {
  __tsi64 s8710c9f0[4];
};
//SIG(-1 S8710C9_nt) C1{ FL[4]}



//skip512 S8710C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C8_nt  {
  ::S8710C9_nt s8710c8f0;
  void  mf8710c8(); // _ZN10S8710C8_nt8mf8710c8Ev
};
//SIG(-1 S8710C8_nt) C1{ m FC2{ FL[4]}}


void  S8710C8_nt ::mf8710c8(){}

//skip512 S8710C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C12_nt  {
  int s8710c12f0[4];
};
//SIG(-1 S8710C12_nt) C1{ Fi[4]}



//skip512 S8710C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C11_nt  {
  void *s8710c11f0;
  ::S8710C12_nt s8710c11f1;
  void  mf8710c11(); // _ZN11S8710C11_nt9mf8710c11Ev
};
//SIG(-1 S8710C11_nt) C1{ m Fp FC2{ Fi[4]}}


void  S8710C11_nt ::mf8710c11(){}

//skip512 S8710C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C14_nt  {
  int s8710c14f0;
  void *s8710c14f1;
  int s8710c14f2;
};
//SIG(-1 S8710C14_nt) C1{ Fi Fp Fi}



//skip512 S8710C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C13  {
  ::S8710C8_nt s8710c13f0;
  ::S8710C11_nt s8710c13f1;
  void *s8710c13f2;
  ::S8710C14_nt s8710c13f3;
  void  mf8710c13(); // _ZN8S8710C139mf8710c13Ev
};
//SIG(-1 S8710C13) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m Fp FC5{ Fi[4]}} Fp FC6{ Fi Fp Fi}}


void  S8710C13 ::mf8710c13(){}

static void Test_S8710C13()
{
  {
    init_simple_test("S8710C13");
    S8710C13 lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S8710C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8710C13)");
    check_field_offset(lv, s8710c13f0, 0, "S8710C13.s8710c13f0");
    check_field_offset(lv, s8710c13f1, 32, "S8710C13.s8710c13f1");
    check_field_offset(lv, s8710c13f2, ABISELECT(56,52), "S8710C13.s8710c13f2");
    check_field_offset(lv, s8710c13f3, ABISELECT(64,56), "S8710C13.s8710c13f3");
  }
}
static Arrange_To_Call_Me vS8710C13(Test_S8710C13, "S8710C13", ABISELECT(88,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8710C1  : S8710C2_nt {
  char s8710c1f0;
  void *s8710c1f1;
  ::S8710C3_nt s8710c1f2;
  int s8710c1f3[4];
  ::S8710C7 s8710c1f4;
  void *s8710c1f5;
  ::S8710C8_nt s8710c1f6;
  ::S8710C8_nt s8710c1f7;
  ::S8710C11_nt s8710c1f8;
  char s8710c1f9;
  ::S8710C13 s8710c1f10;
  void *s8710c1f11;
  virtual  ~S8710C1(); // _ZN7S8710C1D1Ev
  virtual void  v1(); // _ZN7S8710C12v1Ev
  S8710C1(); // tgen
};
//SIG(1 S8710C1) C1{ BC2{ vd v2 Fi Fc[3]} vd v1 Fc Fp FC3{ m FC4{ m Fp Fi FC5{ m} FC6{ m}}} Fi[4] FC7{ Fi[14] Fc} Fp FC8{ m FC9{ FL[4]}} FC8 FC10{ m Fp FC11{ Fi[4]}} Fc FC12{ m FC8 FC10 Fp FC13{ Fi Fp Fi}} Fp}


 S8710C1 ::~S8710C1(){ note_dtor("S8710C1", this);}
void  S8710C1 ::v1(){vfunc_called(this, "_ZN7S8710C12v1Ev");}
S8710C1 ::S8710C1(){ note_ctor("S8710C1", this);} // tgen

static void Test_S8710C1()
{
  extern Class_Descriptor cd_S8710C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,68)];
    init_test(&cd_S8710C1, buf);
    S8710C1 *dp, &lv = *(dp=new (buf) S8710C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,268), "sizeof(S8710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8710C1)");
    check_base_class_offset(lv, (S8710C2_nt*), 0, "S8710C1");
    check_field_offset(lv, s8710c1f0, ABISELECT(15,11), "S8710C1.s8710c1f0");
    check_field_offset(lv, s8710c1f1, ABISELECT(16,12), "S8710C1.s8710c1f1");
    check_field_offset(lv, s8710c1f2, ABISELECT(24,16), "S8710C1.s8710c1f2");
    check_field_offset(lv, s8710c1f3, ABISELECT(40,28), "S8710C1.s8710c1f3");
    check_field_offset(lv, s8710c1f4, ABISELECT(56,44), "S8710C1.s8710c1f4");
    check_field_offset(lv, s8710c1f5, ABISELECT(120,104), "S8710C1.s8710c1f5");
    check_field_offset(lv, s8710c1f6, ABISELECT(128,108), "S8710C1.s8710c1f6");
    check_field_offset(lv, s8710c1f7, ABISELECT(160,140), "S8710C1.s8710c1f7");
    check_field_offset(lv, s8710c1f8, ABISELECT(192,172), "S8710C1.s8710c1f8");
    check_field_offset(lv, s8710c1f9, ABISELECT(216,192), "S8710C1.s8710c1f9");
    check_field_offset(lv, s8710c1f10, ABISELECT(224,196), "S8710C1.s8710c1f10");
    check_field_offset(lv, s8710c1f11, ABISELECT(312,264), "S8710C1.s8710c1f11");
    test_class_info(&lv, &cd_S8710C1);
    dp->~S8710C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8710C1(Test_S8710C1, "S8710C1", ABISELECT(320,268));

#else // __cplusplus

extern void _ZN7S8710C1C1Ev();
extern void _ZN7S8710C1D1Ev();
Name_Map name_map_S8710C1[] = {
  NSPAIR(_ZN7S8710C1C1Ev),
  NSPAIR(_ZN7S8710C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8710C2_nt;
extern VTBL_ENTRY _ZTI10S8710C2_nt[];
extern  VTBL_ENTRY _ZTV10S8710C2_nt[];
static Base_Class bases_S8710C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8710C2_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 _ZTI7S8710C1[];
extern void _ZN7S8710C1D1Ev();
extern void _ZN7S8710C1D0Ev();
extern void _ZN10S8710C2_nt2v2Ev();
extern void _ZN7S8710C12v1Ev();
static  VTBL_ENTRY vtc_S8710C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8710C1[0]),
  (VTBL_ENTRY)&_ZN7S8710C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8710C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8710C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S8710C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8710C1[];
extern  VTBL_ENTRY _ZTV7S8710C1[];
Class_Descriptor cd_S8710C1 = {  "S8710C1", // class name
  bases_S8710C1, 1,
  &(vtc_S8710C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,268), // object size
  NSPAIRA(_ZTI7S8710C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8710C1),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  S19037C5_nt  : virtual S2014C28 , virtual S2014C38 {
  int s19037c5f0[9];
  ~S19037C5_nt(); // tgen
  S19037C5_nt(); // tgen
};
//SIG(-1 S19037C5_nt) C1{ VBC2{ m} VBC3{ m} Fi[9]}


S19037C5_nt ::~S19037C5_nt(){ note_dtor("S19037C5_nt", this);} // tgen
S19037C5_nt ::S19037C5_nt(){ note_ctor("S19037C5_nt", this);} // tgen

//skip512 S19037C5_nt

#else // __cplusplus

extern void _ZN11S19037C5_ntC1Ev();
extern void _ZN11S19037C5_ntD1Ev();
Name_Map name_map_S19037C5_nt[] = {
  NSPAIR(_ZN11S19037C5_ntC1Ev),
  NSPAIR(_ZN11S19037C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S19037C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI11S19037C5_nt[];
static  VTBL_ENTRY vtc_S19037C5_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19037C5_nt[];
static  VTT_ENTRY vtt_S19037C5_nt[] = {
  {&(_ZTV11S19037C5_nt[4]),  4,4},
};
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
VTBL_ENTRY *P__ZTI11S19037C5_nt = _ZTI11S19037C5_nt; 
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
Class_Descriptor cd_S19037C5_nt = {  "S19037C5_nt", // class name
  bases_S19037C5_nt, 2,
  &(vtc_S19037C5_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C5_nt[0]), // expected_vtt_contents
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI11S19037C5_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV11S19037C5_nt),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19037C5_nt),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  S19037C7_nt  : virtual S2014C28 , virtual S2014C38 , virtual S19037C5_nt {
  void *s19037c7f0;
  virtual  ~S19037C7_nt(); // _ZN11S19037C7_ntD2Ev
  S19037C7_nt(); // tgen
};
//SIG(-1 S19037C7_nt) C1{ VBC2{ m} VBC3{ m} VBC4{ VBC2 VBC3 Fi[9]} vd Fp}


 S19037C7_nt ::~S19037C7_nt(){ note_dtor("S19037C7_nt", this);}
S19037C7_nt ::S19037C7_nt(){ note_ctor("S19037C7_nt", this);} // tgen

//skip512 S19037C7_nt

#else // __cplusplus

extern void _ZN11S19037C7_ntC1Ev();
extern void _ZN11S19037C7_ntD2Ev();
Name_Map name_map_S19037C7_nt[] = {
  NSPAIR(_ZN11S19037C7_ntC1Ev),
  NSPAIR(_ZN11S19037C7_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
static Base_Class bases_S19037C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19037C5_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //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 _ZTI11S19037C7_nt[];
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY vtc_S19037C7_nt[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19037C7_nt[];
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
static  VTT_ENTRY vtt_S19037C7_nt[] = {
  {&(_ZTV11S19037C7_nt[5]),  5,11},
  {&(_ZTV11S19037C7_nt[11]),  11,11},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt[4]),  4,4},
};
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
VTBL_ENTRY *P__ZTI11S19037C7_nt = _ZTI11S19037C7_nt; 
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
Class_Descriptor cd_S19037C7_nt = {  "S19037C7_nt", // class name
  bases_S19037C7_nt, 3,
  &(vtc_S19037C7_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C7_nt[0]), // expected_vtt_contents
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI11S19037C7_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S19037C7_nt),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19037C7_nt),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  S19037C8_nt  : virtual S2014C38 , S2014C28 , S19037C7_nt , virtual S2014C24 {
  virtual  ~S19037C8_nt(); // _ZN11S19037C8_ntD2Ev
  S19037C8_nt(); // tgen
};
//SIG(-1 S19037C8_nt) C1{ VBC2{ m} BC3{ m} BC4{ VBC3 VBC2 VBC5{ VBC3 VBC2 Fi[9]} vd Fp} VBC6{ m} vd}


 S19037C8_nt ::~S19037C8_nt(){ note_dtor("S19037C8_nt", this);}
S19037C8_nt ::S19037C8_nt(){ note_ctor("S19037C8_nt", this);} // tgen

//skip512 S19037C8_nt

#else // __cplusplus

extern void _ZN11S19037C8_ntC1Ev();
extern void _ZN11S19037C8_ntD2Ev();
Name_Map name_map_S19037C8_nt[] = {
  NSPAIR(_ZN11S19037C8_ntC1Ev),
  NSPAIR(_ZN11S19037C8_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
static Base_Class bases_S19037C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    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
    3, //immediately_derived
  0, 1},
  {&cd_S19037C5_nt,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19037C7_nt,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI11S19037C8_nt[];
extern void _ZN11S19037C8_ntD1Ev();
extern void _ZN11S19037C8_ntD0Ev();
static  VTBL_ENTRY vtc_S19037C8_nt[] = {
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C8_ntD0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
};
extern VTBL_ENTRY _ZTV11S19037C8_nt[];
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt__11S19037C8_nt[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt__11S19037C8_nt[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C8_nt[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
static  VTT_ENTRY vtt_S19037C8_nt[] = {
  {&(_ZTV11S19037C8_nt[6]),  6,12},
  {&(_tg__ZTV11S19037C7_nt__11S19037C8_nt[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt__11S19037C8_nt[4]),  4,4},
  {&(_ZTV11S19037C8_nt[12]),  12,12},
  {&(_tg__ZTV11S19037C5_nt__11S19037C8_nt[4]),  4,4},
};
extern VTBL_ENTRY _ZTI11S19037C8_nt[];
VTBL_ENTRY *P__ZTI11S19037C8_nt = _ZTI11S19037C8_nt; 
extern  VTBL_ENTRY _ZTV11S19037C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C8_nt[];
Class_Descriptor cd_S19037C8_nt = {  "S19037C8_nt", // class name
  bases_S19037C8_nt, 6,
  &(vtc_S19037C8_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C8_nt[0]), // expected_vtt_contents
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI11S19037C8_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S19037C8_nt),12, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19037C8_nt),5, //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  S19037C3_nt  : S2014C38 , virtual S19037C5_nt , S19037C7_nt , S2014C28 , virtual S19037C8_nt {
  virtual  ~S19037C3_nt(); // _ZN11S19037C3_ntD2Ev
  S19037C3_nt(); // tgen
};
//SIG(-1 S19037C3_nt) C1{ BC2{ m} VBC3{ VBC4{ m} VBC2 Fi[9]} BC5{ VBC4 VBC2 VBC3 vd Fp} BC4 VBC6{ VBC2 BC4 BC5 VBC7{ m} vd} vd}


 S19037C3_nt ::~S19037C3_nt(){ note_dtor("S19037C3_nt", this);}
S19037C3_nt ::S19037C3_nt(){ note_ctor("S19037C3_nt", this);} // tgen

//skip512 S19037C3_nt

#else // __cplusplus

extern void _ZN11S19037C3_ntC1Ev();
extern void _ZN11S19037C3_ntD2Ev();
Name_Map name_map_S19037C3_nt[] = {
  NSPAIR(_ZN11S19037C3_ntC1Ev),
  NSPAIR(_ZN11S19037C3_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19037C8_nt;
extern VTBL_ENTRY _ZTI11S19037C8_nt[];
extern  VTBL_ENTRY _ZTV11S19037C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C8_nt[];
static Base_Class bases_S19037C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    ABISELECT(60,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, 1},
  {&cd_S2014C38,    ABISELECT(60,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, 1},
  {&cd_S19037C5_nt,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19037C7_nt,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    ABISELECT(64,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
    9, //immediately_derived
  0, 0},
  {&cd_S19037C7_nt,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19037C8_nt,    ABISELECT(64,52), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S19037C3_nt[];
extern void _ZN11S19037C3_ntD1Ev();
extern void _ZN11S19037C3_ntD0Ev();
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev)();
extern void ABISELECT(_ZThn64_N11S19037C3_ntD1Ev,_ZThn52_N11S19037C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev)();
extern void ABISELECT(_ZThn64_N11S19037C3_ntD0Ev,_ZThn52_N11S19037C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19037C3_nt[] = {
  0,
  ABISELECT(64,52),
  ABISELECT(16,8),
  ABISELECT(60,48),
  ABISELECT(60,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C3_ntD0Ev,
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  ABISELECT(-64,-52),
  ABISELECT(-64,-52),
  ABISELECT(-48,-44),
  -4,
  -4,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev),
};
extern VTBL_ENTRY _ZTV11S19037C3_nt[];
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt__11S19037C3_nt[] = {
  ABISELECT(16,8),
  ABISELECT(60,48),
  ABISELECT(60,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt__11S19037C3_nt[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C3_nt[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
extern void _ZN11S19037C8_ntD1Ev();
extern void _ZN11S19037C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__11S19037C3_nt[] = {
  ABISELECT(-64,-52),
  ABISELECT(-48,-44),
  -4,
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C8_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C8_nt__A1__11S19037C3_nt[] = {
  ABISELECT(-48,-44),
  -4,
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__11S19037C3_nt[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C8_nt__11S19037C3_nt[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
};
static  VTT_ENTRY vtt_S19037C3_nt[] = {
  {&(_ZTV11S19037C3_nt[7]),  7,22},
  {&(_tg__ZTV11S19037C7_nt__11S19037C3_nt[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt__11S19037C3_nt[4]),  4,4},
  {&(_ZTV11S19037C3_nt[13]),  13,22},
  {&(_ZTV11S19037C3_nt[20]),  20,22},
  {&(_tg__ZTV11S19037C5_nt__11S19037C3_nt[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__11S19037C3_nt[6]),  6,8},
  {&(_tg__ZTV11S19037C7_nt11S19037C8_nt__A1__11S19037C3_nt[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__11S19037C3_nt[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C8_nt__11S19037C3_nt[4]),  4,4},
};
extern VTBL_ENTRY _ZTI11S19037C3_nt[];
VTBL_ENTRY *P__ZTI11S19037C3_nt = _ZTI11S19037C3_nt; 
extern  VTBL_ENTRY _ZTV11S19037C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C3_nt[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N11S19037C3_ntD0Ev,_ZThn52_N11S19037C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N11S19037C3_ntD1Ev,_ZThn52_N11S19037C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19037C3_nt = {  "S19037C3_nt", // class name
  bases_S19037C3_nt, 10,
  &(vtc_S19037C3_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C3_nt[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI11S19037C3_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S19037C3_nt),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S19037C3_nt),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19037C2  : S19037C3_nt , S2014C24 {
  long double s19037c2f0;
  virtual  ~S19037C2(); // _ZN8S19037C2D2Ev
  S19037C2(); // tgen
};
//SIG(-1 S19037C2) C1{ BC2{ BC3{ m} VBC4{ VBC5{ m} VBC3 Fi[9]} BC6{ VBC5 VBC3 VBC4 vd Fp} BC5 VBC7{ VBC3 BC5 BC6 VBC8{ m} vd} vd} BC8 vd FD}


 S19037C2 ::~S19037C2(){ note_dtor("S19037C2", this);}
S19037C2 ::S19037C2(){ note_ctor("S19037C2", this);} // tgen

static void Test_S19037C2()
{
  extern Class_Descriptor cd_S19037C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,20)];
    init_test(&cd_S19037C2, buf);
    S19037C2 *dp, &lv = *(dp=new (buf) S19037C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S19037C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19037C2)");
    /*is_ambiguous_... S19037C3_nt::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C3_nt*), 0, "S19037C2");
    check_base_class_offset(lv, (S2014C28*)(S19037C5_nt*), ABISELECT(76,60), "S19037C2");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C7_nt*)(S19037C3_nt*), ABISELECT(76,60), "S19037C2");
    check_base_class_offset(lv, (S2014C28*)(S19037C7_nt*)(S19037C8_nt*), ABISELECT(76,60), "S19037C2");
    check_base_class_offset(lv, (S2014C38*)(S19037C5_nt*), ABISELECT(76,60), "S19037C2");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C7_nt*)(S19037C3_nt*), ABISELECT(76,60), "S19037C2");
    check_base_class_offset(lv, (S2014C38*)(S19037C8_nt*), ABISELECT(76,60), "S19037C2");
    check_base_class_offset(lv, (S2014C38*)(S19037C7_nt*)(S19037C8_nt*), ABISELECT(76,60), "S19037C2");
    check_base_class_offset(lv, (S19037C5_nt*)(S19037C3_nt*), ABISELECT(32,20), "S19037C2");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S19037C5_nt*)(S19037C7_nt*)(S19037C3_nt*), ABISELECT(32,20), "S19037C2");
    check_base_class_offset(lv, (S19037C5_nt*)(S19037C7_nt*)(S19037C8_nt*), ABISELECT(32,20), "S19037C2");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S19037C7_nt*)(S19037C3_nt*), 0, "S19037C2");
    /*is_ambiguous_... S19037C3_nt::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C3_nt*), 0, "S19037C2");
    /*is_ambiguous_... S19037C8_nt::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C8_nt*), ABISELECT(80,64), "S19037C2");
    check_base_class_offset(lv, (S19037C7_nt*)(S19037C8_nt*), ABISELECT(80,64), "S19037C2");
    check_base_class_offset(lv, (S2014C24*)(S19037C8_nt*), ABISELECT(96,72), "S19037C2");
    check_base_class_offset(lv, (S19037C8_nt*)(S19037C3_nt*), ABISELECT(80,64), "S19037C2");
    check_base_class_offset(lv, (S19037C3_nt*), 0, "S19037C2");
    /*is_ambiguous_... S19037C2::S2014C24 */ AMB_check_base_class_offset(lv, (S2014C24*), 0, "S19037C2");
    check_field_offset(lv, s19037c2f0, ABISELECT(16,8), "S19037C2.s19037c2f0");
    test_class_info(&lv, &cd_S19037C2);
    dp->~S19037C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19037C2(Test_S19037C2, "S19037C2", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN8S19037C2C1Ev();
extern void _ZN8S19037C2D2Ev();
Name_Map name_map_S19037C2[] = {
  NSPAIR(_ZN8S19037C2C1Ev),
  NSPAIR(_ZN8S19037C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19037C8_nt;
extern VTBL_ENTRY _ZTI11S19037C8_nt[];
extern  VTBL_ENTRY _ZTV11S19037C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C8_nt[];
extern Class_Descriptor cd_S19037C3_nt;
extern VTBL_ENTRY _ZTI11S19037C3_nt[];
extern  VTBL_ENTRY _ZTV11S19037C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C3_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
static Base_Class bases_S19037C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(76,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
    3, //immediately_derived
  0, 1},
  {&cd_S2014C38,    ABISELECT(76,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
    3, //immediately_derived
  0, 1},
  {&cd_S19037C5_nt,    ABISELECT(32,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19037C7_nt,    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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C28,    ABISELECT(80,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
    9, //immediately_derived
  0, 0},
  {&cd_S19037C7_nt,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2014C24,    ABISELECT(96,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
    9, //immediately_derived
  0, 1},
  {&cd_S19037C8_nt,    ABISELECT(80,64), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19037C3_nt,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19037C2[];
extern void _ZN8S19037C2D1Ev();
extern void _ZN8S19037C2D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S19037C2D1Ev,_ZThn64_N8S19037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S19037C2D0Ev,_ZThn64_N8S19037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19037C2[] = {
  ABISELECT(96,72),
  ABISELECT(80,64),
  ABISELECT(32,20),
  ABISELECT(76,60),
  ABISELECT(76,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
  (VTBL_ENTRY)&_ZN8S19037C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19037C2D0Ev,
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
  ABISELECT(-80,-64),
  ABISELECT(16,8),
  ABISELECT(-48,-44),
  -4,
  -4,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19037C2[];
extern void _ZN11S19037C3_ntD1Ev();
extern void _ZN11S19037C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C3_nt__8S19037C2[] = {
  ABISELECT(96,72),
  ABISELECT(80,64),
  ABISELECT(32,20),
  ABISELECT(76,60),
  ABISELECT(76,60),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C3_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C3_nt__8S19037C2[] = {
  ABISELECT(32,20),
  ABISELECT(76,60),
  ABISELECT(76,60),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt__8S19037C2[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C3_nt__8S19037C2[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
};
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev)();
extern void ABISELECT(_ZThn80_N11S19037C3_ntD1Ev,_ZThn64_N11S19037C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev)();
extern void ABISELECT(_ZThn80_N11S19037C3_ntD0Ev,_ZThn64_N11S19037C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__11S19037C3_nt__8S19037C2[] = {
  ABISELECT(-80,-64),
  ABISELECT(16,8),
  ABISELECT(-48,-44),
  -4,
  -4,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__8S19037C2[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
extern void _ZN11S19037C8_ntD1Ev();
extern void _ZN11S19037C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__8S19037C2[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-44),
  -4,
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C8_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C8_nt__A1__8S19037C2[] = {
  ABISELECT(-48,-44),
  -4,
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__8S19037C2[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C8_nt__8S19037C2[] = {
  ABISELECT(44,40),
  ABISELECT(44,40),
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
};
static  VTT_ENTRY vtt_S19037C2[] = {
  {&(_ZTV8S19037C2[7]),  7,22},
  {&(_tg__ZTV11S19037C3_nt__8S19037C2[7]),  7,9},
  {&(_tg__ZTV11S19037C7_nt11S19037C3_nt__8S19037C2[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt__8S19037C2[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C3_nt__8S19037C2[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__11S19037C3_nt__8S19037C2[7]),  7,9},
  {&(_ZTV8S19037C2[13]),  13,22},
  {&(_ZTV8S19037C2[20]),  20,22},
  {&(_tg__ZTV11S19037C5_nt__8S19037C2[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__8S19037C2[6]),  6,8},
  {&(_tg__ZTV11S19037C7_nt11S19037C8_nt__A1__8S19037C2[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__8S19037C2[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C8_nt__8S19037C2[4]),  4,4},
};
extern VTBL_ENTRY _ZTI8S19037C2[];
extern  VTBL_ENTRY _ZTV8S19037C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19037C2[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S19037C3_ntD0Ev,_ZThn64_N11S19037C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S19037C3_ntD1Ev,_ZThn64_N11S19037C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19037C2D0Ev,_ZThn64_N8S19037C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19037C2D1Ev,_ZThn64_N8S19037C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19037C2 = {  "S19037C2", // class name
  bases_S19037C2, 12,
  &(vtc_S19037C2[0]), // expected_vtbl_contents
  &(vtt_S19037C2[0]), // expected_vtt_contents
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI8S19037C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19037C2),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19037C2),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19037C11_nt  : virtual S2014C28 {
  virtual  ~S19037C11_nt(); // _ZN12S19037C11_ntD2Ev
  S19037C11_nt(); // tgen
};
//SIG(-1 S19037C11_nt) C1{ VBC2{ m} vd}


 S19037C11_nt ::~S19037C11_nt(){ note_dtor("S19037C11_nt", this);}
S19037C11_nt ::S19037C11_nt(){ note_ctor("S19037C11_nt", this);} // tgen

//skip512 S19037C11_nt

#else // __cplusplus

extern void _ZN12S19037C11_ntC1Ev();
extern void _ZN12S19037C11_ntD2Ev();
Name_Map name_map_S19037C11_nt[] = {
  NSPAIR(_ZN12S19037C11_ntC1Ev),
  NSPAIR(_ZN12S19037C11_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
static Base_Class bases_S19037C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI12S19037C11_nt[];
extern void _ZN12S19037C11_ntD1Ev();
extern void _ZN12S19037C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19037C11_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19037C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19037C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S19037C11_nt[];
static  VTT_ENTRY vtt_S19037C11_nt[] = {
  {&(_ZTV12S19037C11_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI12S19037C11_nt[];
VTBL_ENTRY *P__ZTI12S19037C11_nt = _ZTI12S19037C11_nt; 
extern  VTBL_ENTRY _ZTV12S19037C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C11_nt[];
Class_Descriptor cd_S19037C11_nt = {  "S19037C11_nt", // class name
  bases_S19037C11_nt, 1,
  &(vtc_S19037C11_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C11_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19037C11_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19037C11_nt),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19037C11_nt),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  S19037C12_nt  : virtual S19037C11_nt {
  ::S2014C24 s19037c12f0;
  virtual  ~S19037C12_nt(); // _ZN12S19037C12_ntD2Ev
  S19037C12_nt(); // tgen
};
//SIG(-1 S19037C12_nt) C1{ VBC2{ VBC3{ m} vd} vd FC4{ m}}


 S19037C12_nt ::~S19037C12_nt(){ note_dtor("S19037C12_nt", this);}
S19037C12_nt ::S19037C12_nt(){ note_ctor("S19037C12_nt", this);} // tgen

//skip512 S19037C12_nt

#else // __cplusplus

extern void _ZN12S19037C12_ntC1Ev();
extern void _ZN12S19037C12_ntD2Ev();
Name_Map name_map_S19037C12_nt[] = {
  NSPAIR(_ZN12S19037C12_ntC1Ev),
  NSPAIR(_ZN12S19037C12_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C11_nt;
extern VTBL_ENTRY _ZTI12S19037C11_nt[];
extern  VTBL_ENTRY _ZTV12S19037C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C11_nt[];
static Base_Class bases_S19037C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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, 1},
  {&cd_S19037C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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 _ZTI12S19037C12_nt[];
extern void _ZN12S19037C12_ntD1Ev();
extern void _ZN12S19037C12_ntD0Ev();
static  VTBL_ENTRY vtc_S19037C12_nt[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C12_nt[0]),
  (VTBL_ENTRY)&_ZN12S19037C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19037C12_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S19037C12_nt[];
extern void _ZN12S19037C11_ntD1Ev();
extern void _ZN12S19037C11_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19037C11_nt__12S19037C12_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19037C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19037C11_ntD0Ev,
};
static  VTT_ENTRY vtt_S19037C12_nt[] = {
  {&(_ZTV12S19037C12_nt[5]),  5,7},
  {&(_ZTV12S19037C12_nt[5]),  5,7},
  {&(_tg__ZTV12S19037C11_nt__12S19037C12_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI12S19037C12_nt[];
VTBL_ENTRY *P__ZTI12S19037C12_nt = _ZTI12S19037C12_nt; 
extern  VTBL_ENTRY _ZTV12S19037C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C12_nt[];
Class_Descriptor cd_S19037C12_nt = {  "S19037C12_nt", // class name
  bases_S19037C12_nt, 2,
  &(vtc_S19037C12_nt[0]), // expected_vtbl_contents
  &(vtt_S19037C12_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI12S19037C12_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19037C12_nt),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19037C12_nt),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  S19037C10  : virtual S19037C11_nt , virtual S19037C12_nt , S2014C24 , virtual S19037C5_nt {
  virtual  ~S19037C10(); // _ZN9S19037C10D2Ev
  S19037C10(); // tgen
};
//SIG(-1 S19037C10) C1{ VBC2{ VBC3{ m} vd} VBC4{ VBC2 vd FC5{ m}} BC5 VBC6{ VBC3 VBC7{ m} Fi[9]} vd}


 S19037C10 ::~S19037C10(){ note_dtor("S19037C10", this);}
S19037C10 ::S19037C10(){ note_ctor("S19037C10", this);} // tgen

static void Test_S19037C10()
{
  extern Class_Descriptor cd_S19037C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S19037C10, buf);
    S19037C10 *dp, &lv = *(dp=new (buf) S19037C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S19037C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19037C10)");
    check_base_class_offset(lv, (S2014C28*)(S19037C11_nt*), 0, "S19037C10");
    check_base_class_offset(lv, (S2014C28*)(S19037C5_nt*), 0, "S19037C10");
    check_base_class_offset(lv, (S19037C11_nt*), 0, "S19037C10");
    check_base_class_offset(lv, (S19037C11_nt*)(S19037C12_nt*), 0, "S19037C10");
    check_base_class_offset(lv, (S19037C12_nt*), ABISELECT(8,4), "S19037C10");
    check_base_class_offset(lv, (S2014C24*), 0, "S19037C10");
    check_base_class_offset(lv, (S2014C38*)(S19037C5_nt*), 0, "S19037C10");
    check_base_class_offset(lv, (S19037C5_nt*), ABISELECT(24,12), "S19037C10");
    test_class_info(&lv, &cd_S19037C10);
    dp->~S19037C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19037C10(Test_S19037C10, "S19037C10", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S19037C10C1Ev();
extern void _ZN9S19037C10D2Ev();
Name_Map name_map_S19037C10[] = {
  NSPAIR(_ZN9S19037C10C1Ev),
  NSPAIR(_ZN9S19037C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C11_nt;
extern VTBL_ENTRY _ZTI12S19037C11_nt[];
extern  VTBL_ENTRY _ZTV12S19037C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C11_nt[];
extern Class_Descriptor cd_S19037C12_nt;
extern VTBL_ENTRY _ZTI12S19037C12_nt[];
extern  VTBL_ENTRY _ZTV12S19037C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C12_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
static Base_Class bases_S19037C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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, 1},
  {&cd_S19037C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19037C12_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19037C5_nt,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19037C10[];
extern void _ZN9S19037C10D1Ev();
extern void _ZN9S19037C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19037C10D1Ev,_ZThn4_N9S19037C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S19037C10D0Ev,_ZThn4_N9S19037C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19037C10[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
  (VTBL_ENTRY)&_ZN9S19037C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19037C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
};
extern VTBL_ENTRY _ZTV9S19037C10[];
extern void _ZN12S19037C11_ntD1Ev();
extern void _ZN12S19037C11_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19037C11_nt__9S19037C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19037C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19037C11_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev)();
extern void _ZN12S19037C12_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev)();
extern void _ZN12S19037C12_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19037C12_nt__9S19037C10[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19037C11_nt__12S19037C12_nt__9S19037C10[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S19037C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__9S19037C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
static  VTT_ENTRY vtt_S19037C10[] = {
  {&(_ZTV9S19037C10[8]),  8,21},
  {&(_ZTV9S19037C10[8]),  8,21},
  {&(_ZTV9S19037C10[15]),  15,21},
  {&(_ZTV9S19037C10[21]),  21,21},
  {&(_tg__ZTV12S19037C11_nt__9S19037C10[3]),  3,5},
  {&(_tg__ZTV12S19037C12_nt__9S19037C10[5]),  5,7},
  {&(_tg__ZTV12S19037C11_nt__12S19037C12_nt__9S19037C10[4]),  4,6},
  {&(_tg__ZTV11S19037C5_nt__9S19037C10[4]),  4,4},
};
extern VTBL_ENTRY _ZTI9S19037C10[];
extern  VTBL_ENTRY _ZTV9S19037C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19037C10[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S19037C12_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S19037C12_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19037C10D0Ev,_ZThn4_N9S19037C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19037C10D1Ev,_ZThn4_N9S19037C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19037C10 = {  "S19037C10", // class name
  bases_S19037C10, 6,
  &(vtc_S19037C10[0]), // expected_vtbl_contents
  &(vtt_S19037C10[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S19037C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19037C10),21, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19037C10),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19037C1  : virtual S19037C2 , S19037C10 , S19037C3_nt , S2014C21 {
  char s19037c1f0;
  virtual  ~S19037C1(); // _ZN8S19037C1D2Ev
  S19037C1(); // tgen
};
//SIG(1 S19037C1) C1{ VBC2{ BC3{ BC4{ m} VBC5{ VBC6{ m} VBC4 Fi[9]} BC7{ VBC6 VBC4 VBC5 vd Fp} BC6 VBC8{ VBC4 BC6 BC7 VBC9{ m} vd} vd} BC9 vd FD} BC10{ VBC11{ VBC6 vd} VBC12{ VBC11 vd FC9} BC9 VBC5 vd} BC3 BC13{ m} vd Fc}


 S19037C1 ::~S19037C1(){ note_dtor("S19037C1", this);}
S19037C1 ::S19037C1(){ note_ctor("S19037C1", this);} // tgen

static void Test_S19037C1()
{
  extern Class_Descriptor cd_S19037C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,24)];
    init_test(&cd_S19037C1, buf);
    S19037C1 *dp, &lv = *(dp=new (buf) S19037C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S19037C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19037C1)");
    /*is_ambiguous_... S19037C3_nt::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C3_nt*)(S19037C2*), ABISELECT(32,16), "S19037C1");
    check_base_class_offset(lv, (S2014C28*)(S19037C5_nt*), 0, "S19037C1");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C7_nt*)(S19037C3_nt*)(S19037C2*), 0, "S19037C1");
    check_base_class_offset(lv, (S2014C28*)(S19037C7_nt*)(S19037C8_nt*), 0, "S19037C1");
    check_base_class_offset(lv, (S2014C28*)(S19037C11_nt*), 0, "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C7_nt*)(S19037C3_nt*), 0, "S19037C1");
    check_base_class_offset(lv, (S2014C38*)(S19037C5_nt*), 0, "S19037C1");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C7_nt*)(S19037C3_nt*)(S19037C2*), 0, "S19037C1");
    check_base_class_offset(lv, (S2014C38*)(S19037C8_nt*), 0, "S19037C1");
    check_base_class_offset(lv, (S2014C38*)(S19037C7_nt*)(S19037C8_nt*), 0, "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C7_nt*)(S19037C3_nt*), 0, "S19037C1");
    check_base_class_offset(lv, (S19037C5_nt*)(S19037C3_nt*)(S19037C2*), ABISELECT(64,36), "S19037C1");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S19037C5_nt*)(S19037C7_nt*)(S19037C3_nt*)(S19037C2*), ABISELECT(64,36), "S19037C1");
    check_base_class_offset(lv, (S19037C5_nt*)(S19037C7_nt*)(S19037C8_nt*), ABISELECT(64,36), "S19037C1");
    check_base_class_offset(lv, (S19037C5_nt*)(S19037C10*), ABISELECT(64,36), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S19037C5_nt*)(S19037C3_nt*), ABISELECT(64,36), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S19037C5_nt*)(S19037C7_nt*)(S19037C3_nt*), ABISELECT(64,36), "S19037C1");
    /*is_ambiguous_... S19037C3_nt::S19037C7_nt */ AMB_check_base_class_offset(lv, (S19037C7_nt*)(S19037C3_nt*)(S19037C2*), ABISELECT(32,16), "S19037C1");
    /*is_ambiguous_... S19037C3_nt::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C3_nt*)(S19037C2*), ABISELECT(32,16), "S19037C1");
    /*is_ambiguous_... S19037C8_nt::S2014C28 */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C8_nt*), ABISELECT(112,76), "S19037C1");
    check_base_class_offset(lv, (S19037C7_nt*)(S19037C8_nt*), ABISELECT(112,76), "S19037C1");
    check_base_class_offset(lv, (S2014C24*)(S19037C8_nt*), ABISELECT(128,84), "S19037C1");
    check_base_class_offset(lv, (S19037C8_nt*)(S19037C3_nt*)(S19037C2*), ABISELECT(112,76), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S19037C8_nt*)(S19037C3_nt*), ABISELECT(112,76), "S19037C1");
    check_base_class_offset(lv, (S19037C3_nt*)(S19037C2*), ABISELECT(32,16), "S19037C1");
    /*is_ambiguous_... S19037C2::S2014C24 */ AMB_check_base_class_offset(lv, (S2014C24*)(S19037C2*), ABISELECT(32,16), "S19037C1");
    check_base_class_offset(lv, (S19037C2*), ABISELECT(32,16), "S19037C1");
    check_base_class_offset(lv, (S19037C11_nt*)(S19037C10*), 0, "S19037C1");
    check_base_class_offset(lv, (S19037C11_nt*)(S19037C12_nt*), 0, "S19037C1");
    check_base_class_offset(lv, (S19037C12_nt*)(S19037C10*), ABISELECT(128,84), "S19037C1");
    check_base_class_offset(lv, (S2014C24*)(S19037C10*), 0, "S19037C1");
    check_base_class_offset(lv, (S19037C10*), 0, "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S2014C38*)(S19037C3_nt*), ABISELECT(8,4), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S19037C7_nt*)(S19037C3_nt*), ABISELECT(8,4), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S2014C28*)(S19037C3_nt*), ABISELECT(8,4), "S19037C1");
    /*is_ambiguous_... S19037C1::S19037C3_nt */ AMB_check_base_class_offset(lv, (S19037C3_nt*), ABISELECT(8,4), "S19037C1");
    check_base_class_offset(lv, (S2014C21*), 0, "S19037C1");
    check_field_offset(lv, s19037c1f0, ABISELECT(24,12), "S19037C1.s19037c1f0");
    test_class_info(&lv, &cd_S19037C1);
    dp->~S19037C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19037C1(Test_S19037C1, "S19037C1", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN8S19037C1C1Ev();
extern void _ZN8S19037C1D2Ev();
Name_Map name_map_S19037C1[] = {
  NSPAIR(_ZN8S19037C1C1Ev),
  NSPAIR(_ZN8S19037C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C5_nt;
extern VTBL_ENTRY _ZTI11S19037C5_nt[];
extern  VTBL_ENTRY _ZTV11S19037C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C5_nt[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19037C8_nt;
extern VTBL_ENTRY _ZTI11S19037C8_nt[];
extern  VTBL_ENTRY _ZTV11S19037C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C8_nt[];
extern Class_Descriptor cd_S19037C3_nt;
extern VTBL_ENTRY _ZTI11S19037C3_nt[];
extern  VTBL_ENTRY _ZTV11S19037C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C3_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19037C2;
extern VTBL_ENTRY _ZTI8S19037C2[];
extern  VTBL_ENTRY _ZTV8S19037C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19037C2[];
extern Class_Descriptor cd_S19037C11_nt;
extern VTBL_ENTRY _ZTI12S19037C11_nt[];
extern  VTBL_ENTRY _ZTV12S19037C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C11_nt[];
extern Class_Descriptor cd_S19037C12_nt;
extern VTBL_ENTRY _ZTI12S19037C12_nt[];
extern  VTBL_ENTRY _ZTV12S19037C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19037C12_nt[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S19037C10;
extern VTBL_ENTRY _ZTI9S19037C10[];
extern  VTBL_ENTRY _ZTV9S19037C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19037C10[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S19037C7_nt;
extern VTBL_ENTRY _ZTI11S19037C7_nt[];
extern  VTBL_ENTRY _ZTV11S19037C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C7_nt[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S19037C3_nt;
extern VTBL_ENTRY _ZTI11S19037C3_nt[];
extern  VTBL_ENTRY _ZTV11S19037C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S19037C3_nt[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
static Base_Class bases_S19037C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19037C5_nt,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19037C7_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C28,    ABISELECT(112,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
    9, //immediately_derived
  0, 0},
  {&cd_S19037C7_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2014C24,    ABISELECT(128,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, 1},
  {&cd_S19037C8_nt,    ABISELECT(112,76), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19037C3_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2014C24,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19037C2,    ABISELECT(32,16), //bcp->offset
    22, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19037C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    14, //immediately_derived
  0, 1},
  {&cd_S19037C12_nt,    ABISELECT(128,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19037C10,    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},
  {&cd_S2014C38,    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_S19037C7_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2014C28,    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_S19037C3_nt,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19037C1[];
extern void _ZN8S19037C1D1Ev();
extern void _ZN8S19037C1D0Ev();
extern void ABISELECT(_ZThn8_N8S19037C1D1Ev,_ZThn4_N8S19037C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19037C1D0Ev,_ZThn4_N8S19037C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19037C1D1Ev,_ZTv0_n32_N8S19037C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19037C1D1Ev,_ZThn16_N8S19037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19037C1D0Ev,_ZTv0_n32_N8S19037C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19037C1D0Ev,_ZThn16_N8S19037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19037C1D1Ev,_ZTv0_n28_N8S19037C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19037C1D1Ev,_ZThn76_N8S19037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19037C1D0Ev,_ZTv0_n28_N8S19037C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19037C1D0Ev,_ZThn76_N8S19037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19037C1D1Ev,_ZTv0_n16_N8S19037C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19037C1D1Ev,_ZThn84_N8S19037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19037C1D0Ev,_ZTv0_n16_N8S19037C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19037C1D0Ev,_ZThn84_N8S19037C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19037C1[] = {
  ABISELECT(128,84),
  ABISELECT(112,76),
  ABISELECT(32,16),
  0,
  ABISELECT(64,36),
  ABISELECT(128,84),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  (VTBL_ENTRY)&_ZN8S19037C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19037C1D0Ev,
  ABISELECT(120,80),
  ABISELECT(104,72),
  ABISELECT(56,32),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19037C1D1Ev,_ZThn4_N8S19037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19037C1D0Ev,_ZThn4_N8S19037C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(32,20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19037C1D1Ev,_ZTv0_n32_N8S19037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19037C1D0Ev,_ZTv0_n32_N8S19037C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  ABISELECT(-112,-76),
  ABISELECT(16,8),
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C1D1Ev,_ZTv0_n28_N8S19037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C1D0Ev,_ZTv0_n28_N8S19037C1D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S19037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19037C1D1Ev,_ZTv0_n16_N8S19037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19037C1D0Ev,_ZTv0_n16_N8S19037C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19037C1[];
extern void _ZN9S19037C10D1Ev();
extern void _ZN9S19037C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19037C10__8S19037C1[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(128,84),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
  (VTBL_ENTRY)&_ZN9S19037C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19037C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19037C10D1Ev,_ZThn84_N9S19037C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19037C10D0Ev,_ZThn84_N9S19037C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19037C12_nt__9S19037C10__8S19037C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__9S19037C10__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19037C10[0]),
};
extern void _ZN11S19037C3_ntD1Ev();
extern void _ZN11S19037C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C3_nt__A1__8S19037C1[] = {
  ABISELECT(120,80),
  ABISELECT(104,72),
  ABISELECT(56,32),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C3_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C3_nt__A2__8S19037C1[] = {
  ABISELECT(56,32),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt__A2__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C3_nt__A1__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
};
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev)();
extern void ABISELECT(_ZThn104_N11S19037C3_ntD1Ev,_ZThn72_N11S19037C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev)();
extern void ABISELECT(_ZThn104_N11S19037C3_ntD0Ev,_ZThn72_N11S19037C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__11S19037C3_nt__A1__8S19037C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(16,8),
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev),
};
extern void _ZN8S19037C2D1Ev();
extern void _ZN8S19037C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19037C2__8S19037C1[] = {
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(32,20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
  (VTBL_ENTRY)&_ZN8S19037C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19037C2D0Ev,
};
extern void _ZN11S19037C3_ntD1Ev();
extern void _ZN11S19037C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C3_nt8S19037C2__8S19037C1[] = {
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(32,20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C3_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C3_nt8S19037C2__8S19037C1[] = {
  ABISELECT(32,20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt8S19037C2__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C3_nt8S19037C2__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
};
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev)();
extern void ABISELECT(_ZThn80_N11S19037C3_ntD1Ev,_ZThn60_N11S19037C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev)();
extern void ABISELECT(_ZThn80_N11S19037C3_ntD0Ev,_ZThn60_N11S19037C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__11S19037C3_nt8S19037C2__8S19037C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(16,8),
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI11S19037C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__8S19037C2__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
};
extern void ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S19037C2D1Ev,_ZThn60_N8S19037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S19037C2D0Ev,_ZThn60_N8S19037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__8S19037C2__8S19037C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(16,8),
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S19037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C5_nt[0]),
};
extern void _ZN11S19037C8_ntD1Ev();
extern void _ZN11S19037C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C8_nt__8S19037C1[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C8_ntD0Ev,
};
extern void _ZN11S19037C7_ntD1Ev();
extern void _ZN11S19037C7_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S19037C7_nt11S19037C8_nt__A1__8S19037C1[] = {
  ABISELECT(-48,-40),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S19037C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19037C7_ntD0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI11S19037C7_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S19037C5_nt__11S19037C8_nt__8S19037C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI11S19037C8_nt[0]),
};
extern void _ZN12S19037C11_ntD1Ev();
extern void _ZN12S19037C11_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S19037C11_nt__8S19037C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19037C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19037C11_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev)();
extern void _ZN12S19037C12_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev)();
extern void _ZN12S19037C12_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S19037C12_nt__8S19037C1[] = {
  ABISELECT(-128,-84),
  0,
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI12S19037C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19037C11_nt__12S19037C12_nt__8S19037C1[] = {
  ABISELECT(128,84),
  0,
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI12S19037C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev),
};
static  VTT_ENTRY vtt_S19037C1[] = {
  {&(_ZTV8S19037C1[11]),  11,52},
  {&(_tg__ZTV9S19037C10__8S19037C1[8]),  8,10},
  {&(_tg__ZTV9S19037C10__8S19037C1[8]),  8,10},
  {&(_tg__ZTV12S19037C12_nt__9S19037C10__8S19037C1[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__9S19037C10__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C3_nt__A1__8S19037C1[7]),  7,9},
  {&(_tg__ZTV11S19037C7_nt11S19037C3_nt__A2__8S19037C1[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt__A2__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C3_nt__A1__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__11S19037C3_nt__A1__8S19037C1[7]),  7,9},
  {&(_ZTV8S19037C1[30]),  30,52},
  {&(_ZTV8S19037C1[36]),  36,52},
  {&(_ZTV8S19037C1[43]),  43,52},
  {&(_ZTV8S19037C1[11]),  11,52},
  {&(_ZTV8S19037C1[50]),  50,52},
  {&(_ZTV8S19037C1[20]),  20,52},
  {&(_tg__ZTV8S19037C2__8S19037C1[7]),  7,9},
  {&(_tg__ZTV11S19037C3_nt8S19037C2__8S19037C1[7]),  7,9},
  {&(_tg__ZTV11S19037C7_nt11S19037C3_nt8S19037C2__8S19037C1[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C3_nt8S19037C2__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C3_nt8S19037C2__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__11S19037C3_nt8S19037C2__8S19037C1[7]),  7,9},
  {&(_tg__ZTV11S19037C5_nt__8S19037C2__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__8S19037C2__8S19037C1[7]),  7,9},
  {&(_tg__ZTV11S19037C5_nt__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C8_nt__8S19037C1[6]),  6,8},
  {&(_tg__ZTV11S19037C7_nt11S19037C8_nt__A1__8S19037C1[5]),  5,7},
  {&(_tg__ZTV11S19037C5_nt__11S19037C7_nt11S19037C8_nt__A1__8S19037C1[4]),  4,4},
  {&(_tg__ZTV11S19037C5_nt__11S19037C8_nt__8S19037C1[4]),  4,4},
  {&(_tg__ZTV12S19037C11_nt__8S19037C1[3]),  3,5},
  {&(_tg__ZTV12S19037C12_nt__8S19037C1[5]),  5,7},
  {&(_tg__ZTV12S19037C11_nt__12S19037C12_nt__8S19037C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19037C1[];
extern  VTBL_ENTRY _ZTV8S19037C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19037C1[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S19037C12_ntD0Ev,_ZTv0_n16_N12S19037C12_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S19037C12_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N12S19037C12_ntD1Ev,_ZTv0_n16_N12S19037C12_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S19037C12_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C2D0Ev,_ZTv0_n28_N8S19037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19037C2D0Ev,_ZThn60_N8S19037C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C2D1Ev,_ZTv0_n28_N8S19037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19037C2D1Ev,_ZThn60_N8S19037C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD0Ev,_ZTv0_n28_N11S19037C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S19037C3_ntD0Ev,_ZThn60_N11S19037C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N11S19037C3_ntD0Ev,_ZThn72_N11S19037C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S19037C3_ntD1Ev,_ZTv0_n28_N11S19037C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S19037C3_ntD1Ev,_ZThn60_N11S19037C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N11S19037C3_ntD1Ev,_ZThn72_N11S19037C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19037C10D0Ev,_ZTv0_n16_N9S19037C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19037C10D0Ev,_ZThn84_N9S19037C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19037C10D1Ev,_ZTv0_n16_N9S19037C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19037C10D1Ev,_ZThn84_N9S19037C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19037C1D0Ev,_ZTv0_n16_N8S19037C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19037C1D0Ev,_ZThn84_N8S19037C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19037C1D1Ev,_ZTv0_n16_N8S19037C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19037C1D1Ev,_ZThn84_N8S19037C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C1D0Ev,_ZTv0_n28_N8S19037C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19037C1D0Ev,_ZThn76_N8S19037C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19037C1D1Ev,_ZTv0_n28_N8S19037C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19037C1D1Ev,_ZThn76_N8S19037C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19037C1D0Ev,_ZTv0_n32_N8S19037C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19037C1D0Ev,_ZThn16_N8S19037C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19037C1D1Ev,_ZTv0_n32_N8S19037C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19037C1D1Ev,_ZThn16_N8S19037C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19037C1 = {  "S19037C1", // class name
  bases_S19037C1, 22,
  &(vtc_S19037C1[0]), // expected_vtbl_contents
  &(vtt_S19037C1[0]), // expected_vtt_contents
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI8S19037C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19037C1),52, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19037C1),32, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6058C6  : virtual S19169C6_nt {
  __tsi64 s6058c6f0;
  ~S6058C6(); // tgen
  S6058C6(); // tgen
};
//SIG(-1 S6058C6) C1{ VBC2{ m Fp[6]} FL}


S6058C6 ::~S6058C6(){ note_dtor("S6058C6", this);} // tgen
S6058C6 ::S6058C6(){ note_ctor("S6058C6", this);} // tgen

static void Test_S6058C6()
{
  extern Class_Descriptor cd_S6058C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6058C6, buf);
    S6058C6 *dp, &lv = *(dp=new (buf) S6058C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6058C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C6)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S6058C6");
    check_field_offset(lv, s6058c6f0, ABISELECT(8,4), "S6058C6.s6058c6f0");
    test_class_info(&lv, &cd_S6058C6);
    dp->~S6058C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C6(Test_S6058C6, "S6058C6", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6058C6C1Ev();
extern void _ZN7S6058C6D1Ev();
Name_Map name_map_S6058C6[] = {
  NSPAIR(_ZN7S6058C6C1Ev),
  NSPAIR(_ZN7S6058C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S6058C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C6[];
static  VTBL_ENTRY vtc_S6058C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
extern VTBL_ENTRY _ZTV7S6058C6[];
static  VTT_ENTRY vtt_S6058C6[] = {
  {&(_ZTV7S6058C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
Class_Descriptor cd_S6058C6 = {  "S6058C6", // class name
  bases_S6058C6, 1,
  &(vtc_S6058C6[0]), // expected_vtbl_contents
  &(vtt_S6058C6[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6058C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6058C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C6),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  S6058C7  : virtual S19169C6_nt {
  ~S6058C7(); // tgen
  S6058C7(); // tgen
};
//SIG(-1 S6058C7) C1{ VBC2{ m Fp[6]}}


S6058C7 ::~S6058C7(){ note_dtor("S6058C7", this);} // tgen
S6058C7 ::S6058C7(){ note_ctor("S6058C7", this);} // tgen

static void Test_S6058C7()
{
  extern Class_Descriptor cd_S6058C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S6058C7, buf);
    S6058C7 *dp, &lv = *(dp=new (buf) S6058C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S6058C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C7)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(8,4), "S6058C7");
    test_class_info(&lv, &cd_S6058C7);
    dp->~S6058C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C7(Test_S6058C7, "S6058C7", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S6058C7C1Ev();
extern void _ZN7S6058C7D1Ev();
Name_Map name_map_S6058C7[] = {
  NSPAIR(_ZN7S6058C7C1Ev),
  NSPAIR(_ZN7S6058C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S6058C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C7[];
static  VTBL_ENTRY vtc_S6058C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
extern VTBL_ENTRY _ZTV7S6058C7[];
static  VTT_ENTRY vtt_S6058C7[] = {
  {&(_ZTV7S6058C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
Class_Descriptor cd_S6058C7 = {  "S6058C7", // class name
  bases_S6058C7, 1,
  &(vtc_S6058C7[0]), // expected_vtbl_contents
  &(vtt_S6058C7[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S6058C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6058C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C7),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  S6058C8  : S19169C6_nt , S6058C6 , virtual S6058C7 {
  ~S6058C8(); // tgen
  S6058C8(); // tgen
};
//SIG(-1 S6058C8) C1{ BC2{ m Fp[6]} BC3{ VBC2 FL} VBC4{ VBC2}}


S6058C8 ::~S6058C8(){ note_dtor("S6058C8", this);} // tgen
S6058C8 ::S6058C8(){ note_ctor("S6058C8", this);} // tgen

static void Test_S6058C8()
{
  extern Class_Descriptor cd_S6058C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S6058C8, buf);
    S6058C8 *dp, &lv = *(dp=new (buf) S6058C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S6058C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C8)");
    /*is_ambiguous_... S6058C8::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S6058C8");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*), ABISELECT(64,36), "S6058C8");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(64,36), "S6058C8");
    check_base_class_offset(lv, (S6058C6*), 0, "S6058C8");
    check_base_class_offset(lv, (S6058C7*), ABISELECT(112,60), "S6058C8");
    test_class_info(&lv, &cd_S6058C8);
    dp->~S6058C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C8(Test_S6058C8, "S6058C8", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN7S6058C8C1Ev();
extern void _ZN7S6058C8D1Ev();
Name_Map name_map_S6058C8[] = {
  NSPAIR(_ZN7S6058C8C1Ev),
  NSPAIR(_ZN7S6058C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
static Base_Class bases_S6058C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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_S19169C6_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
    2, //immediately_derived
  0, 1},
  {&cd_S6058C6,    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_S6058C7,    ABISELECT(112,60), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C8[];
static  VTBL_ENTRY vtc_S6058C8[] = {
  ABISELECT(112,60),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
extern VTBL_ENTRY _ZTV7S6058C8[];
static  VTBL_ENTRY _tg__ZTV7S6058C6__7S6058C8[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__7S6058C8[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTT_ENTRY vtt_S6058C8[] = {
  {&(_ZTV7S6058C8[4]),  4,7},
  {&(_tg__ZTV7S6058C6__7S6058C8[3]),  3,3},
  {&(_ZTV7S6058C8[7]),  7,7},
  {&(_tg__ZTV7S6058C7__7S6058C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C8[];
extern  VTBL_ENTRY _ZTV7S6058C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C8[];
Class_Descriptor cd_S6058C8 = {  "S6058C8", // class name
  bases_S6058C8, 4,
  &(vtc_S6058C8[0]), // expected_vtbl_contents
  &(vtt_S6058C8[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI7S6058C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6058C8),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C8),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  S6058C5  : S6058C6 , S19169C3_nt , S6058C7 , S6058C8 {
  ::S6058C6 s6058c5f0;
  virtual  ~S6058C5(); // _ZN7S6058C5D2Ev
  S6058C5(); // tgen
};
//SIG(-1 S6058C5) C1{ BC2{ VBC3{ m Fp[6]} FL} BC4{ m Fl[10]} BC5{ VBC3} BC6{ BC3 BC2 VBC5} vd FC2}


 S6058C5 ::~S6058C5(){ note_dtor("S6058C5", this);}
S6058C5 ::S6058C5(){ note_ctor("S6058C5", this);} // tgen

static void Test_S6058C5()
{
  extern Class_Descriptor cd_S6058C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,40)];
    init_test(&cd_S6058C5, buf);
    S6058C5 *dp, &lv = *(dp=new (buf) S6058C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,156), "sizeof(S6058C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C5)");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*), ABISELECT(232,128), "S6058C5");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(232,128), "S6058C5");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C8*), ABISELECT(232,128), "S6058C5");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(232,128), "S6058C5");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S6058C6*), 0, "S6058C5");
    check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(16,12), "S6058C5");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*), ABISELECT(96,52), "S6058C5");
    /*is_ambiguous_... S6058C8::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C8*), ABISELECT(120,68), "S6058C5");
    check_base_class_offset(lv, (S6058C6*)(S6058C8*), ABISELECT(104,56), "S6058C5");
    check_base_class_offset(lv, (S6058C7*)(S6058C8*), ABISELECT(280,152), "S6058C5");
    check_base_class_offset(lv, (S6058C8*), ABISELECT(104,56), "S6058C5");
    check_field_offset(lv, s6058c5f0, ABISELECT(168,92), "S6058C5.s6058c5f0");
    test_class_info(&lv, &cd_S6058C5);
    dp->~S6058C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C5(Test_S6058C5, "S6058C5", ABISELECT(288,156));

#else // __cplusplus

extern void _ZN7S6058C5C1Ev();
extern void _ZN7S6058C5D2Ev();
Name_Map name_map_S6058C5[] = {
  NSPAIR(_ZN7S6058C5C1Ev),
  NSPAIR(_ZN7S6058C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C8;
extern VTBL_ENTRY _ZTI7S6058C8[];
extern  VTBL_ENTRY _ZTV7S6058C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C8[];
static Base_Class bases_S6058C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_nt,    ABISELECT(232,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
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S6058C6,    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_S19169C3_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_S6058C7,    ABISELECT(96,52), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_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
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6058C6,    ABISELECT(104,56), //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(280,152), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6058C8,    ABISELECT(104,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //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 _ZTI7S6058C5[];
extern void _ZN7S6058C5D1Ev();
extern void _ZN7S6058C5D0Ev();
static  VTBL_ENTRY vtc_S6058C5[] = {
  ABISELECT(280,152),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  (VTBL_ENTRY)&_ZN7S6058C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C5D0Ev,
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
extern VTBL_ENTRY _ZTV7S6058C5[];
static  VTBL_ENTRY _tg__ZTV7S6058C6__7S6058C5[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A__7S6058C5[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C8__7S6058C5[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C8__A1__7S6058C5[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__7S6058C8__7S6058C5[] = {
  ABISELECT(-48,-24),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C5[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTT_ENTRY vtt_S6058C5[] = {
  {&(_ZTV7S6058C5[4]),  4,16},
  {&(_tg__ZTV7S6058C6__7S6058C5[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A__7S6058C5[3]),  3,3},
  {&(_tg__ZTV7S6058C8__7S6058C5[4]),  4,4},
  {&(_tg__ZTV7S6058C67S6058C8__A1__7S6058C5[3]),  3,3},
  {&(_tg__ZTV7S6058C7__7S6058C8__7S6058C5[3]),  3,3},
  {&(_ZTV7S6058C5[9]),  9,16},
  {&(_ZTV7S6058C5[13]),  13,16},
  {&(_ZTV7S6058C5[16]),  16,16},
  {&(_tg__ZTV7S6058C7__A1__7S6058C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C5[];
extern  VTBL_ENTRY _ZTV7S6058C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C5[];
Class_Descriptor cd_S6058C5 = {  "S6058C5", // class name
  bases_S6058C5, 8,
  &(vtc_S6058C5[0]), // expected_vtbl_contents
  &(vtt_S6058C5[0]), // expected_vtt_contents
  ABISELECT(288,156), // object size
  NSPAIRA(_ZTI7S6058C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6058C5),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C5),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  S6058C9  : S19169C3_nt , S19169C6_nt , S6058C7 , virtual S6058C5 {
  virtual  ~S6058C9(); // _ZN7S6058C9D2Ev
  S6058C9(); // tgen
};
//SIG(-1 S6058C9) C1{ BC2{ m Fl[10]} BC3{ m Fp[6]} BC4{ VBC3} VBC5{ BC6{ VBC3 FL} BC2 BC4 BC7{ BC3 BC6 VBC4} vd FC6} vd}


 S6058C9 ::~S6058C9(){ note_dtor("S6058C9", this);}
S6058C9 ::S6058C9(){ note_ctor("S6058C9", this);} // tgen

static void Test_S6058C9()
{
  extern Class_Descriptor cd_S6058C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,57)];
    init_test(&cd_S6058C9, buf);
    S6058C9 *dp, &lv = *(dp=new (buf) S6058C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,224), "sizeof(S6058C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C9)");
    /*is_ambiguous_... S6058C9::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(8,4), "S6058C9");
    /*is_ambiguous_... S6058C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(88,44), "S6058C9");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(136,68), "S6058C9");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C5*), ABISELECT(136,68), "S6058C9");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*)(S6058C5*), ABISELECT(136,68), "S6058C9");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(136,68), "S6058C9");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(136,68), "S6058C9");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*), 0, "S6058C9");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S6058C6*)(S6058C5*), ABISELECT(184,92), "S6058C9");
    check_base_class_offset(lv, (S19169C3_nt*)(S6058C5*), ABISELECT(200,104), "S6058C9");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*)(S6058C5*), ABISELECT(280,144), "S6058C9");
    /*is_ambiguous_... S6058C8::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C8*)(S6058C5*), ABISELECT(304,160), "S6058C9");
    check_base_class_offset(lv, (S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(288,148), "S6058C9");
    check_base_class_offset(lv, (S6058C7*)(S6058C8*)(S6058C5*), ABISELECT(416,220), "S6058C9");
    check_base_class_offset(lv, (S6058C8*)(S6058C5*), ABISELECT(288,148), "S6058C9");
    check_base_class_offset(lv, (S6058C5*), ABISELECT(184,92), "S6058C9");
    test_class_info(&lv, &cd_S6058C9);
    dp->~S6058C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C9(Test_S6058C9, "S6058C9", ABISELECT(424,224));

#else // __cplusplus

extern void _ZN7S6058C9C1Ev();
extern void _ZN7S6058C9D2Ev();
Name_Map name_map_S6058C9[] = {
  NSPAIR(_ZN7S6058C9C1Ev),
  NSPAIR(_ZN7S6058C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C8;
extern VTBL_ENTRY _ZTI7S6058C8[];
extern  VTBL_ENTRY _ZTV7S6058C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C8[];
extern Class_Descriptor cd_S6058C5;
extern VTBL_ENTRY _ZTI7S6058C5[];
extern  VTBL_ENTRY _ZTV7S6058C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C5[];
static Base_Class bases_S6058C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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_S19169C6_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_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
    3, //immediately_derived
  0, 1},
  {&cd_S6058C7,    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_S6058C6,    ABISELECT(184,92), //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
    11, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(200,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
    11, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(280,144), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(304,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_S6058C6,    ABISELECT(288,148), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(416,220), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6058C8,    ABISELECT(288,148), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6058C5,    ABISELECT(184,92), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C9[];
extern void _ZN7S6058C9D1Ev();
extern void _ZN7S6058C9D0Ev();
extern void ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev)();
extern void ABISELECT(_ZThn184_N7S6058C9D1Ev,_ZThn92_N7S6058C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev)();
extern void ABISELECT(_ZThn184_N7S6058C9D0Ev,_ZThn92_N7S6058C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6058C9[] = {
  ABISELECT(416,220),
  ABISELECT(184,92),
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&_ZN7S6058C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C9D0Ev,
  ABISELECT(-184,-92),
  ABISELECT(232,128),
  ABISELECT(-48,-24),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev),
  ABISELECT(-144,-76),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  ABISELECT(-280,-152),
  ABISELECT(-416,-220),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
extern VTBL_ENTRY _ZTV7S6058C9[];
static  VTBL_ENTRY _tg__ZTV7S6058C7__A__7S6058C9[] = {
  ABISELECT(136,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
extern void _ZN7S6058C5D1Ev();
extern void _ZN7S6058C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C9[] = {
  ABISELECT(232,128),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  (VTBL_ENTRY)&_ZN7S6058C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C5__7S6058C9[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__A1__7S6058C9[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C9[] = {
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C9[] = {
  ABISELECT(-152,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C9[] = {
  ABISELECT(-280,-152),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A__7S6058C5__7S6058C9[] = {
  ABISELECT(-144,-76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C8__7S6058C5__7S6058C9[] = {
  ABISELECT(128,72),
  ABISELECT(-152,-80),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C5__7S6058C9[] = {
  ABISELECT(-280,-152),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A2__7S6058C9[] = {
  ABISELECT(-280,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTT_ENTRY vtt_S6058C9[] = {
  {&(_ZTV7S6058C9[5]),  5,24},
  {&(_tg__ZTV7S6058C7__A__7S6058C9[3]),  3,3},
  {&(_ZTV7S6058C9[12]),  12,24},
  {&(_ZTV7S6058C9[17]),  17,24},
  {&(_ZTV7S6058C9[21]),  21,24},
  {&(_ZTV7S6058C9[24]),  24,24},
  {&(_tg__ZTV7S6058C5__7S6058C9[4]),  4,6},
  {&(_tg__ZTV7S6058C67S6058C5__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C77S6058C5__A1__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C9[4]),  4,4},
  {&(_tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A__7S6058C5__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C8__7S6058C5__7S6058C9[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A1__7S6058C5__7S6058C9[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A2__7S6058C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C9[];
extern  VTBL_ENTRY _ZTV7S6058C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C9[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6058C9D0Ev,_ZThn92_N7S6058C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6058C9D1Ev,_ZThn92_N7S6058C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6058C9 = {  "S6058C9", // class name
  bases_S6058C9, 12,
  &(vtc_S6058C9[0]), // expected_vtbl_contents
  &(vtt_S6058C9[0]), // expected_vtt_contents
  ABISELECT(424,224), // object size
  NSPAIRA(_ZTI7S6058C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6058C9),24, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C9),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6058C3  : S19169C3_nt , virtual S6058C5 , S6058C9 , virtual S3222C8_nt , S19169C11_nt {
  __tsi64 s6058c3f0;
  void *s6058c3f1;
  virtual  ~S6058C3(); // _ZN7S6058C3D2Ev
  S6058C3(); // tgen
};
//SIG(-1 S6058C3) C1{ BC2{ m Fl[10]} VBC3{ BC4{ VBC5{ m Fp[6]} FL} BC2 BC6{ VBC5} BC7{ BC5 BC4 VBC6} vd FC4} BC8{ BC2 BC5 BC6 VBC3 vd} VBC9{ m Fi} BC10{ vd m} vd FL Fp}


 S6058C3 ::~S6058C3(){ note_dtor("S6058C3", this);}
S6058C3 ::S6058C3(){ note_ctor("S6058C3", this);} // tgen

static void Test_S6058C3()
{
  extern Class_Descriptor cd_S6058C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(68,72)];
    init_test(&cd_S6058C3, buf);
    S6058C3 *dp, &lv = *(dp=new (buf) S6058C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(536,284), "sizeof(S6058C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C3)");
    /*is_ambiguous_... S6058C3::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(136,68), "S6058C3");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C5*), ABISELECT(472,252), "S6058C3");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*)(S6058C5*), ABISELECT(472,252), "S6058C3");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(472,252), "S6058C3");
    /*is_ambiguous_... S6058C3::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(472,252), "S6058C3");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*)(S6058C9*), ABISELECT(472,252), "S6058C3");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S6058C6*)(S6058C5*), ABISELECT(240,124), "S6058C3");
    check_base_class_offset(lv, (S19169C3_nt*)(S6058C5*), ABISELECT(256,136), "S6058C3");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*)(S6058C5*), ABISELECT(336,176), "S6058C3");
    /*is_ambiguous_... S6058C8::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C8*)(S6058C5*), ABISELECT(360,192), "S6058C3");
    check_base_class_offset(lv, (S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(344,180), "S6058C3");
    check_base_class_offset(lv, (S6058C7*)(S6058C8*)(S6058C5*), ABISELECT(520,276), "S6058C3");
    check_base_class_offset(lv, (S6058C8*)(S6058C5*), ABISELECT(344,180), "S6058C3");
    check_base_class_offset(lv, (S6058C5*), ABISELECT(240,124), "S6058C3");
    check_base_class_offset(lv, (S6058C5*)(S6058C9*), ABISELECT(240,124), "S6058C3");
    /*is_ambiguous_... S6058C9::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S6058C9*), ABISELECT(8,4), "S6058C3");
    /*is_ambiguous_... S6058C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C9*), ABISELECT(88,44), "S6058C3");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*)(S6058C9*), 0, "S6058C3");
    check_base_class_offset(lv, (S6058C9*), 0, "S6058C3");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(528,280), "S6058C3");
    check_base_class_offset(lv, (S19169C11_nt*), ABISELECT(216,108), "S6058C3");
    check_field_offset(lv, s6058c3f0, ABISELECT(224,112), "S6058C3.s6058c3f0");
    check_field_offset(lv, s6058c3f1, ABISELECT(232,120), "S6058C3.s6058c3f1");
    test_class_info(&lv, &cd_S6058C3);
    dp->~S6058C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C3(Test_S6058C3, "S6058C3", ABISELECT(536,284));

#else // __cplusplus

extern void _ZN7S6058C3C1Ev();
extern void _ZN7S6058C3D2Ev();
Name_Map name_map_S6058C3[] = {
  NSPAIR(_ZN7S6058C3C1Ev),
  NSPAIR(_ZN7S6058C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C8;
extern VTBL_ENTRY _ZTI7S6058C8[];
extern  VTBL_ENTRY _ZTV7S6058C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C8[];
extern Class_Descriptor cd_S6058C5;
extern VTBL_ENTRY _ZTI7S6058C5[];
extern  VTBL_ENTRY _ZTV7S6058C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C5[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C9;
extern VTBL_ENTRY _ZTI7S6058C9[];
extern  VTBL_ENTRY _ZTV7S6058C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C9[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
static Base_Class bases_S6058C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C3_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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    ABISELECT(472,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S6058C6,    ABISELECT(240,124), //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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(256,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6058C7,    ABISELECT(336,176), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(360,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
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6058C6,    ABISELECT(344,180), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(520,276), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6058C8,    ABISELECT(344,180), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6058C5,    ABISELECT(240,124), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C3_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
    13, //immediately_derived
  0, 0},
  {&cd_S19169C6_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
    13, //immediately_derived
  0, 0},
  {&cd_S6058C7,    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
    13, //immediately_derived
  0, 0},
  {&cd_S6058C9,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3222C8_nt,    ABISELECT(528,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19169C11_nt,    ABISELECT(216,108), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C3[];
extern void _ZN7S6058C3D1Ev();
extern void _ZN7S6058C3D0Ev();
extern void ABISELECT(_ZThn216_N7S6058C3D1Ev,_ZThn108_N7S6058C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S6058C3D0Ev,_ZThn108_N7S6058C3D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev)();
extern void ABISELECT(_ZThn240_N7S6058C3D1Ev,_ZThn124_N7S6058C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev)();
extern void ABISELECT(_ZThn240_N7S6058C3D0Ev,_ZThn124_N7S6058C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6058C3[] = {
  ABISELECT(528,280),
  ABISELECT(520,276),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  (VTBL_ENTRY)&_ZN7S6058C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C3D0Ev,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S6058C3D1Ev,_ZThn108_N7S6058C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S6058C3D0Ev,_ZThn108_N7S6058C3D0Ev),
  ABISELECT(-240,-124),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev),
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  ABISELECT(-48,-24),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
};
extern VTBL_ENTRY _ZTV7S6058C3[];
extern void _ZN7S6058C9D1Ev();
extern void _ZN7S6058C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C9__7S6058C3[] = {
  ABISELECT(520,276),
  ABISELECT(240,124),
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&_ZN7S6058C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C9__A2__7S6058C3[] = {
  ABISELECT(472,252),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
extern void ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev)();
extern void ABISELECT(_ZThn240_N7S6058C9D1Ev,_ZThn124_N7S6058C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev)();
extern void ABISELECT(_ZThn240_N7S6058C9D0Ev,_ZThn124_N7S6058C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C9__7S6058C3[] = {
  ABISELECT(-240,-124),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__A1__7S6058C9__7S6058C3[] = {
  ABISELECT(136,76),
  ABISELECT(-336,-176),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C9__7S6058C3[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-344,-180),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A2__7S6058C9__7S6058C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-520,-276),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
extern void _ZN7S6058C5D1Ev();
extern void _ZN7S6058C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C3[] = {
  ABISELECT(280,152),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  (VTBL_ENTRY)&_ZN7S6058C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C5__7S6058C3[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__7S6058C3[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C3[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C3[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A__7S6058C5__7S6058C3[] = {
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C8__7S6058C5__7S6058C3[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C5__7S6058C3[] = {
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C3[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTT_ENTRY vtt_S6058C3[] = {
  {&(_ZTV7S6058C3[6]),  6,29},
  {&(_tg__ZTV7S6058C9__7S6058C3[5]),  5,7},
  {&(_tg__ZTV7S6058C77S6058C9__A2__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C5__7S6058C9__7S6058C3[5]),  5,7},
  {&(_tg__ZTV7S6058C77S6058C5__A1__7S6058C9__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C9__7S6058C3[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A2__7S6058C9__7S6058C3[3]),  3,3},
  {&(_ZTV7S6058C3[17]),  17,29},
  {&(_ZTV7S6058C3[22]),  22,29},
  {&(_ZTV7S6058C3[26]),  26,29},
  {&(_ZTV7S6058C3[29]),  29,29},
  {&(_tg__ZTV7S6058C5__7S6058C3[4]),  4,6},
  {&(_tg__ZTV7S6058C67S6058C5__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C77S6058C5__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C3[4]),  4,4},
  {&(_tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A__7S6058C5__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C8__7S6058C5__7S6058C3[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A1__7S6058C5__7S6058C3[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A1__7S6058C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C3[];
extern  VTBL_ENTRY _ZTV7S6058C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C3[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6058C9D0Ev,_ZThn124_N7S6058C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6058C9D1Ev,_ZThn124_N7S6058C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6058C3D0Ev,_ZThn124_N7S6058C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6058C3D1Ev,_ZThn124_N7S6058C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6058C3 = {  "S6058C3", // class name
  bases_S6058C3, 16,
  &(vtc_S6058C3[0]), // expected_vtbl_contents
  &(vtt_S6058C3[0]), // expected_vtt_contents
  ABISELECT(536,284), // object size
  NSPAIRA(_ZTI7S6058C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6058C3),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C3),21, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6058C12_nt  : virtual S19169C11_nt , S19169C3_nt , S19169C16_nt {
  __tsi64 s6058c12f0:7;
  virtual  ~S6058C12_nt(); // _ZN11S6058C12_ntD2Ev
  S6058C12_nt(); // tgen
};
//SIG(-1 S6058C12_nt) C1{ VBC2{ vd m} BC3{ m Fl[10]} BC4{ m FC5{ VBC6{ m Fp[6]} FL}} vd FL:7}


 S6058C12_nt ::~S6058C12_nt(){ note_dtor("S6058C12_nt", this);}
S6058C12_nt ::S6058C12_nt(){ note_ctor("S6058C12_nt", this);} // tgen

//skip512 S6058C12_nt

#else // __cplusplus

extern void _ZN11S6058C12_ntC1Ev();
extern void _ZN11S6058C12_ntD2Ev();
Name_Map name_map_S6058C12_nt[] = {
  NSPAIR(_ZN11S6058C12_ntC1Ev),
  NSPAIR(_ZN11S6058C12_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
static Base_Class bases_S6058C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C11_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_S19169C3_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_S19169C16_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6058C12_nt[];
extern void _ZN11S6058C12_ntD1Ev();
extern void _ZN11S6058C12_ntD0Ev();
static  VTBL_ENTRY vtc_S6058C12_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S6058C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S6058C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6058C12_ntD0Ev,
};
extern VTBL_ENTRY _ZTV11S6058C12_nt[];
static  VTT_ENTRY vtt_S6058C12_nt[] = {
  {&(_ZTV11S6058C12_nt[4]),  4,6},
  {&(_ZTV11S6058C12_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI11S6058C12_nt[];
VTBL_ENTRY *P__ZTI11S6058C12_nt = _ZTI11S6058C12_nt; 
extern  VTBL_ENTRY _ZTV11S6058C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6058C12_nt[];
Class_Descriptor cd_S6058C12_nt = {  "S6058C12_nt", // class name
  bases_S6058C12_nt, 3,
  &(vtc_S6058C12_nt[0]), // expected_vtbl_contents
  &(vtt_S6058C12_nt[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI11S6058C12_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S6058C12_nt),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6058C12_nt),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  S6058C1  : S19169C6_nt , S6058C3 , S6058C12_nt {
  virtual  ~S6058C1(); // _ZN7S6058C1D2Ev
  S6058C1(); // tgen
};
//SIG(1 S6058C1) C1{ BC2{ m Fp[6]} BC3{ BC4{ m Fl[10]} VBC5{ BC6{ VBC2 FL} BC4 BC7{ VBC2} BC8{ BC2 BC6 VBC7} vd FC6} BC9{ BC4 BC2 BC7 VBC5 vd} VBC10{ m Fi} BC11{ vd m} vd FL Fp} BC12{ VBC11 BC4 BC13{ m FC14{ VBC2 FL}} vd FL:7} vd}


 S6058C1 ::~S6058C1(){ note_dtor("S6058C1", this);}
S6058C1 ::S6058C1(){ note_ctor("S6058C1", this);} // tgen

static void Test_S6058C1()
{
  extern Class_Descriptor cd_S6058C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(94,99)];
    init_test(&cd_S6058C1, buf);
    S6058C1 *dp, &lv = *(dp=new (buf) S6058C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(744,392), "sizeof(S6058C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6058C1)");
    /*is_ambiguous_... S6058C1::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(240,124), "S6058C1");
    /*is_ambiguous_... S6058C3::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S6058C3*), ABISELECT(136,68), "S6058C1");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C5*), ABISELECT(680,360), "S6058C1");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*)(S6058C5*), ABISELECT(680,360), "S6058C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(680,360), "S6058C1");
    /*is_ambiguous_... S6058C1::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*), ABISELECT(680,360), "S6058C1");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C7*)(S6058C9*)(S6058C3*), ABISELECT(680,360), "S6058C1");
    /*is_ambiguous_... S6058C5::S6058C6 */ AMB_check_base_class_offset(lv, (S6058C6*)(S6058C5*), ABISELECT(448,232), "S6058C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S6058C5*), ABISELECT(464,244), "S6058C1");
    /*is_ambiguous_... S6058C5::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*)(S6058C5*), ABISELECT(544,284), "S6058C1");
    /*is_ambiguous_... S6058C8::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C8*)(S6058C5*), ABISELECT(568,300), "S6058C1");
    check_base_class_offset(lv, (S6058C6*)(S6058C8*)(S6058C5*), ABISELECT(552,288), "S6058C1");
    check_base_class_offset(lv, (S6058C7*)(S6058C8*)(S6058C5*), ABISELECT(728,384), "S6058C1");
    check_base_class_offset(lv, (S6058C8*)(S6058C5*), ABISELECT(552,288), "S6058C1");
    check_base_class_offset(lv, (S6058C5*)(S6058C3*), ABISELECT(448,232), "S6058C1");
    check_base_class_offset(lv, (S6058C5*)(S6058C9*)(S6058C3*), ABISELECT(448,232), "S6058C1");
    /*is_ambiguous_... S6058C9::S19169C3_nt */ AMB_check_base_class_offset(lv, (S19169C3_nt*)(S6058C9*)(S6058C3*), ABISELECT(8,4), "S6058C1");
    /*is_ambiguous_... S6058C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S6058C9*)(S6058C3*), ABISELECT(88,44), "S6058C1");
    /*is_ambiguous_... S6058C9::S6058C7 */ AMB_check_base_class_offset(lv, (S6058C7*)(S6058C9*)(S6058C3*), 0, "S6058C1");
    check_base_class_offset(lv, (S6058C9*)(S6058C3*), 0, "S6058C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S6058C3*), ABISELECT(736,388), "S6058C1");
    check_base_class_offset(lv, (S19169C11_nt*)(S6058C3*), ABISELECT(216,108), "S6058C1");
    check_base_class_offset(lv, (S6058C3*), 0, "S6058C1");
    check_base_class_offset(lv, (S19169C11_nt*)(S6058C12_nt*), ABISELECT(288,148), "S6058C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S6058C12_nt*), ABISELECT(296,152), "S6058C1");
    check_base_class_offset(lv, (S19169C16_nt*)(S6058C12_nt*), ABISELECT(376,192), "S6058C1");
    check_base_class_offset(lv, (S6058C12_nt*), ABISELECT(288,148), "S6058C1");
    test_class_info(&lv, &cd_S6058C1);
    dp->~S6058C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6058C1(Test_S6058C1, "S6058C1", ABISELECT(744,392));

#else // __cplusplus

extern void _ZN7S6058C1C1Ev();
extern void _ZN7S6058C1D2Ev();
Name_Map name_map_S6058C1[] = {
  NSPAIR(_ZN7S6058C1C1Ev),
  NSPAIR(_ZN7S6058C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C6;
extern VTBL_ENTRY _ZTI7S6058C6[];
extern  VTBL_ENTRY _ZTV7S6058C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C6[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C8;
extern VTBL_ENTRY _ZTI7S6058C8[];
extern  VTBL_ENTRY _ZTV7S6058C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C8[];
extern Class_Descriptor cd_S6058C5;
extern VTBL_ENTRY _ZTI7S6058C5[];
extern  VTBL_ENTRY _ZTV7S6058C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C5[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S6058C7;
extern VTBL_ENTRY _ZTI7S6058C7[];
extern  VTBL_ENTRY _ZTV7S6058C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C7[];
extern Class_Descriptor cd_S6058C9;
extern VTBL_ENTRY _ZTI7S6058C9[];
extern  VTBL_ENTRY _ZTV7S6058C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C9[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S6058C3;
extern VTBL_ENTRY _ZTI7S6058C3[];
extern  VTBL_ENTRY _ZTV7S6058C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C3[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S6058C12_nt;
extern VTBL_ENTRY _ZTI11S6058C12_nt[];
extern  VTBL_ENTRY _ZTV11S6058C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6058C12_nt[];
static Base_Class bases_S6058C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_nt,    ABISELECT(240,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C3_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
    17, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(680,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6058C6,    ABISELECT(448,232), //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
    10, //immediately_derived
  0, 0},
  {&cd_S19169C3_nt,    ABISELECT(464,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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(544,284), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(568,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
    9, //immediately_derived
  0, 0},
  {&cd_S6058C6,    ABISELECT(552,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    9, //immediately_derived
  0, 0},
  {&cd_S6058C7,    ABISELECT(728,384), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6058C8,    ABISELECT(552,288), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6058C5,    ABISELECT(448,232), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19169C3_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
    14, //immediately_derived
  0, 0},
  {&cd_S19169C6_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
    14, //immediately_derived
  0, 0},
  {&cd_S6058C7,    0, //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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6058C9,    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
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3222C8_nt,    ABISELECT(736,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
    17, //immediately_derived
  0, 1},
  {&cd_S19169C11_nt,    ABISELECT(216,108), //bcp->offset
    9, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S6058C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C11_nt,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19169C3_nt,    ABISELECT(296,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
    21, //immediately_derived
  0, 0},
  {&cd_S19169C16_nt,    ABISELECT(376,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
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6058C12_nt,    ABISELECT(288,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6058C1[];
extern void _ZN7S6058C1D1Ev();
extern void _ZN7S6058C1D0Ev();
extern void ABISELECT(_ZThn216_N7S6058C1D1Ev,_ZThn108_N7S6058C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S6058C1D0Ev,_ZThn108_N7S6058C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6058C1D1Ev,_ZTv0_n12_N7S6058C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S6058C1D1Ev,_ZThn148_N7S6058C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6058C1D0Ev,_ZTv0_n12_N7S6058C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S6058C1D0Ev,_ZThn148_N7S6058C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C1D1Ev,_ZTv0_n20_N7S6058C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S6058C1D1Ev,_ZThn232_N7S6058C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C1D0Ev,_ZTv0_n20_N7S6058C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S6058C1D0Ev,_ZThn232_N7S6058C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6058C1[] = {
  ABISELECT(288,148),
  ABISELECT(736,388),
  ABISELECT(728,384),
  ABISELECT(448,232),
  ABISELECT(680,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  (VTBL_ENTRY)&_ZN7S6058C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C1D0Ev,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S6058C1D1Ev,_ZThn108_N7S6058C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S6058C1D0Ev,_ZThn108_N7S6058C1D0Ev),
  0,
  ABISELECT(-288,-148),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6058C1D1Ev,_ZTv0_n12_N7S6058C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6058C1D0Ev,_ZTv0_n12_N7S6058C1D0Ev),
  ABISELECT(-448,-232),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-448,-232),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C1D1Ev,_ZTv0_n20_N7S6058C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C1D0Ev,_ZTv0_n20_N7S6058C1D0Ev),
  ABISELECT(136,76),
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-552,-288),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
  ABISELECT(-48,-24),
  ABISELECT(-728,-384),
  (VTBL_ENTRY)&(_ZTI7S6058C1[0]),
};
extern VTBL_ENTRY _ZTV7S6058C1[];
extern void _ZN7S6058C3D1Ev();
extern void _ZN7S6058C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C3__7S6058C1[] = {
  ABISELECT(736,388),
  ABISELECT(728,384),
  ABISELECT(448,232),
  ABISELECT(680,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  (VTBL_ENTRY)&_ZN7S6058C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C3D0Ev,
};
extern void _ZN7S6058C9D1Ev();
extern void _ZN7S6058C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C97S6058C3__7S6058C1[] = {
  ABISELECT(728,384),
  ABISELECT(448,232),
  ABISELECT(680,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&_ZN7S6058C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C97S6058C3__A2__7S6058C1[] = {
  ABISELECT(680,360),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
extern void ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev)();
extern void ABISELECT(_ZThn448_N7S6058C9D1Ev,_ZThn232_N7S6058C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev)();
extern void ABISELECT(_ZThn448_N7S6058C9D0Ev,_ZThn232_N7S6058C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C97S6058C3__7S6058C1[] = {
  ABISELECT(-448,-232),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-448,-232),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__A1__7S6058C97S6058C3__7S6058C1[] = {
  ABISELECT(136,76),
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C97S6058C3__7S6058C1[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-552,-288),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A2__7S6058C97S6058C3__7S6058C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-728,-384),
  (VTBL_ENTRY)&(_ZTI7S6058C9[0]),
};
extern void ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev)();
extern void ABISELECT(_ZThn448_N7S6058C3D1Ev,_ZThn232_N7S6058C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev)();
extern void ABISELECT(_ZThn448_N7S6058C3D0Ev,_ZThn232_N7S6058C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C3__7S6058C1[] = {
  ABISELECT(-448,-232),
  ABISELECT(280,152),
  ABISELECT(232,128),
  ABISELECT(-448,-232),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__7S6058C3__7S6058C1[] = {
  ABISELECT(136,76),
  ABISELECT(-544,-284),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C3__7S6058C1[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-552,-288),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C3__7S6058C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-728,-384),
  (VTBL_ENTRY)&(_ZTI7S6058C3[0]),
};
extern void ABISELECT(_ZTv0_n24_N11S6058C12_ntD1Ev,_ZTv0_n12_N11S6058C12_ntD1Ev)();
extern void _ZN11S6058C12_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S6058C12_ntD0Ev,_ZTv0_n12_N11S6058C12_ntD0Ev)();
extern void _ZN11S6058C12_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6058C12_nt__7S6058C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S6058C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S6058C12_ntD1Ev,_ZTv0_n12_N11S6058C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S6058C12_ntD0Ev,_ZTv0_n12_N11S6058C12_ntD0Ev),
};
extern void _ZN7S6058C5D1Ev();
extern void _ZN7S6058C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6058C5__7S6058C1[] = {
  ABISELECT(280,152),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
  (VTBL_ENTRY)&_ZN7S6058C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6058C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C5__7S6058C1[] = {
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C77S6058C5__7S6058C1[] = {
  ABISELECT(136,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C87S6058C5__7S6058C1[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S6058C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A__7S6058C5__7S6058C1[] = {
  ABISELECT(136,76),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C8__7S6058C5__7S6058C1[] = {
  ABISELECT(176,96),
  ABISELECT(128,72),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C5__7S6058C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-280,-152),
  (VTBL_ENTRY)&(_ZTI7S6058C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6058C7__A1__7S6058C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6058C7[0]),
};
static  VTT_ENTRY vtt_S6058C1[] = {
  {&(_ZTV7S6058C1[7]),  7,36},
  {&(_tg__ZTV7S6058C3__7S6058C1[6]),  6,8},
  {&(_tg__ZTV7S6058C97S6058C3__7S6058C1[5]),  5,7},
  {&(_tg__ZTV7S6058C77S6058C97S6058C3__A2__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C5__7S6058C97S6058C3__7S6058C1[5]),  5,7},
  {&(_tg__ZTV7S6058C77S6058C5__A1__7S6058C97S6058C3__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C97S6058C3__7S6058C1[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A2__7S6058C97S6058C3__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C5__7S6058C3__7S6058C1[5]),  5,7},
  {&(_tg__ZTV7S6058C77S6058C5__7S6058C3__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C3__7S6058C1[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A1__7S6058C3__7S6058C1[3]),  3,3},
  {&(_tg__ZTV11S6058C12_nt__7S6058C1[4]),  4,6},
  {&(_tg__ZTV11S6058C12_nt__7S6058C1[4]),  4,6},
  {&(_ZTV7S6058C1[24]),  24,36},
  {&(_ZTV7S6058C1[29]),  29,36},
  {&(_ZTV7S6058C1[33]),  33,36},
  {&(_ZTV7S6058C1[36]),  36,36},
  {&(_ZTV7S6058C1[17]),  17,36},
  {&(_ZTV7S6058C1[17]),  17,36},
  {&(_tg__ZTV7S6058C5__7S6058C1[4]),  4,6},
  {&(_tg__ZTV7S6058C67S6058C5__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C77S6058C5__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C87S6058C5__7S6058C1[4]),  4,4},
  {&(_tg__ZTV7S6058C67S6058C87S6058C5__A1__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C7__7S6058C87S6058C5__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A__7S6058C5__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C8__7S6058C5__7S6058C1[4]),  4,4},
  {&(_tg__ZTV7S6058C7__A1__7S6058C5__7S6058C1[3]),  3,3},
  {&(_tg__ZTV7S6058C7__A1__7S6058C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6058C1[];
extern  VTBL_ENTRY _ZTV7S6058C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6058C1[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S6058C12_ntD0Ev,_ZTv0_n12_N11S6058C12_ntD0Ev), // 
  (VTBL_ENTRY)_ZN11S6058C12_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S6058C12_ntD1Ev,_ZTv0_n12_N11S6058C12_ntD1Ev), // 
  (VTBL_ENTRY)_ZN11S6058C12_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C3D0Ev,_ZTv0_n20_N7S6058C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C3D0Ev,_ZThn232_N7S6058C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C3D1Ev,_ZTv0_n20_N7S6058C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C3D1Ev,_ZThn232_N7S6058C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D0Ev,_ZTv0_n20_N7S6058C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C9D0Ev,_ZThn232_N7S6058C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C9D1Ev,_ZTv0_n20_N7S6058C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C9D1Ev,_ZThn232_N7S6058C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C1D0Ev,_ZTv0_n20_N7S6058C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C1D0Ev,_ZThn232_N7S6058C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6058C1D1Ev,_ZTv0_n20_N7S6058C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S6058C1D1Ev,_ZThn232_N7S6058C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6058C1D0Ev,_ZTv0_n12_N7S6058C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6058C1D0Ev,_ZThn148_N7S6058C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6058C1D1Ev,_ZTv0_n12_N7S6058C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6058C1D1Ev,_ZThn148_N7S6058C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6058C1 = {  "S6058C1", // class name
  bases_S6058C1, 22,
  &(vtc_S6058C1[0]), // expected_vtbl_contents
  &(vtt_S6058C1[0]), // expected_vtt_contents
  ABISELECT(744,392), // object size
  NSPAIRA(_ZTI7S6058C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6058C1),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6058C1),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20303C2  {
  char s20303c2f0;
  int s20303c2f1;
  void *s20303c2f2;
  virtual void  v6(); // _ZN8S20303C22v6Ev
  virtual void  v7(); // _ZN8S20303C22v7Ev
  virtual void  v8(); // _ZN8S20303C22v8Ev
  virtual void  v9(); // _ZN8S20303C22v9Ev
  virtual void  v10(); // _ZN8S20303C23v10Ev
  virtual void  v11(); // _ZN8S20303C23v11Ev
  ~S20303C2(); // tgen
  S20303C2(); // tgen
};
//SIG(-1 S20303C2) C1{ v1 v2 v3 v4 v5 v6 Fc Fi Fp}


void  S20303C2 ::v6(){vfunc_called(this, "_ZN8S20303C22v6Ev");}
void  S20303C2 ::v7(){vfunc_called(this, "_ZN8S20303C22v7Ev");}
void  S20303C2 ::v8(){vfunc_called(this, "_ZN8S20303C22v8Ev");}
void  S20303C2 ::v9(){vfunc_called(this, "_ZN8S20303C22v9Ev");}
void  S20303C2 ::v10(){vfunc_called(this, "_ZN8S20303C23v10Ev");}
void  S20303C2 ::v11(){vfunc_called(this, "_ZN8S20303C23v11Ev");}
S20303C2 ::~S20303C2(){ note_dtor("S20303C2", this);} // tgen
S20303C2 ::S20303C2(){ note_ctor("S20303C2", this);} // tgen

static void Test_S20303C2()
{
  extern Class_Descriptor cd_S20303C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20303C2, buf);
    S20303C2 *dp, &lv = *(dp=new (buf) S20303C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20303C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20303C2)");
    check_field_offset(lv, s20303c2f0, ABISELECT(8,4), "S20303C2.s20303c2f0");
    check_field_offset(lv, s20303c2f1, ABISELECT(12,8), "S20303C2.s20303c2f1");
    check_field_offset(lv, s20303c2f2, ABISELECT(16,12), "S20303C2.s20303c2f2");
    test_class_info(&lv, &cd_S20303C2);
    dp->~S20303C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20303C2(Test_S20303C2, "S20303C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20303C2C1Ev();
extern void _ZN8S20303C2D1Ev();
Name_Map name_map_S20303C2[] = {
  NSPAIR(_ZN8S20303C2C1Ev),
  NSPAIR(_ZN8S20303C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20303C2[];
extern void _ZN8S20303C22v6Ev();
extern void _ZN8S20303C22v7Ev();
extern void _ZN8S20303C22v8Ev();
extern void _ZN8S20303C22v9Ev();
extern void _ZN8S20303C23v10Ev();
extern void _ZN8S20303C23v11Ev();
static  VTBL_ENTRY vtc_S20303C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C2[0]),
  (VTBL_ENTRY)&_ZN8S20303C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20303C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20303C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S20303C2[];
extern  VTBL_ENTRY _ZTV8S20303C2[];
Class_Descriptor cd_S20303C2 = {  "S20303C2", // class name
  0,0,//no base classes
  &(vtc_S20303C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20303C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20303C2),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  S20303C4  {
  char s20303c4f0;
  void *s20303c4f1;
  virtual void  v12(); // _ZN8S20303C43v12Ev
  virtual void  v13(); // _ZN8S20303C43v13Ev
  ~S20303C4(); // tgen
  S20303C4(); // tgen
};
//SIG(-1 S20303C4) C1{ v1 v2 Fc Fp}


void  S20303C4 ::v12(){vfunc_called(this, "_ZN8S20303C43v12Ev");}
void  S20303C4 ::v13(){vfunc_called(this, "_ZN8S20303C43v13Ev");}
S20303C4 ::~S20303C4(){ note_dtor("S20303C4", this);} // tgen
S20303C4 ::S20303C4(){ note_ctor("S20303C4", this);} // tgen

static void Test_S20303C4()
{
  extern Class_Descriptor cd_S20303C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20303C4, buf);
    S20303C4 *dp, &lv = *(dp=new (buf) S20303C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20303C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20303C4)");
    check_field_offset(lv, s20303c4f0, ABISELECT(8,4), "S20303C4.s20303c4f0");
    check_field_offset(lv, s20303c4f1, ABISELECT(16,8), "S20303C4.s20303c4f1");
    test_class_info(&lv, &cd_S20303C4);
    dp->~S20303C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20303C4(Test_S20303C4, "S20303C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20303C4C1Ev();
extern void _ZN8S20303C4D1Ev();
Name_Map name_map_S20303C4[] = {
  NSPAIR(_ZN8S20303C4C1Ev),
  NSPAIR(_ZN8S20303C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20303C4[];
extern void _ZN8S20303C43v12Ev();
extern void _ZN8S20303C43v13Ev();
static  VTBL_ENTRY vtc_S20303C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C4[0]),
  (VTBL_ENTRY)&_ZN8S20303C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20303C43v13Ev,
};
extern VTBL_ENTRY _ZTI8S20303C4[];
extern  VTBL_ENTRY _ZTV8S20303C4[];
Class_Descriptor cd_S20303C4 = {  "S20303C4", // class name
  0,0,//no base classes
  &(vtc_S20303C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20303C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20303C4),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  S20303C5  {
  int s20303c5f0;
  ::S20975C6 s20303c5f1;
  virtual void  v14(); // _ZN8S20303C53v14Ev
  ~S20303C5(); // tgen
  S20303C5(); // tgen
};
//SIG(-1 S20303C5) C1{ v1 Fi FC2{ v2 v3 v4 v5 v6}}


void  S20303C5 ::v14(){vfunc_called(this, "_ZN8S20303C53v14Ev");}
S20303C5 ::~S20303C5(){ note_dtor("S20303C5", this);} // tgen
S20303C5 ::S20303C5(){ note_ctor("S20303C5", this);} // tgen

static void Test_S20303C5()
{
  extern Class_Descriptor cd_S20303C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20303C5, buf);
    S20303C5 *dp, &lv = *(dp=new (buf) S20303C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20303C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20303C5)");
    check_field_offset(lv, s20303c5f0, ABISELECT(8,4), "S20303C5.s20303c5f0");
    check_field_offset(lv, s20303c5f1, ABISELECT(16,8), "S20303C5.s20303c5f1");
    test_class_info(&lv, &cd_S20303C5);
    dp->~S20303C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20303C5(Test_S20303C5, "S20303C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20303C5C1Ev();
extern void _ZN8S20303C5D1Ev();
Name_Map name_map_S20303C5[] = {
  NSPAIR(_ZN8S20303C5C1Ev),
  NSPAIR(_ZN8S20303C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20303C5[];
extern void _ZN8S20303C53v14Ev();
static  VTBL_ENTRY vtc_S20303C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C5[0]),
  (VTBL_ENTRY)&_ZN8S20303C53v14Ev,
};
extern VTBL_ENTRY _ZTI8S20303C5[];
extern  VTBL_ENTRY _ZTV8S20303C5[];
Class_Descriptor cd_S20303C5 = {  "S20303C5", // class name
  0,0,//no base classes
  &(vtc_S20303C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20303C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20303C5),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20303C3  : S20303C4 , virtual S20303C5 {
  int s20303c3f0[2];
  virtual void  v15(); // _ZN8S20303C33v15Ev
  virtual void  v16(); // _ZN8S20303C33v16Ev
  virtual void  v17(); // _ZN8S20303C33v17Ev
  virtual void  v18(); // _ZN8S20303C33v18Ev
  virtual void  v19(); // _ZN8S20303C33v19Ev
  virtual void  v20(); // _ZN8S20303C33v20Ev
  virtual void  v21(); // _ZN8S20303C33v21Ev
  virtual void  v22(); // _ZN8S20303C33v22Ev
  ~S20303C3(); // tgen
  S20303C3(); // tgen
};
//SIG(-1 S20303C3) C1{ BC2{ v9 v10 Fc Fp} VBC3{ v11 Fi FC4{ v12 v13 v14 v15 v16}} v1 v2 v3 v4 v5 v6 v7 v8 Fi[2]}


void  S20303C3 ::v15(){vfunc_called(this, "_ZN8S20303C33v15Ev");}
void  S20303C3 ::v16(){vfunc_called(this, "_ZN8S20303C33v16Ev");}
void  S20303C3 ::v17(){vfunc_called(this, "_ZN8S20303C33v17Ev");}
void  S20303C3 ::v18(){vfunc_called(this, "_ZN8S20303C33v18Ev");}
void  S20303C3 ::v19(){vfunc_called(this, "_ZN8S20303C33v19Ev");}
void  S20303C3 ::v20(){vfunc_called(this, "_ZN8S20303C33v20Ev");}
void  S20303C3 ::v21(){vfunc_called(this, "_ZN8S20303C33v21Ev");}
void  S20303C3 ::v22(){vfunc_called(this, "_ZN8S20303C33v22Ev");}
S20303C3 ::~S20303C3(){ note_dtor("S20303C3", this);} // tgen
S20303C3 ::S20303C3(){ note_ctor("S20303C3", this);} // tgen

static void Test_S20303C3()
{
  extern Class_Descriptor cd_S20303C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20303C3, buf);
    S20303C3 *dp, &lv = *(dp=new (buf) S20303C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20303C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20303C3)");
    check_base_class_offset(lv, (S20303C4*), 0, "S20303C3");
    check_base_class_offset(lv, (S20303C5*), ABISELECT(32,20), "S20303C3");
    check_field_offset(lv, s20303c3f0, ABISELECT(24,12), "S20303C3.s20303c3f0");
    test_class_info(&lv, &cd_S20303C3);
    dp->~S20303C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20303C3(Test_S20303C3, "S20303C3", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20303C3C1Ev();
extern void _ZN8S20303C3D1Ev();
Name_Map name_map_S20303C3[] = {
  NSPAIR(_ZN8S20303C3C1Ev),
  NSPAIR(_ZN8S20303C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20303C4;
extern VTBL_ENTRY _ZTI8S20303C4[];
extern  VTBL_ENTRY _ZTV8S20303C4[];
extern Class_Descriptor cd_S20303C5;
extern VTBL_ENTRY _ZTI8S20303C5[];
extern  VTBL_ENTRY _ZTV8S20303C5[];
static Base_Class bases_S20303C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20303C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20303C5,    ABISELECT(32,20), //bcp->offset
    13, //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 _ZTI8S20303C3[];
extern void _ZN8S20303C43v12Ev();
extern void _ZN8S20303C43v13Ev();
extern void _ZN8S20303C33v15Ev();
extern void _ZN8S20303C33v16Ev();
extern void _ZN8S20303C33v17Ev();
extern void _ZN8S20303C33v18Ev();
extern void _ZN8S20303C33v19Ev();
extern void _ZN8S20303C33v20Ev();
extern void _ZN8S20303C33v21Ev();
extern void _ZN8S20303C33v22Ev();
extern void _ZN8S20303C53v14Ev();
static  VTBL_ENTRY vtc_S20303C3[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C3[0]),
  (VTBL_ENTRY)&_ZN8S20303C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20303C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v22Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20303C3[0]),
  (VTBL_ENTRY)&_ZN8S20303C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S20303C3[];
static  VTT_ENTRY vtt_S20303C3[] = {
  {&(_ZTV8S20303C3[3]),  3,17},
  {&(_ZTV8S20303C3[16]),  16,17},
};
extern VTBL_ENTRY _ZTI8S20303C3[];
extern  VTBL_ENTRY _ZTV8S20303C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20303C3[];
Class_Descriptor cd_S20303C3 = {  "S20303C3", // class name
  bases_S20303C3, 2,
  &(vtc_S20303C3[0]), // expected_vtbl_contents
  &(vtt_S20303C3[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20303C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20303C3),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20303C3),2, //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  S20303C1  : virtual S20303C2 , S20303C3 {
  ::S19414C8 s20303c1f0;
  virtual void  v1(); // _ZN8S20303C12v1Ev
  virtual void  v2(); // _ZN8S20303C12v2Ev
  virtual void  v3(); // _ZN8S20303C12v3Ev
  virtual void  v4(); // _ZN8S20303C12v4Ev
  virtual void  v5(); // _ZN8S20303C12v5Ev
  ~S20303C1(); // tgen
  S20303C1(); // tgen
};
//SIG(1 S20303C1) C1{ VBC2{ v6 v7 v8 v9 v10 v11 Fc Fi Fp} BC3{ BC4{ v12 v13 Fc Fp} VBC5{ v14 Fi FC6{ v27 v28 v29 v30 v31}} v15 v16 v17 v18 v19 v20 v21 v22 Fi[2]} v1 v2 v3 v4 v5 FC7{ v23 v24 v25 v26 Fp}}


void  S20303C1 ::v1(){vfunc_called(this, "_ZN8S20303C12v1Ev");}
void  S20303C1 ::v2(){vfunc_called(this, "_ZN8S20303C12v2Ev");}
void  S20303C1 ::v3(){vfunc_called(this, "_ZN8S20303C12v3Ev");}
void  S20303C1 ::v4(){vfunc_called(this, "_ZN8S20303C12v4Ev");}
void  S20303C1 ::v5(){vfunc_called(this, "_ZN8S20303C12v5Ev");}
S20303C1 ::~S20303C1(){ note_dtor("S20303C1", this);} // tgen
S20303C1 ::S20303C1(){ note_ctor("S20303C1", this);} // tgen

static void Test_S20303C1()
{
  extern Class_Descriptor cd_S20303C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S20303C1, buf);
    S20303C1 *dp, &lv = *(dp=new (buf) S20303C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S20303C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20303C1)");
    check_base_class_offset(lv, (S20303C2*), ABISELECT(48,28), "S20303C1");
    check_base_class_offset(lv, (S20303C4*)(S20303C3*), 0, "S20303C1");
    check_base_class_offset(lv, (S20303C5*)(S20303C3*), ABISELECT(72,44), "S20303C1");
    check_base_class_offset(lv, (S20303C3*), 0, "S20303C1");
    check_field_offset(lv, s20303c1f0, ABISELECT(32,20), "S20303C1.s20303c1f0");
    test_class_info(&lv, &cd_S20303C1);
    dp->~S20303C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20303C1(Test_S20303C1, "S20303C1", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN8S20303C1C1Ev();
extern void _ZN8S20303C1D1Ev();
Name_Map name_map_S20303C1[] = {
  NSPAIR(_ZN8S20303C1C1Ev),
  NSPAIR(_ZN8S20303C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20303C2;
extern VTBL_ENTRY _ZTI8S20303C2[];
extern  VTBL_ENTRY _ZTV8S20303C2[];
extern Class_Descriptor cd_S20303C4;
extern VTBL_ENTRY _ZTI8S20303C4[];
extern  VTBL_ENTRY _ZTV8S20303C4[];
extern Class_Descriptor cd_S20303C5;
extern VTBL_ENTRY _ZTI8S20303C5[];
extern  VTBL_ENTRY _ZTV8S20303C5[];
extern Class_Descriptor cd_S20303C3;
extern VTBL_ENTRY _ZTI8S20303C3[];
extern  VTBL_ENTRY _ZTV8S20303C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20303C3[];
static Base_Class bases_S20303C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20303C2,    ABISELECT(48,28), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //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_S20303C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20303C5,    ABISELECT(72,44), //bcp->offset
    33, //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_S20303C3,    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 _ZTI8S20303C1[];
extern void _ZN8S20303C43v12Ev();
extern void _ZN8S20303C43v13Ev();
extern void _ZN8S20303C33v15Ev();
extern void _ZN8S20303C33v16Ev();
extern void _ZN8S20303C33v17Ev();
extern void _ZN8S20303C33v18Ev();
extern void _ZN8S20303C33v19Ev();
extern void _ZN8S20303C33v20Ev();
extern void _ZN8S20303C33v21Ev();
extern void _ZN8S20303C33v22Ev();
extern void _ZN8S20303C12v1Ev();
extern void _ZN8S20303C12v2Ev();
extern void _ZN8S20303C12v3Ev();
extern void _ZN8S20303C12v4Ev();
extern void _ZN8S20303C12v5Ev();
extern void _ZN8S20303C22v6Ev();
extern void _ZN8S20303C22v7Ev();
extern void _ZN8S20303C22v8Ev();
extern void _ZN8S20303C22v9Ev();
extern void _ZN8S20303C23v10Ev();
extern void _ZN8S20303C23v11Ev();
extern void _ZN8S20303C53v14Ev();
static  VTBL_ENTRY vtc_S20303C1[] = {
  ABISELECT(48,28),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C1[0]),
  (VTBL_ENTRY)&_ZN8S20303C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20303C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v22Ev,
  (VTBL_ENTRY)&_ZN8S20303C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20303C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20303C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20303C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20303C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20303C1[0]),
  (VTBL_ENTRY)&_ZN8S20303C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20303C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20303C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20303C23v11Ev,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20303C1[0]),
  (VTBL_ENTRY)&_ZN8S20303C53v14Ev,
};
extern VTBL_ENTRY _ZTV8S20303C1[];
extern void _ZN8S20303C43v12Ev();
extern void _ZN8S20303C43v13Ev();
extern void _ZN8S20303C33v15Ev();
extern void _ZN8S20303C33v16Ev();
extern void _ZN8S20303C33v17Ev();
extern void _ZN8S20303C33v18Ev();
extern void _ZN8S20303C33v19Ev();
extern void _ZN8S20303C33v20Ev();
extern void _ZN8S20303C33v21Ev();
extern void _ZN8S20303C33v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20303C3__8S20303C1[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20303C3[0]),
  (VTBL_ENTRY)&_ZN8S20303C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20303C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v20Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v21Ev,
  (VTBL_ENTRY)&_ZN8S20303C33v22Ev,
};
extern void _ZN8S20303C53v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20303C5__8S20303C3__8S20303C1[] = {
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20303C3[0]),
  (VTBL_ENTRY)&_ZN8S20303C53v14Ev,
};
static  VTT_ENTRY vtt_S20303C1[] = {
  {&(_ZTV8S20303C1[4]),  4,37},
  {&(_tg__ZTV8S20303C3__8S20303C1[3]),  3,13},
  {&(_tg__ZTV8S20303C5__8S20303C3__8S20303C1[3]),  3,4},
  {&(_ZTV8S20303C1[27]),  27,37},
  {&(_ZTV8S20303C1[36]),  36,37},
};
extern VTBL_ENTRY _ZTI8S20303C1[];
extern  VTBL_ENTRY _ZTV8S20303C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20303C1[];
Class_Descriptor cd_S20303C1 = {  "S20303C1", // class name
  bases_S20303C1, 4,
  &(vtc_S20303C1[0]), // expected_vtbl_contents
  &(vtt_S20303C1[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI8S20303C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20303C1),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20303C1),5, //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  S7138C2_nt  {
  int s7138c2f0;
  virtual void  v8(); // _ZN10S7138C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7138C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7138C2_nt3v10Ev
  virtual void  v11(); // _ZN10S7138C2_nt3v11Ev
  virtual void  v12(); // _ZN10S7138C2_nt3v12Ev
  virtual void  v13(); // _ZN10S7138C2_nt3v13Ev
  ~S7138C2_nt(); // tgen
  S7138C2_nt(); // tgen
};
//SIG(-1 S7138C2_nt) C1{ v1 v2 v3 v4 v5 v6 Fi}


void  S7138C2_nt ::v8(){vfunc_called(this, "_ZN10S7138C2_nt2v8Ev");}
void  S7138C2_nt ::v9(){vfunc_called(this, "_ZN10S7138C2_nt2v9Ev");}
void  S7138C2_nt ::v10(){vfunc_called(this, "_ZN10S7138C2_nt3v10Ev");}
void  S7138C2_nt ::v11(){vfunc_called(this, "_ZN10S7138C2_nt3v11Ev");}
void  S7138C2_nt ::v12(){vfunc_called(this, "_ZN10S7138C2_nt3v12Ev");}
void  S7138C2_nt ::v13(){vfunc_called(this, "_ZN10S7138C2_nt3v13Ev");}
S7138C2_nt ::~S7138C2_nt(){ note_dtor("S7138C2_nt", this);} // tgen
S7138C2_nt ::S7138C2_nt(){ note_ctor("S7138C2_nt", this);} // tgen

//skip512 S7138C2_nt

#else // __cplusplus

extern void _ZN10S7138C2_ntC1Ev();
extern void _ZN10S7138C2_ntD1Ev();
Name_Map name_map_S7138C2_nt[] = {
  NSPAIR(_ZN10S7138C2_ntC1Ev),
  NSPAIR(_ZN10S7138C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7138C2_nt[];
extern void _ZN10S7138C2_nt2v8Ev();
extern void _ZN10S7138C2_nt2v9Ev();
extern void _ZN10S7138C2_nt3v10Ev();
extern void _ZN10S7138C2_nt3v11Ev();
extern void _ZN10S7138C2_nt3v12Ev();
extern void _ZN10S7138C2_nt3v13Ev();
static  VTBL_ENTRY vtc_S7138C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7138C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI10S7138C2_nt[];
VTBL_ENTRY *P__ZTI10S7138C2_nt = _ZTI10S7138C2_nt; 
extern  VTBL_ENTRY _ZTV10S7138C2_nt[];
Class_Descriptor cd_S7138C2_nt = {  "S7138C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7138C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7138C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7138C2_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  S7138C3_nt  {
  char s7138c3f0;
  virtual void  v14(); // _ZN10S7138C3_nt3v14Ev
  virtual void  v15(); // _ZN10S7138C3_nt3v15Ev
  virtual void  v16(); // _ZN10S7138C3_nt3v16Ev
  virtual void  v17(); // _ZN10S7138C3_nt3v17Ev
  ~S7138C3_nt(); // tgen
  S7138C3_nt(); // tgen
};
//SIG(-1 S7138C3_nt) C1{ v1 v2 v3 v4 Fc}


void  S7138C3_nt ::v14(){vfunc_called(this, "_ZN10S7138C3_nt3v14Ev");}
void  S7138C3_nt ::v15(){vfunc_called(this, "_ZN10S7138C3_nt3v15Ev");}
void  S7138C3_nt ::v16(){vfunc_called(this, "_ZN10S7138C3_nt3v16Ev");}
void  S7138C3_nt ::v17(){vfunc_called(this, "_ZN10S7138C3_nt3v17Ev");}
S7138C3_nt ::~S7138C3_nt(){ note_dtor("S7138C3_nt", this);} // tgen
S7138C3_nt ::S7138C3_nt(){ note_ctor("S7138C3_nt", this);} // tgen

//skip512 S7138C3_nt

#else // __cplusplus

extern void _ZN10S7138C3_ntC1Ev();
extern void _ZN10S7138C3_ntD1Ev();
Name_Map name_map_S7138C3_nt[] = {
  NSPAIR(_ZN10S7138C3_ntC1Ev),
  NSPAIR(_ZN10S7138C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7138C3_nt[];
extern void _ZN10S7138C3_nt3v14Ev();
extern void _ZN10S7138C3_nt3v15Ev();
extern void _ZN10S7138C3_nt3v16Ev();
extern void _ZN10S7138C3_nt3v17Ev();
static  VTBL_ENTRY vtc_S7138C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7138C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v17Ev,
};
extern VTBL_ENTRY _ZTI10S7138C3_nt[];
VTBL_ENTRY *P__ZTI10S7138C3_nt = _ZTI10S7138C3_nt; 
extern  VTBL_ENTRY _ZTV10S7138C3_nt[];
Class_Descriptor cd_S7138C3_nt = {  "S7138C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7138C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7138C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7138C3_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  S7138C4  {
  char s7138c4f0;
  virtual void  v18(); // _ZN7S7138C43v18Ev
  virtual void  v19(); // _ZN7S7138C43v19Ev
  virtual void  v20(); // _ZN7S7138C43v20Ev
  virtual void  v21(); // _ZN7S7138C43v21Ev
  virtual void  v22(); // _ZN7S7138C43v22Ev
  virtual void  v23(); // _ZN7S7138C43v23Ev
  ~S7138C4(); // tgen
  S7138C4(); // tgen
};
//SIG(-1 S7138C4) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S7138C4 ::v18(){vfunc_called(this, "_ZN7S7138C43v18Ev");}
void  S7138C4 ::v19(){vfunc_called(this, "_ZN7S7138C43v19Ev");}
void  S7138C4 ::v20(){vfunc_called(this, "_ZN7S7138C43v20Ev");}
void  S7138C4 ::v21(){vfunc_called(this, "_ZN7S7138C43v21Ev");}
void  S7138C4 ::v22(){vfunc_called(this, "_ZN7S7138C43v22Ev");}
void  S7138C4 ::v23(){vfunc_called(this, "_ZN7S7138C43v23Ev");}
S7138C4 ::~S7138C4(){ note_dtor("S7138C4", this);} // tgen
S7138C4 ::S7138C4(){ note_ctor("S7138C4", this);} // tgen

static void Test_S7138C4()
{
  extern Class_Descriptor cd_S7138C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7138C4, buf);
    S7138C4 *dp, &lv = *(dp=new (buf) S7138C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7138C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7138C4)");
    check_field_offset(lv, s7138c4f0, ABISELECT(8,4), "S7138C4.s7138c4f0");
    test_class_info(&lv, &cd_S7138C4);
    dp->~S7138C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7138C4(Test_S7138C4, "S7138C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7138C4C1Ev();
extern void _ZN7S7138C4D1Ev();
Name_Map name_map_S7138C4[] = {
  NSPAIR(_ZN7S7138C4C1Ev),
  NSPAIR(_ZN7S7138C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7138C4[];
extern void _ZN7S7138C43v18Ev();
extern void _ZN7S7138C43v19Ev();
extern void _ZN7S7138C43v20Ev();
extern void _ZN7S7138C43v21Ev();
extern void _ZN7S7138C43v22Ev();
extern void _ZN7S7138C43v23Ev();
static  VTBL_ENTRY vtc_S7138C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7138C4[0]),
  (VTBL_ENTRY)&_ZN7S7138C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v23Ev,
};
extern VTBL_ENTRY _ZTI7S7138C4[];
extern  VTBL_ENTRY _ZTV7S7138C4[];
Class_Descriptor cd_S7138C4 = {  "S7138C4", // class name
  0,0,//no base classes
  &(vtc_S7138C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7138C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7138C4),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  S7138C5  : S7138C4 , S7138C3_nt , virtual S7138C2_nt {
  int s7138c5f0;
  virtual void  v24(); // _ZN7S7138C53v24Ev
  virtual void  v25(); // _ZN7S7138C53v25Ev
  virtual void  v26(); // _ZN7S7138C53v26Ev
  virtual void  v27(); // _ZN7S7138C53v27Ev
  virtual void  v28(); // _ZN7S7138C53v28Ev
  virtual void  v29(); // _ZN7S7138C53v29Ev
  virtual void  v30(); // _ZN7S7138C53v30Ev
  virtual void  v31(); // _ZN7S7138C53v31Ev
  virtual void  v32(); // _ZN7S7138C53v32Ev
  ~S7138C5(); // tgen
  S7138C5(); // tgen
};
//SIG(-1 S7138C5) C1{ BC2{ v10 v11 v12 v13 v14 v15 Fc} BC3{ v16 v17 v18 v19 Fc} VBC4{ v20 v21 v22 v23 v24 v25 Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


void  S7138C5 ::v24(){vfunc_called(this, "_ZN7S7138C53v24Ev");}
void  S7138C5 ::v25(){vfunc_called(this, "_ZN7S7138C53v25Ev");}
void  S7138C5 ::v26(){vfunc_called(this, "_ZN7S7138C53v26Ev");}
void  S7138C5 ::v27(){vfunc_called(this, "_ZN7S7138C53v27Ev");}
void  S7138C5 ::v28(){vfunc_called(this, "_ZN7S7138C53v28Ev");}
void  S7138C5 ::v29(){vfunc_called(this, "_ZN7S7138C53v29Ev");}
void  S7138C5 ::v30(){vfunc_called(this, "_ZN7S7138C53v30Ev");}
void  S7138C5 ::v31(){vfunc_called(this, "_ZN7S7138C53v31Ev");}
void  S7138C5 ::v32(){vfunc_called(this, "_ZN7S7138C53v32Ev");}
S7138C5 ::~S7138C5(){ note_dtor("S7138C5", this);} // tgen
S7138C5 ::S7138C5(){ note_ctor("S7138C5", this);} // tgen

static void Test_S7138C5()
{
  extern Class_Descriptor cd_S7138C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S7138C5, buf);
    S7138C5 *dp, &lv = *(dp=new (buf) S7138C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S7138C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7138C5)");
    check_base_class_offset(lv, (S7138C4*), 0, "S7138C5");
    check_base_class_offset(lv, (S7138C3_nt*), ABISELECT(16,8), "S7138C5");
    check_base_class_offset(lv, (S7138C2_nt*), ABISELECT(32,20), "S7138C5");
    check_field_offset(lv, s7138c5f0, ABISELECT(28,16), "S7138C5.s7138c5f0");
    test_class_info(&lv, &cd_S7138C5);
    dp->~S7138C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7138C5(Test_S7138C5, "S7138C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S7138C5C1Ev();
extern void _ZN7S7138C5D1Ev();
Name_Map name_map_S7138C5[] = {
  NSPAIR(_ZN7S7138C5C1Ev),
  NSPAIR(_ZN7S7138C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7138C4;
extern VTBL_ENTRY _ZTI7S7138C4[];
extern  VTBL_ENTRY _ZTV7S7138C4[];
extern Class_Descriptor cd_S7138C3_nt;
extern VTBL_ENTRY _ZTI10S7138C3_nt[];
extern  VTBL_ENTRY _ZTV10S7138C3_nt[];
extern Class_Descriptor cd_S7138C2_nt;
extern VTBL_ENTRY _ZTI10S7138C2_nt[];
extern  VTBL_ENTRY _ZTV10S7138C2_nt[];
static Base_Class bases_S7138C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7138C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7138C3_nt,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7138C2_nt,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //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 _ZTI7S7138C5[];
extern void _ZN7S7138C43v18Ev();
extern void _ZN7S7138C43v19Ev();
extern void _ZN7S7138C43v20Ev();
extern void _ZN7S7138C43v21Ev();
extern void _ZN7S7138C43v22Ev();
extern void _ZN7S7138C43v23Ev();
extern void _ZN7S7138C53v24Ev();
extern void _ZN7S7138C53v25Ev();
extern void _ZN7S7138C53v26Ev();
extern void _ZN7S7138C53v27Ev();
extern void _ZN7S7138C53v28Ev();
extern void _ZN7S7138C53v29Ev();
extern void _ZN7S7138C53v30Ev();
extern void _ZN7S7138C53v31Ev();
extern void _ZN7S7138C53v32Ev();
extern void _ZN10S7138C3_nt3v14Ev();
extern void _ZN10S7138C3_nt3v15Ev();
extern void _ZN10S7138C3_nt3v16Ev();
extern void _ZN10S7138C3_nt3v17Ev();
extern void _ZN10S7138C2_nt2v8Ev();
extern void _ZN10S7138C2_nt2v9Ev();
extern void _ZN10S7138C2_nt3v10Ev();
extern void _ZN10S7138C2_nt3v11Ev();
extern void _ZN10S7138C2_nt3v12Ev();
extern void _ZN10S7138C2_nt3v13Ev();
static  VTBL_ENTRY vtc_S7138C5[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7138C5[0]),
  (VTBL_ENTRY)&_ZN7S7138C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v27Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v28Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v29Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v30Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v32Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7138C5[0]),
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7138C5[0]),
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV7S7138C5[];
static  VTT_ENTRY vtt_S7138C5[] = {
  {&(_ZTV7S7138C5[3]),  3,38},
  {&(_ZTV7S7138C5[32]),  32,38},
};
extern VTBL_ENTRY _ZTI7S7138C5[];
extern  VTBL_ENTRY _ZTV7S7138C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7138C5[];
Class_Descriptor cd_S7138C5 = {  "S7138C5", // class name
  bases_S7138C5, 3,
  &(vtc_S7138C5[0]), // expected_vtbl_contents
  &(vtt_S7138C5[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S7138C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7138C5),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7138C5),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  S7138C1  : S7138C2_nt , virtual S7138C3_nt , virtual S7138C4 , virtual S7138C5 {
  char s7138c1f0:4;
  virtual void  v1(); // _ZN7S7138C12v1Ev
  virtual void  v2(); // _ZN7S7138C12v2Ev
  virtual void  v3(); // _ZN7S7138C12v3Ev
  virtual void  v4(); // _ZN7S7138C12v4Ev
  virtual void  v5(); // _ZN7S7138C12v5Ev
  virtual void  v6(); // _ZN7S7138C12v6Ev
  virtual void  v7(); // _ZN7S7138C12v7Ev
  ~S7138C1(); // tgen
  S7138C1(); // tgen
};
//SIG(1 S7138C1) C1{ BC2{ v8 v9 v10 v11 v12 v13 Fi} VBC3{ v14 v15 v16 v17 Fc} VBC4{ v18 v19 v20 v21 v22 v23 Fc} VBC5{ BC4 BC3 VBC2 v24 v25 v26 v27 v28 v29 v30 v31 v32 Fi} v1 v2 v3 v4 v5 v6 v7 Fc:4}


void  S7138C1 ::v1(){vfunc_called(this, "_ZN7S7138C12v1Ev");}
void  S7138C1 ::v2(){vfunc_called(this, "_ZN7S7138C12v2Ev");}
void  S7138C1 ::v3(){vfunc_called(this, "_ZN7S7138C12v3Ev");}
void  S7138C1 ::v4(){vfunc_called(this, "_ZN7S7138C12v4Ev");}
void  S7138C1 ::v5(){vfunc_called(this, "_ZN7S7138C12v5Ev");}
void  S7138C1 ::v6(){vfunc_called(this, "_ZN7S7138C12v6Ev");}
void  S7138C1 ::v7(){vfunc_called(this, "_ZN7S7138C12v7Ev");}
S7138C1 ::~S7138C1(){ note_dtor("S7138C1", this);} // tgen
S7138C1 ::S7138C1(){ note_ctor("S7138C1", this);} // tgen

static void Test_S7138C1()
{
  extern Class_Descriptor cd_S7138C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S7138C1, buf);
    S7138C1 *dp, &lv = *(dp=new (buf) S7138C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S7138C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7138C1)");
    /*is_ambiguous_... S7138C1::S7138C2_nt */ AMB_check_base_class_offset(lv, (S7138C2_nt*), 0, "S7138C1");
    /*is_ambiguous_... S7138C1::S7138C3_nt */ AMB_check_base_class_offset(lv, (S7138C3_nt*), ABISELECT(16,12), "S7138C1");
    /*is_ambiguous_... S7138C1::S7138C4 */ AMB_check_base_class_offset(lv, (S7138C4*), ABISELECT(32,20), "S7138C1");
    check_base_class_offset(lv, (S7138C4*)(S7138C5*), ABISELECT(48,28), "S7138C1");
    check_base_class_offset(lv, (S7138C3_nt*)(S7138C5*), ABISELECT(64,36), "S7138C1");
    check_base_class_offset(lv, (S7138C2_nt*)(S7138C5*), ABISELECT(80,48), "S7138C1");
    check_base_class_offset(lv, (S7138C5*), ABISELECT(48,28), "S7138C1");
    set_bf_and_test(lv, s7138c1f0, ABISELECT(12,8), 0, 4, 1, "S7138C1");
    set_bf_and_test(lv, s7138c1f0, ABISELECT(12,8), 0, 4, hide_sll(1LL<<3), "S7138C1");
    test_class_info(&lv, &cd_S7138C1);
    dp->~S7138C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7138C1(Test_S7138C1, "S7138C1", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S7138C1C1Ev();
extern void _ZN7S7138C1D1Ev();
Name_Map name_map_S7138C1[] = {
  NSPAIR(_ZN7S7138C1C1Ev),
  NSPAIR(_ZN7S7138C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7138C2_nt;
extern VTBL_ENTRY _ZTI10S7138C2_nt[];
extern  VTBL_ENTRY _ZTV10S7138C2_nt[];
extern Class_Descriptor cd_S7138C3_nt;
extern VTBL_ENTRY _ZTI10S7138C3_nt[];
extern  VTBL_ENTRY _ZTV10S7138C3_nt[];
extern Class_Descriptor cd_S7138C4;
extern VTBL_ENTRY _ZTI7S7138C4[];
extern  VTBL_ENTRY _ZTV7S7138C4[];
extern Class_Descriptor cd_S7138C4;
extern VTBL_ENTRY _ZTI7S7138C4[];
extern  VTBL_ENTRY _ZTV7S7138C4[];
extern Class_Descriptor cd_S7138C3_nt;
extern VTBL_ENTRY _ZTI10S7138C3_nt[];
extern  VTBL_ENTRY _ZTV10S7138C3_nt[];
extern Class_Descriptor cd_S7138C2_nt;
extern VTBL_ENTRY _ZTI10S7138C2_nt[];
extern  VTBL_ENTRY _ZTV10S7138C2_nt[];
extern Class_Descriptor cd_S7138C5;
extern VTBL_ENTRY _ZTI7S7138C5[];
extern  VTBL_ENTRY _ZTV7S7138C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7138C5[];
static Base_Class bases_S7138C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7138C2_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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7138C3_nt,    ABISELECT(16,12), //bcp->offset
    19, //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_S7138C4,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //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},
  {&cd_S7138C4,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7138C3_nt,    ABISELECT(64,36), //bcp->offset
    80, //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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7138C2_nt,    ABISELECT(80,48), //bcp->offset
    86, //bcp->virtual_function_table_offset
    8, //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_S7138C5,    ABISELECT(48,28), //bcp->offset
    43, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7138C1[];
extern void _ZN10S7138C2_nt2v8Ev();
extern void _ZN10S7138C2_nt2v9Ev();
extern void _ZN10S7138C2_nt3v10Ev();
extern void _ZN10S7138C2_nt3v11Ev();
extern void _ZN10S7138C2_nt3v12Ev();
extern void _ZN10S7138C2_nt3v13Ev();
extern void _ZN7S7138C12v1Ev();
extern void _ZN7S7138C12v2Ev();
extern void _ZN7S7138C12v3Ev();
extern void _ZN7S7138C12v4Ev();
extern void _ZN7S7138C12v5Ev();
extern void _ZN7S7138C12v6Ev();
extern void _ZN7S7138C12v7Ev();
extern void _ZN10S7138C3_nt3v14Ev();
extern void _ZN10S7138C3_nt3v15Ev();
extern void _ZN10S7138C3_nt3v16Ev();
extern void _ZN10S7138C3_nt3v17Ev();
extern void _ZN7S7138C43v18Ev();
extern void _ZN7S7138C43v19Ev();
extern void _ZN7S7138C43v20Ev();
extern void _ZN7S7138C43v21Ev();
extern void _ZN7S7138C43v22Ev();
extern void _ZN7S7138C43v23Ev();
extern void _ZN7S7138C43v18Ev();
extern void _ZN7S7138C43v19Ev();
extern void _ZN7S7138C43v20Ev();
extern void _ZN7S7138C43v21Ev();
extern void _ZN7S7138C43v22Ev();
extern void _ZN7S7138C43v23Ev();
extern void _ZN7S7138C53v24Ev();
extern void _ZN7S7138C53v25Ev();
extern void _ZN7S7138C53v26Ev();
extern void _ZN7S7138C53v27Ev();
extern void _ZN7S7138C53v28Ev();
extern void _ZN7S7138C53v29Ev();
extern void _ZN7S7138C53v30Ev();
extern void _ZN7S7138C53v31Ev();
extern void _ZN7S7138C53v32Ev();
extern void _ZN10S7138C3_nt3v14Ev();
extern void _ZN10S7138C3_nt3v15Ev();
extern void _ZN10S7138C3_nt3v16Ev();
extern void _ZN10S7138C3_nt3v17Ev();
extern void _ZN10S7138C2_nt2v8Ev();
extern void _ZN10S7138C2_nt2v9Ev();
extern void _ZN10S7138C2_nt3v10Ev();
extern void _ZN10S7138C2_nt3v11Ev();
extern void _ZN10S7138C2_nt3v12Ev();
extern void _ZN10S7138C2_nt3v13Ev();
static  VTBL_ENTRY vtc_S7138C1[] = {
  ABISELECT(80,48),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7138C12v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN7S7138C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v23Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN7S7138C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v27Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v28Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v29Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v30Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v32Ev,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7138C3_nt3v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7138C1[0]),
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v13Ev,
};
extern VTBL_ENTRY _ZTV7S7138C1[];
extern void _ZN7S7138C43v18Ev();
extern void _ZN7S7138C43v19Ev();
extern void _ZN7S7138C43v20Ev();
extern void _ZN7S7138C43v21Ev();
extern void _ZN7S7138C43v22Ev();
extern void _ZN7S7138C43v23Ev();
extern void _ZN7S7138C53v24Ev();
extern void _ZN7S7138C53v25Ev();
extern void _ZN7S7138C53v26Ev();
extern void _ZN7S7138C53v27Ev();
extern void _ZN7S7138C53v28Ev();
extern void _ZN7S7138C53v29Ev();
extern void _ZN7S7138C53v30Ev();
extern void _ZN7S7138C53v31Ev();
extern void _ZN7S7138C53v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7138C5__7S7138C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7138C5[0]),
  (VTBL_ENTRY)&_ZN7S7138C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7138C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v27Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v28Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v29Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v30Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v31Ev,
  (VTBL_ENTRY)&_ZN7S7138C53v32Ev,
};
extern void _ZN10S7138C2_nt2v8Ev();
extern void _ZN10S7138C2_nt2v9Ev();
extern void _ZN10S7138C2_nt3v10Ev();
extern void _ZN10S7138C2_nt3v11Ev();
extern void _ZN10S7138C2_nt3v12Ev();
extern void _ZN10S7138C2_nt3v13Ev();
static  VTBL_ENTRY _tg__ZTV10S7138C2_nt__7S7138C5__7S7138C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7138C5[0]),
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7138C2_nt3v13Ev,
};
static  VTT_ENTRY vtt_S7138C1[] = {
  {&(_ZTV7S7138C1[6]),  6,100},
  {&(_ZTV7S7138C1[25]),  25,100},
  {&(_ZTV7S7138C1[37]),  37,100},
  {&(_ZTV7S7138C1[65]),  65,100},
  {&(_ZTV7S7138C1[82]),  82,100},
  {&(_ZTV7S7138C1[94]),  94,100},
  {&(_tg__ZTV7S7138C5__7S7138C1[3]),  3,18},
  {&(_tg__ZTV10S7138C2_nt__7S7138C5__7S7138C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S7138C1[];
extern  VTBL_ENTRY _ZTV7S7138C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7138C1[];
Class_Descriptor cd_S7138C1 = {  "S7138C1", // class name
  bases_S7138C1, 7,
  &(vtc_S7138C1[0]), // expected_vtbl_contents
  &(vtt_S7138C1[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S7138C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7138C1),100, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7138C1),8, //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  S20038C2  {
  short s20038c2f0[6];
  virtual void  v2(); // _ZN8S20038C22v2Ev
  virtual void  v3(); // _ZN8S20038C22v3Ev
  ~S20038C2(); // tgen
  S20038C2(); // tgen
};
//SIG(-1 S20038C2) C1{ v1 v2 Fs[6]}


void  S20038C2 ::v2(){vfunc_called(this, "_ZN8S20038C22v2Ev");}
void  S20038C2 ::v3(){vfunc_called(this, "_ZN8S20038C22v3Ev");}
S20038C2 ::~S20038C2(){ note_dtor("S20038C2", this);} // tgen
S20038C2 ::S20038C2(){ note_ctor("S20038C2", this);} // tgen

static void Test_S20038C2()
{
  extern Class_Descriptor cd_S20038C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20038C2, buf);
    S20038C2 *dp, &lv = *(dp=new (buf) S20038C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20038C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C2)");
    check_field_offset(lv, s20038c2f0, ABISELECT(8,4), "S20038C2.s20038c2f0");
    test_class_info(&lv, &cd_S20038C2);
    dp->~S20038C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C2(Test_S20038C2, "S20038C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20038C2C1Ev();
extern void _ZN8S20038C2D1Ev();
Name_Map name_map_S20038C2[] = {
  NSPAIR(_ZN8S20038C2C1Ev),
  NSPAIR(_ZN8S20038C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20038C2[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY vtc_S20038C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C2[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
Class_Descriptor cd_S20038C2 = {  "S20038C2", // class name
  0,0,//no base classes
  &(vtc_S20038C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20038C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20038C2),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  S20038C4  : S20038C2 {
  short s20038c4f0[9];
  __tsi64 s20038c4f1;
  virtual void  v4(); // _ZN8S20038C42v4Ev
  virtual void  v5(); // _ZN8S20038C42v5Ev
  virtual void  v6(); // _ZN8S20038C42v6Ev
  virtual void  v7(); // _ZN8S20038C42v7Ev
  virtual void  v8(); // _ZN8S20038C42v8Ev
  virtual void  v9(); // _ZN8S20038C42v9Ev
  ~S20038C4(); // tgen
  S20038C4(); // tgen
};
//SIG(-1 S20038C4) C1{ BC2{ v7 v8 Fs[6]} v1 v2 v3 v4 v5 v6 Fs[9] FL}


void  S20038C4 ::v4(){vfunc_called(this, "_ZN8S20038C42v4Ev");}
void  S20038C4 ::v5(){vfunc_called(this, "_ZN8S20038C42v5Ev");}
void  S20038C4 ::v6(){vfunc_called(this, "_ZN8S20038C42v6Ev");}
void  S20038C4 ::v7(){vfunc_called(this, "_ZN8S20038C42v7Ev");}
void  S20038C4 ::v8(){vfunc_called(this, "_ZN8S20038C42v8Ev");}
void  S20038C4 ::v9(){vfunc_called(this, "_ZN8S20038C42v9Ev");}
S20038C4 ::~S20038C4(){ note_dtor("S20038C4", this);} // tgen
S20038C4 ::S20038C4(){ note_ctor("S20038C4", this);} // tgen

static void Test_S20038C4()
{
  extern Class_Descriptor cd_S20038C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20038C4, buf);
    S20038C4 *dp, &lv = *(dp=new (buf) S20038C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20038C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C4)");
    check_base_class_offset(lv, (S20038C2*), 0, "S20038C4");
    check_field_offset(lv, s20038c4f0, ABISELECT(20,16), "S20038C4.s20038c4f0");
    check_field_offset(lv, s20038c4f1, ABISELECT(40,36), "S20038C4.s20038c4f1");
    test_class_info(&lv, &cd_S20038C4);
    dp->~S20038C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C4(Test_S20038C4, "S20038C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20038C4C1Ev();
extern void _ZN8S20038C4D1Ev();
Name_Map name_map_S20038C4[] = {
  NSPAIR(_ZN8S20038C4C1Ev),
  NSPAIR(_ZN8S20038C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
static Base_Class bases_S20038C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20038C4[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY vtc_S20038C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C4[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
Class_Descriptor cd_S20038C4 = {  "S20038C4", // class name
  bases_S20038C4, 1,
  &(vtc_S20038C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20038C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20038C4),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20038C6  : S20038C2 {
  void *s20038c6f0;
  virtual void  v10(); // _ZN8S20038C63v10Ev
  virtual void  v11(); // _ZN8S20038C63v11Ev
  ~S20038C6(); // tgen
  S20038C6(); // tgen
};
//SIG(-1 S20038C6) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S20038C6 ::v10(){vfunc_called(this, "_ZN8S20038C63v10Ev");}
void  S20038C6 ::v11(){vfunc_called(this, "_ZN8S20038C63v11Ev");}
S20038C6 ::~S20038C6(){ note_dtor("S20038C6", this);} // tgen
S20038C6 ::S20038C6(){ note_ctor("S20038C6", this);} // tgen

static void Test_S20038C6()
{
  extern Class_Descriptor cd_S20038C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20038C6, buf);
    S20038C6 *dp, &lv = *(dp=new (buf) S20038C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20038C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C6)");
    check_base_class_offset(lv, (S20038C2*), 0, "S20038C6");
    check_field_offset(lv, s20038c6f0, ABISELECT(24,16), "S20038C6.s20038c6f0");
    test_class_info(&lv, &cd_S20038C6);
    dp->~S20038C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C6(Test_S20038C6, "S20038C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20038C6C1Ev();
extern void _ZN8S20038C6D1Ev();
Name_Map name_map_S20038C6[] = {
  NSPAIR(_ZN8S20038C6C1Ev),
  NSPAIR(_ZN8S20038C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
static Base_Class bases_S20038C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20038C6[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY vtc_S20038C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C6[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
Class_Descriptor cd_S20038C6 = {  "S20038C6", // class name
  bases_S20038C6, 1,
  &(vtc_S20038C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20038C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20038C6),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  S20038C5  : S20038C6 , virtual S20038C4 , virtual S20038C2 {
  virtual void  v12(); // _ZN8S20038C53v12Ev
  virtual void  v13(); // _ZN8S20038C53v13Ev
  virtual void  v14(); // _ZN8S20038C53v14Ev
  virtual void  v15(); // _ZN8S20038C53v15Ev
  virtual void  v16(); // _ZN8S20038C53v16Ev
  ~S20038C5(); // tgen
  S20038C5(); // tgen
};
//SIG(-1 S20038C5) C1{ BC2{ BC3{ v6 v7 Fs[6]} v8 v9 Fp} VBC4{ BC3 v10 v11 v12 v13 v14 v15 Fs[9] FL} VBC3 v1 v2 v3 v4 v5}


void  S20038C5 ::v12(){vfunc_called(this, "_ZN8S20038C53v12Ev");}
void  S20038C5 ::v13(){vfunc_called(this, "_ZN8S20038C53v13Ev");}
void  S20038C5 ::v14(){vfunc_called(this, "_ZN8S20038C53v14Ev");}
void  S20038C5 ::v15(){vfunc_called(this, "_ZN8S20038C53v15Ev");}
void  S20038C5 ::v16(){vfunc_called(this, "_ZN8S20038C53v16Ev");}
S20038C5 ::~S20038C5(){ note_dtor("S20038C5", this);} // tgen
S20038C5 ::S20038C5(){ note_ctor("S20038C5", this);} // tgen

static void Test_S20038C5()
{
  extern Class_Descriptor cd_S20038C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S20038C5, buf);
    S20038C5 *dp, &lv = *(dp=new (buf) S20038C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S20038C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C5)");
    check_base_class_offset(lv, (S20038C2*)(S20038C6*), 0, "S20038C5");
    check_base_class_offset(lv, (S20038C6*), 0, "S20038C5");
    check_base_class_offset(lv, (S20038C2*)(S20038C4*), ABISELECT(32,20), "S20038C5");
    check_base_class_offset(lv, (S20038C4*), ABISELECT(32,20), "S20038C5");
    /*is_ambiguous_... S20038C5::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*), ABISELECT(80,64), "S20038C5");
    test_class_info(&lv, &cd_S20038C5);
    dp->~S20038C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C5(Test_S20038C5, "S20038C5", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN8S20038C5C1Ev();
extern void _ZN8S20038C5D1Ev();
Name_Map name_map_S20038C5[] = {
  NSPAIR(_ZN8S20038C5C1Ev),
  NSPAIR(_ZN8S20038C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
static Base_Class bases_S20038C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20038C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20038C2,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //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_S20038C2,    ABISELECT(80,64), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //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 _ZTI8S20038C5[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY vtc_S20038C5[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S20038C5[];
static  VTT_ENTRY vtt_S20038C5[] = {
  {&(_ZTV8S20038C5[4]),  4,37},
  {&(_ZTV8S20038C5[23]),  23,37},
  {&(_ZTV8S20038C5[35]),  35,37},
};
extern VTBL_ENTRY _ZTI8S20038C5[];
extern  VTBL_ENTRY _ZTV8S20038C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C5[];
Class_Descriptor cd_S20038C5 = {  "S20038C5", // class name
  bases_S20038C5, 5,
  &(vtc_S20038C5[0]), // expected_vtbl_contents
  &(vtt_S20038C5[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI8S20038C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20038C5),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20038C5),3, //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  S20038C7  : S20038C4 , virtual S20038C2 , virtual S20038C5 , virtual S20038C6 {
  int s20038c7f0;
  virtual  ~S20038C7(); // _ZN8S20038C7D2Ev
  virtual void  v17(); // _ZN8S20038C73v17Ev
  S20038C7(); // tgen
};
//SIG(-1 S20038C7) C1{ BC2{ BC3{ v2 v3 Fs[6]} v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC3 VBC4{ BC5{ BC3 v10 v11 Fp} VBC2 VBC3 v12 v13 v14 v15 v16} VBC5 vd v1 Fi}


 S20038C7 ::~S20038C7(){ note_dtor("S20038C7", this);}
void  S20038C7 ::v17(){vfunc_called(this, "_ZN8S20038C73v17Ev");}
S20038C7 ::S20038C7(){ note_ctor("S20038C7", this);} // tgen

static void Test_S20038C7()
{
  extern Class_Descriptor cd_S20038C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,38)];
    init_test(&cd_S20038C7, buf);
    S20038C7 *dp, &lv = *(dp=new (buf) S20038C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,148), "sizeof(S20038C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C7)");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*), 0, "S20038C7");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C4*), 0, "S20038C7");
    /*is_ambiguous_... S20038C7::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*), ABISELECT(56,48), "S20038C7");
    /*is_ambiguous_... S20038C5::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C5*), ABISELECT(56,48), "S20038C7");
    check_base_class_offset(lv, (S20038C2*)(S20038C6*)(S20038C5*), ABISELECT(80,64), "S20038C7");
    check_base_class_offset(lv, (S20038C6*)(S20038C5*), ABISELECT(80,64), "S20038C7");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*), ABISELECT(112,84), "S20038C7");
    check_base_class_offset(lv, (S20038C4*)(S20038C5*), ABISELECT(112,84), "S20038C7");
    check_base_class_offset(lv, (S20038C5*), ABISELECT(80,64), "S20038C7");
    /*is_ambiguous_... S20038C7::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C6*), ABISELECT(160,128), "S20038C7");
    /*is_ambiguous_... S20038C7::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C6*), ABISELECT(160,128), "S20038C7");
    check_field_offset(lv, s20038c7f0, ABISELECT(48,44), "S20038C7.s20038c7f0");
    test_class_info(&lv, &cd_S20038C7);
    dp->~S20038C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C7(Test_S20038C7, "S20038C7", ABISELECT(192,148));

#else // __cplusplus

extern void _ZN8S20038C7C1Ev();
extern void _ZN8S20038C7D2Ev();
Name_Map name_map_S20038C7[] = {
  NSPAIR(_ZN8S20038C7C1Ev),
  NSPAIR(_ZN8S20038C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C5;
extern VTBL_ENTRY _ZTI8S20038C5[];
extern  VTBL_ENTRY _ZTV8S20038C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C5[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
static Base_Class bases_S20038C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20038C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20038C2,    ABISELECT(56,48), //bcp->offset
    17, //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_S20038C2,    ABISELECT(80,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(80,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20038C2,    ABISELECT(112,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(112,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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
    7, //immediately_derived
  0, 1},
  {&cd_S20038C5,    ABISELECT(80,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20038C2,    ABISELECT(160,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(160,128), //bcp->offset
    63, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20038C7[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C7D1Ev();
extern void _ZN8S20038C7D0Ev();
extern void _ZN8S20038C73v17Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY vtc_S20038C7[] = {
  ABISELECT(160,128),
  ABISELECT(112,84),
  ABISELECT(80,64),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
extern VTBL_ENTRY _ZTV8S20038C7[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C7[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__8S20038C5__8S20038C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A2__8S20038C5__8S20038C7[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
static  VTT_ENTRY vtt_S20038C7[] = {
  {&(_ZTV8S20038C7[6]),  6,73},
  {&(_ZTV8S20038C7[21]),  21,73},
  {&(_ZTV8S20038C7[36]),  36,73},
  {&(_ZTV8S20038C7[55]),  55,73},
  {&(_ZTV8S20038C7[69]),  69,73},
  {&(_tg__ZTV8S20038C5__8S20038C7[4]),  4,13},
  {&(_tg__ZTV8S20038C4__8S20038C5__8S20038C7[10]),  10,18},
  {&(_tg__ZTV8S20038C2__A2__8S20038C5__8S20038C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20038C7[];
extern  VTBL_ENTRY _ZTV8S20038C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C7[];
Class_Descriptor cd_S20038C7 = {  "S20038C7", // class name
  bases_S20038C7, 10,
  &(vtc_S20038C7[0]), // expected_vtbl_contents
  &(vtt_S20038C7[0]), // expected_vtt_contents
  ABISELECT(192,148), // object size
  NSPAIRA(_ZTI8S20038C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20038C7),73, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20038C7),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20038C3  : S20038C2 , virtual S20038C4 , virtual S20038C5 , virtual S20038C7 , S20038C6 {
  virtual  ~S20038C3(); // _ZN8S20038C3D2Ev
  virtual void  v18(); // _ZN8S20038C33v18Ev
  S20038C3(); // tgen
};
//SIG(-1 S20038C3) C1{ BC2{ v2 v3 Fs[6]} VBC3{ BC2 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC4{ BC5{ BC2 v10 v11 Fp} VBC3 VBC2 v12 v13 v14 v15 v16} VBC6{ BC3 VBC2 VBC4 VBC5 vd v17 Fi} BC5 vd v1}


 S20038C3 ::~S20038C3(){ note_dtor("S20038C3", this);}
void  S20038C3 ::v18(){vfunc_called(this, "_ZN8S20038C33v18Ev");}
S20038C3 ::S20038C3(){ note_ctor("S20038C3", this);} // tgen

static void Test_S20038C3()
{
  extern Class_Descriptor cd_S20038C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S20038C3, buf);
    S20038C3 *dp, &lv = *(dp=new (buf) S20038C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S20038C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C3)");
    /*is_ambiguous_... S20038C3::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*), 0, "S20038C3");
    /*is_ambiguous_... S20038C3::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*), ABISELECT(56,36), "S20038C3");
    /*is_ambiguous_... S20038C3::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C4*), ABISELECT(56,36), "S20038C3");
    check_base_class_offset(lv, (S20038C4*)(S20038C5*), ABISELECT(56,36), "S20038C3");
    check_base_class_offset(lv, (S20038C2*)(S20038C6*)(S20038C5*), ABISELECT(104,80), "S20038C3");
    check_base_class_offset(lv, (S20038C6*)(S20038C5*), ABISELECT(104,80), "S20038C3");
    /*is_ambiguous_... S20038C5::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C5*), ABISELECT(136,100), "S20038C3");
    /*is_ambiguous_... S20038C7::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C7*), ABISELECT(136,100), "S20038C3");
    check_base_class_offset(lv, (S20038C5*), ABISELECT(104,80), "S20038C3");
    check_base_class_offset(lv, (S20038C5*)(S20038C7*), ABISELECT(104,80), "S20038C3");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*)(S20038C7*), ABISELECT(160,116), "S20038C3");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C4*)(S20038C7*), ABISELECT(160,116), "S20038C3");
    /*is_ambiguous_... S20038C3::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C6*), ABISELECT(216,164), "S20038C3");
    /*is_ambiguous_... S20038C7::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C6*)(S20038C7*), ABISELECT(216,164), "S20038C3");
    check_base_class_offset(lv, (S20038C7*), ABISELECT(160,116), "S20038C3");
    /*is_ambiguous_... S20038C3::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C6*), ABISELECT(24,16), "S20038C3");
    /*is_ambiguous_... S20038C3::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C6*), ABISELECT(24,16), "S20038C3");
    test_class_info(&lv, &cd_S20038C3);
    dp->~S20038C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C3(Test_S20038C3, "S20038C3", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN8S20038C3C1Ev();
extern void _ZN8S20038C3D2Ev();
Name_Map name_map_S20038C3[] = {
  NSPAIR(_ZN8S20038C3C1Ev),
  NSPAIR(_ZN8S20038C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C5;
extern VTBL_ENTRY _ZTI8S20038C5[];
extern  VTBL_ENTRY _ZTV8S20038C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C5[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C7;
extern VTBL_ENTRY _ZTI8S20038C7[];
extern  VTBL_ENTRY _ZTV8S20038C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C7[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
static Base_Class bases_S20038C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S20038C2,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(56,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //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_S20038C2,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20038C2,    ABISELECT(136,100), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20038C5,    ABISELECT(104,80), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20038C2,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20038C2,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(216,164), //bcp->offset
    91, //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
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20038C7,    ABISELECT(160,116), //bcp->offset
    64, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20038C2,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(24,16), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20038C3[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C3D1Ev();
extern void _ZN8S20038C3D0Ev();
extern void _ZN8S20038C33v18Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20038C3D1Ev,_ZThn116_N8S20038C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20038C3D0Ev,_ZThn116_N8S20038C3D0Ev)() __attribute__((weak));
extern void _ZN8S20038C73v17Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY vtc_S20038C3[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C33v18Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
extern VTBL_ENTRY _ZTV8S20038C3[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C3[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__8S20038C5__8S20038C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A2__8S20038C5__8S20038C3[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C7D1Ev();
extern void _ZN8S20038C7D0Ev();
extern void _ZN8S20038C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C7__8S20038C3[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A1__8S20038C7__8S20038C3[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C7__8S20038C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__A1__8S20038C7__8S20038C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C6__A1__8S20038C7__8S20038C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
static  VTT_ENTRY vtt_S20038C3[] = {
  {&(_ZTV8S20038C3[7]),  7,101},
  {&(_ZTV8S20038C3[28]),  28,101},
  {&(_ZTV8S20038C3[49]),  49,101},
  {&(_ZTV8S20038C3[62]),  62,101},
  {&(_ZTV8S20038C3[80]),  80,101},
  {&(_ZTV8S20038C3[97]),  97,101},
  {&(_tg__ZTV8S20038C5__8S20038C3[4]),  4,13},
  {&(_tg__ZTV8S20038C4__8S20038C5__8S20038C3[10]),  10,18},
  {&(_tg__ZTV8S20038C2__A2__8S20038C5__8S20038C3[4]),  4,6},
  {&(_tg__ZTV8S20038C7__8S20038C3[6]),  6,17},
  {&(_tg__ZTV8S20038C2__A1__8S20038C7__8S20038C3[4]),  4,6},
  {&(_tg__ZTV8S20038C5__8S20038C7__8S20038C3[13]),  13,22},
  {&(_tg__ZTV8S20038C4__A1__8S20038C7__8S20038C3[10]),  10,18},
  {&(_tg__ZTV8S20038C6__A1__8S20038C7__8S20038C3[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20038C3[];
extern  VTBL_ENTRY _ZTV8S20038C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C3[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C3D0Ev,_ZThn116_N8S20038C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C3D1Ev,_ZThn116_N8S20038C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20038C3 = {  "S20038C3", // class name
  bases_S20038C3, 14,
  &(vtc_S20038C3[0]), // expected_vtbl_contents
  &(vtt_S20038C3[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI8S20038C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20038C3),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20038C3),14, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20038C1  : virtual S20038C2 , S20038C3 {
  virtual void  v1(); // _ZN8S20038C12v1Ev
  ~S20038C1(); // tgen
  S20038C1(); // tgen
};
//SIG(1 S20038C1) C1{ VBC2{ v2 v3 Fs[6]} BC3{ BC2 VBC4{ BC2 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC5{ BC6{ BC2 v10 v11 Fp} VBC4 VBC2 v12 v13 v14 v15 v16} VBC7{ BC4 VBC2 VBC5 VBC6 vd v17 Fi} BC6 vd v18} v1}


void  S20038C1 ::v1(){vfunc_called(this, "_ZN8S20038C12v1Ev");}
S20038C1 ::~S20038C1(){ note_dtor("S20038C1", this);} // tgen
S20038C1 ::S20038C1(){ note_ctor("S20038C1", this);} // tgen

static void Test_S20038C1()
{
  extern Class_Descriptor cd_S20038C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S20038C1, buf);
    S20038C1 *dp, &lv = *(dp=new (buf) S20038C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S20038C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20038C1)");
    /*is_ambiguous_... S20038C1::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*), ABISELECT(56,36), "S20038C1");
    /*is_ambiguous_... S20038C5::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C5*), ABISELECT(56,36), "S20038C1");
    /*is_ambiguous_... S20038C7::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C7*), ABISELECT(56,36), "S20038C1");
    /*is_ambiguous_... S20038C3::S20038C2 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C3*), 0, "S20038C1");
    /*is_ambiguous_... S20038C1::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*), ABISELECT(80,52), "S20038C1");
    /*is_ambiguous_... S20038C3::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C4*)(S20038C3*), ABISELECT(80,52), "S20038C1");
    check_base_class_offset(lv, (S20038C4*)(S20038C5*), ABISELECT(80,52), "S20038C1");
    check_base_class_offset(lv, (S20038C2*)(S20038C6*)(S20038C5*), ABISELECT(128,96), "S20038C1");
    check_base_class_offset(lv, (S20038C6*)(S20038C5*), ABISELECT(128,96), "S20038C1");
    check_base_class_offset(lv, (S20038C5*)(S20038C3*), ABISELECT(128,96), "S20038C1");
    check_base_class_offset(lv, (S20038C5*)(S20038C7*), ABISELECT(128,96), "S20038C1");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C4*)(S20038C7*), ABISELECT(160,116), "S20038C1");
    /*is_ambiguous_... S20038C7::S20038C4 */ AMB_check_base_class_offset(lv, (S20038C4*)(S20038C7*), ABISELECT(160,116), "S20038C1");
    /*is_ambiguous_... S20038C1::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C6*), ABISELECT(216,164), "S20038C1");
    /*is_ambiguous_... S20038C7::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C6*)(S20038C7*), ABISELECT(216,164), "S20038C1");
    check_base_class_offset(lv, (S20038C7*)(S20038C3*), ABISELECT(160,116), "S20038C1");
    /*is_ambiguous_... S20038C3::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C2*)(S20038C6*)(S20038C3*), ABISELECT(24,16), "S20038C1");
    /*is_ambiguous_... S20038C3::S20038C6 */ AMB_check_base_class_offset(lv, (S20038C6*)(S20038C3*), ABISELECT(24,16), "S20038C1");
    check_base_class_offset(lv, (S20038C3*), 0, "S20038C1");
    test_class_info(&lv, &cd_S20038C1);
    dp->~S20038C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20038C1(Test_S20038C1, "S20038C1", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN8S20038C1C1Ev();
extern void _ZN8S20038C1D1Ev();
Name_Map name_map_S20038C1[] = {
  NSPAIR(_ZN8S20038C1C1Ev),
  NSPAIR(_ZN8S20038C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C5;
extern VTBL_ENTRY _ZTI8S20038C5[];
extern  VTBL_ENTRY _ZTV8S20038C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C5[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C4;
extern VTBL_ENTRY _ZTI8S20038C4[];
extern  VTBL_ENTRY _ZTV8S20038C4[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C7;
extern VTBL_ENTRY _ZTI8S20038C7[];
extern  VTBL_ENTRY _ZTV8S20038C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C7[];
extern Class_Descriptor cd_S20038C2;
extern VTBL_ENTRY _ZTI8S20038C2[];
extern  VTBL_ENTRY _ZTV8S20038C2[];
extern Class_Descriptor cd_S20038C6;
extern VTBL_ENTRY _ZTI8S20038C6[];
extern  VTBL_ENTRY _ZTV8S20038C6[];
extern Class_Descriptor cd_S20038C3;
extern VTBL_ENTRY _ZTI8S20038C3[];
extern  VTBL_ENTRY _ZTV8S20038C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C3[];
static Base_Class bases_S20038C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20038C2,    ABISELECT(56,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S20038C2,    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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(80,52), //bcp->offset
    25, //bcp->virtual_function_table_offset
    10, //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
    6, //immediately_derived
  0, 1},
  {&cd_S20038C2,    ABISELECT(128,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(128,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
    6, //immediately_derived
  0, 0},
  {&cd_S20038C5,    ABISELECT(128,96), //bcp->offset
    43, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20038C2,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20038C4,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20038C2,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(216,164), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //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
    11, //immediately_derived
  0, 1},
  {&cd_S20038C7,    ABISELECT(160,116), //bcp->offset
    65, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20038C2,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20038C6,    ABISELECT(24,16), //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20038C3,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20038C1[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C1D1Ev();
extern void _ZN8S20038C1D0Ev();
extern void _ZN8S20038C33v18Ev();
extern void _ZN8S20038C12v1Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N8S20038C1D1Ev,_ZTv0_n60_N8S20038C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20038C1D1Ev,_ZThn116_N8S20038C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20038C1D0Ev,_ZTv0_n60_N8S20038C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20038C1D0Ev,_ZThn116_N8S20038C1D0Ev)() __attribute__((weak));
extern void _ZN8S20038C73v17Ev();
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY vtc_S20038C1[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(56,36),
  ABISELECT(128,96),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20038C12v1Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  ABISELECT(-48,-44),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-80,-64),
  ABISELECT(-32,-20),
  ABISELECT(-104,-80),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C1D1Ev,_ZTv0_n60_N8S20038C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C1D0Ev,_ZTv0_n60_N8S20038C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S20038C1[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
extern VTBL_ENTRY _ZTV8S20038C1[];
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C3D1Ev();
extern void _ZN8S20038C3D0Ev();
extern void _ZN8S20038C33v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C3__8S20038C1[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(56,36),
  ABISELECT(128,96),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C33v18Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__8S20038C3__8S20038C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C3__8S20038C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  ABISELECT(-48,-44),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A3__8S20038C3__8S20038C1[] = {
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20038C3D1Ev,_ZThn116_N8S20038C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20038C3D0Ev,_ZThn116_N8S20038C3D0Ev)() __attribute__((weak));
extern void _ZN8S20038C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C7__8S20038C3__8S20038C1[] = {
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-80,-64),
  ABISELECT(-32,-20),
  ABISELECT(-104,-80),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C6__A1__8S20038C3__8S20038C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S20038C3[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C1[] = {
  ABISELECT(-72,-60),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__8S20038C5__8S20038C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A2__8S20038C5__8S20038C1[] = {
  0,
  0,
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S20038C5[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
extern void _ZN8S20038C7D1Ev();
extern void _ZN8S20038C7D0Ev();
extern void _ZN8S20038C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C7__8S20038C1[] = {
  ABISELECT(56,48),
  ABISELECT(-80,-64),
  ABISELECT(-32,-20),
  ABISELECT(-104,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20038C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20038C73v17Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C2__A1__8S20038C7__8S20038C1[] = {
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
extern void _ZN8S20038C53v12Ev();
extern void _ZN8S20038C53v13Ev();
extern void _ZN8S20038C53v14Ev();
extern void _ZN8S20038C53v15Ev();
extern void _ZN8S20038C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C5__8S20038C7__8S20038C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-60),
  ABISELECT(-48,-44),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20038C53v16Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C42v4Ev();
extern void _ZN8S20038C42v5Ev();
extern void _ZN8S20038C42v6Ev();
extern void _ZN8S20038C42v7Ev();
extern void _ZN8S20038C42v8Ev();
extern void _ZN8S20038C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C4__A1__8S20038C7__8S20038C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20038C42v9Ev,
};
extern void _ZN8S20038C22v2Ev();
extern void _ZN8S20038C22v3Ev();
extern void _ZN8S20038C63v10Ev();
extern void _ZN8S20038C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20038C6__A1__8S20038C7__8S20038C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20038C7[0]),
  (VTBL_ENTRY)&_ZN8S20038C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20038C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v10Ev,
  (VTBL_ENTRY)&_ZN8S20038C63v11Ev,
};
static  VTT_ENTRY vtt_S20038C1[] = {
  {&(_ZTV8S20038C1[7]),  7,102},
  {&(_tg__ZTV8S20038C3__8S20038C1[7]),  7,12},
  {&(_tg__ZTV8S20038C4__8S20038C3__8S20038C1[10]),  10,18},
  {&(_tg__ZTV8S20038C5__8S20038C3__8S20038C1[13]),  13,22},
  {&(_tg__ZTV8S20038C2__A3__8S20038C3__8S20038C1[4]),  4,6},
  {&(_tg__ZTV8S20038C7__8S20038C3__8S20038C1[16]),  16,27},
  {&(_tg__ZTV8S20038C6__A1__8S20038C3__8S20038C1[6]),  6,10},
  {&(_ZTV8S20038C1[23]),  23,102},
  {&(_ZTV8S20038C1[35]),  35,102},
  {&(_ZTV8S20038C1[56]),  56,102},
  {&(_ZTV8S20038C1[81]),  81,102},
  {&(_ZTV8S20038C1[98]),  98,102},
  {&(_tg__ZTV8S20038C5__8S20038C1[4]),  4,13},
  {&(_tg__ZTV8S20038C4__8S20038C5__8S20038C1[10]),  10,18},
  {&(_tg__ZTV8S20038C2__A2__8S20038C5__8S20038C1[4]),  4,6},
  {&(_tg__ZTV8S20038C7__8S20038C1[6]),  6,17},
  {&(_tg__ZTV8S20038C2__A1__8S20038C7__8S20038C1[4]),  4,6},
  {&(_tg__ZTV8S20038C5__8S20038C7__8S20038C1[13]),  13,22},
  {&(_tg__ZTV8S20038C4__A1__8S20038C7__8S20038C1[10]),  10,18},
  {&(_tg__ZTV8S20038C6__A1__8S20038C7__8S20038C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20038C1[];
extern  VTBL_ENTRY _ZTV8S20038C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20038C1[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C3D0Ev,_ZTv0_n60_N8S20038C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C3D0Ev,_ZThn116_N8S20038C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C3D1Ev,_ZTv0_n60_N8S20038C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C3D1Ev,_ZThn116_N8S20038C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C1D0Ev,_ZTv0_n60_N8S20038C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C1D0Ev,_ZThn116_N8S20038C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20038C1D1Ev,_ZTv0_n60_N8S20038C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20038C1D1Ev,_ZThn116_N8S20038C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20038C1 = {  "S20038C1", // class name
  bases_S20038C1, 15,
  &(vtc_S20038C1[0]), // expected_vtbl_contents
  &(vtt_S20038C1[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI8S20038C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20038C1),102, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20038C1),20, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3060C3  {
  short s3060c3f0[6];
  virtual void  v2(); // _ZN7S3060C32v2Ev
  virtual void  v3(); // _ZN7S3060C32v3Ev
  ~S3060C3(); // tgen
  S3060C3(); // tgen
};
//SIG(-1 S3060C3) C1{ v1 v2 Fs[6]}


void  S3060C3 ::v2(){vfunc_called(this, "_ZN7S3060C32v2Ev");}
void  S3060C3 ::v3(){vfunc_called(this, "_ZN7S3060C32v3Ev");}
S3060C3 ::~S3060C3(){ note_dtor("S3060C3", this);} // tgen
S3060C3 ::S3060C3(){ note_ctor("S3060C3", this);} // tgen

static void Test_S3060C3()
{
  extern Class_Descriptor cd_S3060C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3060C3, buf);
    S3060C3 *dp, &lv = *(dp=new (buf) S3060C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3060C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C3)");
    check_field_offset(lv, s3060c3f0, ABISELECT(8,4), "S3060C3.s3060c3f0");
    test_class_info(&lv, &cd_S3060C3);
    dp->~S3060C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C3(Test_S3060C3, "S3060C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3060C3C1Ev();
extern void _ZN7S3060C3D1Ev();
Name_Map name_map_S3060C3[] = {
  NSPAIR(_ZN7S3060C3C1Ev),
  NSPAIR(_ZN7S3060C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3060C3[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY vtc_S3060C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C3[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
Class_Descriptor cd_S3060C3 = {  "S3060C3", // class name
  0,0,//no base classes
  &(vtc_S3060C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3060C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3060C3),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  S3060C4  : S3060C3 {
  short s3060c4f0[9];
  __tsi64 s3060c4f1;
  virtual void  v4(); // _ZN7S3060C42v4Ev
  virtual void  v5(); // _ZN7S3060C42v5Ev
  virtual void  v6(); // _ZN7S3060C42v6Ev
  virtual void  v7(); // _ZN7S3060C42v7Ev
  virtual void  v8(); // _ZN7S3060C42v8Ev
  virtual void  v9(); // _ZN7S3060C42v9Ev
  ~S3060C4(); // tgen
  S3060C4(); // tgen
};
//SIG(-1 S3060C4) C1{ BC2{ v7 v8 Fs[6]} v1 v2 v3 v4 v5 v6 Fs[9] FL}


void  S3060C4 ::v4(){vfunc_called(this, "_ZN7S3060C42v4Ev");}
void  S3060C4 ::v5(){vfunc_called(this, "_ZN7S3060C42v5Ev");}
void  S3060C4 ::v6(){vfunc_called(this, "_ZN7S3060C42v6Ev");}
void  S3060C4 ::v7(){vfunc_called(this, "_ZN7S3060C42v7Ev");}
void  S3060C4 ::v8(){vfunc_called(this, "_ZN7S3060C42v8Ev");}
void  S3060C4 ::v9(){vfunc_called(this, "_ZN7S3060C42v9Ev");}
S3060C4 ::~S3060C4(){ note_dtor("S3060C4", this);} // tgen
S3060C4 ::S3060C4(){ note_ctor("S3060C4", this);} // tgen

static void Test_S3060C4()
{
  extern Class_Descriptor cd_S3060C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3060C4, buf);
    S3060C4 *dp, &lv = *(dp=new (buf) S3060C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3060C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C4)");
    check_base_class_offset(lv, (S3060C3*), 0, "S3060C4");
    check_field_offset(lv, s3060c4f0, ABISELECT(20,16), "S3060C4.s3060c4f0");
    check_field_offset(lv, s3060c4f1, ABISELECT(40,36), "S3060C4.s3060c4f1");
    test_class_info(&lv, &cd_S3060C4);
    dp->~S3060C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C4(Test_S3060C4, "S3060C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S3060C4C1Ev();
extern void _ZN7S3060C4D1Ev();
Name_Map name_map_S3060C4[] = {
  NSPAIR(_ZN7S3060C4C1Ev),
  NSPAIR(_ZN7S3060C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
static Base_Class bases_S3060C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3060C4[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY vtc_S3060C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C4[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
Class_Descriptor cd_S3060C4 = {  "S3060C4", // class name
  bases_S3060C4, 1,
  &(vtc_S3060C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S3060C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3060C4),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3060C6  : S3060C3 {
  void *s3060c6f0;
  virtual void  v10(); // _ZN7S3060C63v10Ev
  virtual void  v11(); // _ZN7S3060C63v11Ev
  ~S3060C6(); // tgen
  S3060C6(); // tgen
};
//SIG(-1 S3060C6) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S3060C6 ::v10(){vfunc_called(this, "_ZN7S3060C63v10Ev");}
void  S3060C6 ::v11(){vfunc_called(this, "_ZN7S3060C63v11Ev");}
S3060C6 ::~S3060C6(){ note_dtor("S3060C6", this);} // tgen
S3060C6 ::S3060C6(){ note_ctor("S3060C6", this);} // tgen

static void Test_S3060C6()
{
  extern Class_Descriptor cd_S3060C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3060C6, buf);
    S3060C6 *dp, &lv = *(dp=new (buf) S3060C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3060C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C6)");
    check_base_class_offset(lv, (S3060C3*), 0, "S3060C6");
    check_field_offset(lv, s3060c6f0, ABISELECT(24,16), "S3060C6.s3060c6f0");
    test_class_info(&lv, &cd_S3060C6);
    dp->~S3060C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C6(Test_S3060C6, "S3060C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3060C6C1Ev();
extern void _ZN7S3060C6D1Ev();
Name_Map name_map_S3060C6[] = {
  NSPAIR(_ZN7S3060C6C1Ev),
  NSPAIR(_ZN7S3060C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
static Base_Class bases_S3060C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3060C6[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY vtc_S3060C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C6[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
Class_Descriptor cd_S3060C6 = {  "S3060C6", // class name
  bases_S3060C6, 1,
  &(vtc_S3060C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3060C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3060C6),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  S3060C5  : S3060C6 , virtual S3060C4 , virtual S3060C3 {
  virtual void  v12(); // _ZN7S3060C53v12Ev
  virtual void  v13(); // _ZN7S3060C53v13Ev
  virtual void  v14(); // _ZN7S3060C53v14Ev
  virtual void  v15(); // _ZN7S3060C53v15Ev
  virtual void  v16(); // _ZN7S3060C53v16Ev
  ~S3060C5(); // tgen
  S3060C5(); // tgen
};
//SIG(-1 S3060C5) C1{ BC2{ BC3{ v6 v7 Fs[6]} v8 v9 Fp} VBC4{ BC3 v10 v11 v12 v13 v14 v15 Fs[9] FL} VBC3 v1 v2 v3 v4 v5}


void  S3060C5 ::v12(){vfunc_called(this, "_ZN7S3060C53v12Ev");}
void  S3060C5 ::v13(){vfunc_called(this, "_ZN7S3060C53v13Ev");}
void  S3060C5 ::v14(){vfunc_called(this, "_ZN7S3060C53v14Ev");}
void  S3060C5 ::v15(){vfunc_called(this, "_ZN7S3060C53v15Ev");}
void  S3060C5 ::v16(){vfunc_called(this, "_ZN7S3060C53v16Ev");}
S3060C5 ::~S3060C5(){ note_dtor("S3060C5", this);} // tgen
S3060C5 ::S3060C5(){ note_ctor("S3060C5", this);} // tgen

static void Test_S3060C5()
{
  extern Class_Descriptor cd_S3060C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S3060C5, buf);
    S3060C5 *dp, &lv = *(dp=new (buf) S3060C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S3060C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C5)");
    check_base_class_offset(lv, (S3060C3*)(S3060C6*), 0, "S3060C5");
    check_base_class_offset(lv, (S3060C6*), 0, "S3060C5");
    check_base_class_offset(lv, (S3060C3*)(S3060C4*), ABISELECT(32,20), "S3060C5");
    check_base_class_offset(lv, (S3060C4*), ABISELECT(32,20), "S3060C5");
    /*is_ambiguous_... S3060C5::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*), ABISELECT(80,64), "S3060C5");
    test_class_info(&lv, &cd_S3060C5);
    dp->~S3060C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C5(Test_S3060C5, "S3060C5", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S3060C5C1Ev();
extern void _ZN7S3060C5D1Ev();
Name_Map name_map_S3060C5[] = {
  NSPAIR(_ZN7S3060C5C1Ev),
  NSPAIR(_ZN7S3060C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
static Base_Class bases_S3060C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S3060C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3060C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //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_S3060C3,    ABISELECT(80,64), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //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 _ZTI7S3060C5[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY vtc_S3060C5[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern VTBL_ENTRY _ZTV7S3060C5[];
static  VTT_ENTRY vtt_S3060C5[] = {
  {&(_ZTV7S3060C5[4]),  4,37},
  {&(_ZTV7S3060C5[23]),  23,37},
  {&(_ZTV7S3060C5[35]),  35,37},
};
extern VTBL_ENTRY _ZTI7S3060C5[];
extern  VTBL_ENTRY _ZTV7S3060C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C5[];
Class_Descriptor cd_S3060C5 = {  "S3060C5", // class name
  bases_S3060C5, 5,
  &(vtc_S3060C5[0]), // expected_vtbl_contents
  &(vtt_S3060C5[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S3060C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3060C5),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3060C5),3, //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  S3060C7  : S3060C4 , virtual S3060C3 , virtual S3060C5 , virtual S3060C6 {
  int s3060c7f0;
  virtual  ~S3060C7(); // _ZN7S3060C7D2Ev
  virtual void  v17(); // _ZN7S3060C73v17Ev
  S3060C7(); // tgen
};
//SIG(-1 S3060C7) C1{ BC2{ BC3{ v2 v3 Fs[6]} v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC3 VBC4{ BC5{ BC3 v10 v11 Fp} VBC2 VBC3 v12 v13 v14 v15 v16} VBC5 vd v1 Fi}


 S3060C7 ::~S3060C7(){ note_dtor("S3060C7", this);}
void  S3060C7 ::v17(){vfunc_called(this, "_ZN7S3060C73v17Ev");}
S3060C7 ::S3060C7(){ note_ctor("S3060C7", this);} // tgen

static void Test_S3060C7()
{
  extern Class_Descriptor cd_S3060C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,38)];
    init_test(&cd_S3060C7, buf);
    S3060C7 *dp, &lv = *(dp=new (buf) S3060C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,148), "sizeof(S3060C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C7)");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*), 0, "S3060C7");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C4*), 0, "S3060C7");
    /*is_ambiguous_... S3060C7::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*), ABISELECT(56,48), "S3060C7");
    /*is_ambiguous_... S3060C5::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C5*), ABISELECT(56,48), "S3060C7");
    check_base_class_offset(lv, (S3060C3*)(S3060C6*)(S3060C5*), ABISELECT(80,64), "S3060C7");
    check_base_class_offset(lv, (S3060C6*)(S3060C5*), ABISELECT(80,64), "S3060C7");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*), ABISELECT(112,84), "S3060C7");
    check_base_class_offset(lv, (S3060C4*)(S3060C5*), ABISELECT(112,84), "S3060C7");
    check_base_class_offset(lv, (S3060C5*), ABISELECT(80,64), "S3060C7");
    /*is_ambiguous_... S3060C7::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C6*), ABISELECT(160,128), "S3060C7");
    /*is_ambiguous_... S3060C7::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C6*), ABISELECT(160,128), "S3060C7");
    check_field_offset(lv, s3060c7f0, ABISELECT(48,44), "S3060C7.s3060c7f0");
    test_class_info(&lv, &cd_S3060C7);
    dp->~S3060C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C7(Test_S3060C7, "S3060C7", ABISELECT(192,148));

#else // __cplusplus

extern void _ZN7S3060C7C1Ev();
extern void _ZN7S3060C7D2Ev();
Name_Map name_map_S3060C7[] = {
  NSPAIR(_ZN7S3060C7C1Ev),
  NSPAIR(_ZN7S3060C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C5;
extern VTBL_ENTRY _ZTI7S3060C5[];
extern  VTBL_ENTRY _ZTV7S3060C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C5[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
static Base_Class bases_S3060C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S3060C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3060C3,    ABISELECT(56,48), //bcp->offset
    17, //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_S3060C3,    ABISELECT(80,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(80,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3060C3,    ABISELECT(112,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(112,84), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3060C5,    ABISELECT(80,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3060C3,    ABISELECT(160,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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(160,128), //bcp->offset
    63, //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
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3060C7[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C7D1Ev();
extern void _ZN7S3060C7D0Ev();
extern void _ZN7S3060C73v17Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY vtc_S3060C7[] = {
  ABISELECT(160,128),
  ABISELECT(112,84),
  ABISELECT(80,64),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-128),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
extern VTBL_ENTRY _ZTV7S3060C7[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C7[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__7S3060C5__7S3060C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A2__7S3060C5__7S3060C7[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
static  VTT_ENTRY vtt_S3060C7[] = {
  {&(_ZTV7S3060C7[6]),  6,73},
  {&(_ZTV7S3060C7[21]),  21,73},
  {&(_ZTV7S3060C7[36]),  36,73},
  {&(_ZTV7S3060C7[55]),  55,73},
  {&(_ZTV7S3060C7[69]),  69,73},
  {&(_tg__ZTV7S3060C5__7S3060C7[4]),  4,13},
  {&(_tg__ZTV7S3060C4__7S3060C5__7S3060C7[10]),  10,18},
  {&(_tg__ZTV7S3060C3__A2__7S3060C5__7S3060C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S3060C7[];
extern  VTBL_ENTRY _ZTV7S3060C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C7[];
Class_Descriptor cd_S3060C7 = {  "S3060C7", // class name
  bases_S3060C7, 10,
  &(vtc_S3060C7[0]), // expected_vtbl_contents
  &(vtt_S3060C7[0]), // expected_vtt_contents
  ABISELECT(192,148), // object size
  NSPAIRA(_ZTI7S3060C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3060C7),73, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3060C7),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3060C2  : S3060C3 , virtual S3060C4 , virtual S3060C5 , virtual S3060C7 , S3060C6 {
  virtual  ~S3060C2(); // _ZN7S3060C2D2Ev
  virtual void  v18(); // _ZN7S3060C23v18Ev
  S3060C2(); // tgen
};
//SIG(-1 S3060C2) C1{ BC2{ v2 v3 Fs[6]} VBC3{ BC2 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC4{ BC5{ BC2 v10 v11 Fp} VBC3 VBC2 v12 v13 v14 v15 v16} VBC6{ BC3 VBC2 VBC4 VBC5 vd v17 Fi} BC5 vd v1}


 S3060C2 ::~S3060C2(){ note_dtor("S3060C2", this);}
void  S3060C2 ::v18(){vfunc_called(this, "_ZN7S3060C23v18Ev");}
S3060C2 ::S3060C2(){ note_ctor("S3060C2", this);} // tgen

static void Test_S3060C2()
{
  extern Class_Descriptor cd_S3060C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S3060C2, buf);
    S3060C2 *dp, &lv = *(dp=new (buf) S3060C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S3060C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C2)");
    /*is_ambiguous_... S3060C2::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*), 0, "S3060C2");
    /*is_ambiguous_... S3060C2::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*), ABISELECT(56,36), "S3060C2");
    /*is_ambiguous_... S3060C2::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C4*), ABISELECT(56,36), "S3060C2");
    check_base_class_offset(lv, (S3060C4*)(S3060C5*), ABISELECT(56,36), "S3060C2");
    check_base_class_offset(lv, (S3060C3*)(S3060C6*)(S3060C5*), ABISELECT(104,80), "S3060C2");
    check_base_class_offset(lv, (S3060C6*)(S3060C5*), ABISELECT(104,80), "S3060C2");
    /*is_ambiguous_... S3060C5::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C5*), ABISELECT(136,100), "S3060C2");
    /*is_ambiguous_... S3060C7::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C7*), ABISELECT(136,100), "S3060C2");
    check_base_class_offset(lv, (S3060C5*), ABISELECT(104,80), "S3060C2");
    check_base_class_offset(lv, (S3060C5*)(S3060C7*), ABISELECT(104,80), "S3060C2");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*)(S3060C7*), ABISELECT(160,116), "S3060C2");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C4*)(S3060C7*), ABISELECT(160,116), "S3060C2");
    /*is_ambiguous_... S3060C2::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C6*), ABISELECT(216,164), "S3060C2");
    /*is_ambiguous_... S3060C7::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C6*)(S3060C7*), ABISELECT(216,164), "S3060C2");
    check_base_class_offset(lv, (S3060C7*), ABISELECT(160,116), "S3060C2");
    /*is_ambiguous_... S3060C2::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C6*), ABISELECT(24,16), "S3060C2");
    /*is_ambiguous_... S3060C2::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C6*), ABISELECT(24,16), "S3060C2");
    test_class_info(&lv, &cd_S3060C2);
    dp->~S3060C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C2(Test_S3060C2, "S3060C2", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN7S3060C2C1Ev();
extern void _ZN7S3060C2D2Ev();
Name_Map name_map_S3060C2[] = {
  NSPAIR(_ZN7S3060C2C1Ev),
  NSPAIR(_ZN7S3060C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C5;
extern VTBL_ENTRY _ZTI7S3060C5[];
extern  VTBL_ENTRY _ZTV7S3060C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C5[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C7;
extern VTBL_ENTRY _ZTI7S3060C7[];
extern  VTBL_ENTRY _ZTV7S3060C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C7[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
static Base_Class bases_S3060C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S3060C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(56,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //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_S3060C3,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3060C3,    ABISELECT(136,100), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3060C5,    ABISELECT(104,80), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3060C3,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3060C3,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(216,164), //bcp->offset
    91, //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
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3060C7,    ABISELECT(160,116), //bcp->offset
    64, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3060C3,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(24,16), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3060C2[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C2D1Ev();
extern void _ZN7S3060C2D0Ev();
extern void _ZN7S3060C23v18Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S3060C2D1Ev,_ZThn116_N7S3060C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S3060C2D0Ev,_ZThn116_N7S3060C2D0Ev)() __attribute__((weak));
extern void _ZN7S3060C73v17Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY vtc_S3060C2[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C23v18Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
extern VTBL_ENTRY _ZTV7S3060C2[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C2[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__7S3060C5__7S3060C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A2__7S3060C5__7S3060C2[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C7D1Ev();
extern void _ZN7S3060C7D0Ev();
extern void _ZN7S3060C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C7__7S3060C2[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A1__7S3060C7__7S3060C2[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C7__7S3060C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__A1__7S3060C7__7S3060C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C6__A1__7S3060C7__7S3060C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
static  VTT_ENTRY vtt_S3060C2[] = {
  {&(_ZTV7S3060C2[7]),  7,101},
  {&(_ZTV7S3060C2[28]),  28,101},
  {&(_ZTV7S3060C2[49]),  49,101},
  {&(_ZTV7S3060C2[62]),  62,101},
  {&(_ZTV7S3060C2[80]),  80,101},
  {&(_ZTV7S3060C2[97]),  97,101},
  {&(_tg__ZTV7S3060C5__7S3060C2[4]),  4,13},
  {&(_tg__ZTV7S3060C4__7S3060C5__7S3060C2[10]),  10,18},
  {&(_tg__ZTV7S3060C3__A2__7S3060C5__7S3060C2[4]),  4,6},
  {&(_tg__ZTV7S3060C7__7S3060C2[6]),  6,17},
  {&(_tg__ZTV7S3060C3__A1__7S3060C7__7S3060C2[4]),  4,6},
  {&(_tg__ZTV7S3060C5__7S3060C7__7S3060C2[13]),  13,22},
  {&(_tg__ZTV7S3060C4__A1__7S3060C7__7S3060C2[10]),  10,18},
  {&(_tg__ZTV7S3060C6__A1__7S3060C7__7S3060C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S3060C2[];
extern  VTBL_ENTRY _ZTV7S3060C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C2[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C2D0Ev,_ZThn116_N7S3060C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C2D1Ev,_ZThn116_N7S3060C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3060C2 = {  "S3060C2", // class name
  bases_S3060C2, 14,
  &(vtc_S3060C2[0]), // expected_vtbl_contents
  &(vtt_S3060C2[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI7S3060C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3060C2),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3060C2),14, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3060C1  : S3060C2 {
  virtual  ~S3060C1(); // _ZN7S3060C1D2Ev
  virtual void  v1(); // _ZN7S3060C12v1Ev
  S3060C1(); // tgen
};
//SIG(1 S3060C1) C1{ BC2{ BC3{ v2 v3 Fs[6]} VBC4{ BC3 v4 v5 v6 v7 v8 v9 Fs[9] FL} VBC5{ BC6{ BC3 v10 v11 Fp} VBC4 VBC3 v12 v13 v14 v15 v16} VBC7{ BC4 VBC3 VBC5 VBC6 vd v17 Fi} BC6 vd v18} vd v1}


 S3060C1 ::~S3060C1(){ note_dtor("S3060C1", this);}
void  S3060C1 ::v1(){vfunc_called(this, "_ZN7S3060C12v1Ev");}
S3060C1 ::S3060C1(){ note_ctor("S3060C1", this);} // tgen

static void Test_S3060C1()
{
  extern Class_Descriptor cd_S3060C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,47)];
    init_test(&cd_S3060C1, buf);
    S3060C1 *dp, &lv = *(dp=new (buf) S3060C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,184), "sizeof(S3060C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3060C1)");
    /*is_ambiguous_... S3060C2::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C2*), 0, "S3060C1");
    /*is_ambiguous_... S3060C1::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*), ABISELECT(56,36), "S3060C1");
    /*is_ambiguous_... S3060C2::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C4*)(S3060C2*), ABISELECT(56,36), "S3060C1");
    check_base_class_offset(lv, (S3060C4*)(S3060C5*), ABISELECT(56,36), "S3060C1");
    check_base_class_offset(lv, (S3060C3*)(S3060C6*)(S3060C5*), ABISELECT(104,80), "S3060C1");
    check_base_class_offset(lv, (S3060C6*)(S3060C5*), ABISELECT(104,80), "S3060C1");
    /*is_ambiguous_... S3060C5::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C5*), ABISELECT(136,100), "S3060C1");
    /*is_ambiguous_... S3060C7::S3060C3 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C7*), ABISELECT(136,100), "S3060C1");
    check_base_class_offset(lv, (S3060C5*)(S3060C2*), ABISELECT(104,80), "S3060C1");
    check_base_class_offset(lv, (S3060C5*)(S3060C7*), ABISELECT(104,80), "S3060C1");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C4*)(S3060C7*), ABISELECT(160,116), "S3060C1");
    /*is_ambiguous_... S3060C7::S3060C4 */ AMB_check_base_class_offset(lv, (S3060C4*)(S3060C7*), ABISELECT(160,116), "S3060C1");
    /*is_ambiguous_... S3060C1::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C6*), ABISELECT(216,164), "S3060C1");
    /*is_ambiguous_... S3060C7::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C6*)(S3060C7*), ABISELECT(216,164), "S3060C1");
    check_base_class_offset(lv, (S3060C7*)(S3060C2*), ABISELECT(160,116), "S3060C1");
    /*is_ambiguous_... S3060C2::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C3*)(S3060C6*)(S3060C2*), ABISELECT(24,16), "S3060C1");
    /*is_ambiguous_... S3060C2::S3060C6 */ AMB_check_base_class_offset(lv, (S3060C6*)(S3060C2*), ABISELECT(24,16), "S3060C1");
    check_base_class_offset(lv, (S3060C2*), 0, "S3060C1");
    test_class_info(&lv, &cd_S3060C1);
    dp->~S3060C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3060C1(Test_S3060C1, "S3060C1", ABISELECT(248,184));

#else // __cplusplus

extern void _ZN7S3060C1C1Ev();
extern void _ZN7S3060C1D2Ev();
Name_Map name_map_S3060C1[] = {
  NSPAIR(_ZN7S3060C1C1Ev),
  NSPAIR(_ZN7S3060C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C5;
extern VTBL_ENTRY _ZTI7S3060C5[];
extern  VTBL_ENTRY _ZTV7S3060C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C5[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C4;
extern VTBL_ENTRY _ZTI7S3060C4[];
extern  VTBL_ENTRY _ZTV7S3060C4[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C7;
extern VTBL_ENTRY _ZTI7S3060C7[];
extern  VTBL_ENTRY _ZTV7S3060C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C7[];
extern Class_Descriptor cd_S3060C3;
extern VTBL_ENTRY _ZTI7S3060C3[];
extern  VTBL_ENTRY _ZTV7S3060C3[];
extern Class_Descriptor cd_S3060C6;
extern VTBL_ENTRY _ZTI7S3060C6[];
extern  VTBL_ENTRY _ZTV7S3060C6[];
extern Class_Descriptor cd_S3060C2;
extern VTBL_ENTRY _ZTI7S3060C2[];
extern  VTBL_ENTRY _ZTV7S3060C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C2[];
static Base_Class bases_S3060C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3060C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S3060C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(56,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3060C3,    ABISELECT(104,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(104,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3060C3,    ABISELECT(136,100), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //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, 1},
  {&cd_S3060C5,    ABISELECT(104,80), //bcp->offset
    37, //bcp->virtual_function_table_offset
    13, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3060C3,    ABISELECT(160,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3060C4,    ABISELECT(160,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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3060C3,    ABISELECT(216,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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(216,164), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3060C7,    ABISELECT(160,116), //bcp->offset
    65, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3060C3,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3060C6,    ABISELECT(24,16), //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3060C2,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3060C1[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C1D1Ev();
extern void _ZN7S3060C1D0Ev();
extern void _ZN7S3060C23v18Ev();
extern void _ZN7S3060C12v1Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N7S3060C1D1Ev,_ZTv0_n60_N7S3060C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S3060C1D1Ev,_ZThn116_N7S3060C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3060C1D0Ev,_ZTv0_n60_N7S3060C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S3060C1D0Ev,_ZThn116_N7S3060C1D0Ev)() __attribute__((weak));
extern void _ZN7S3060C73v17Ev();
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY vtc_S3060C1[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3060C12v1Ev,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C1D1Ev,_ZTv0_n60_N7S3060C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C1D0Ev,_ZTv0_n60_N7S3060C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S3060C1[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
extern VTBL_ENTRY _ZTV7S3060C1[];
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C2D1Ev();
extern void _ZN7S3060C2D0Ev();
extern void _ZN7S3060C23v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C2__7S3060C1[] = {
  ABISELECT(216,164),
  ABISELECT(160,116),
  ABISELECT(136,100),
  ABISELECT(104,80),
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C23v18Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__7S3060C2__7S3060C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C2__7S3060C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A3__7S3060C2__7S3060C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S3060C2D1Ev,_ZThn116_N7S3060C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S3060C2D0Ev,_ZThn116_N7S3060C2D0Ev)() __attribute__((weak));
extern void _ZN7S3060C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C7__7S3060C2__7S3060C1[] = {
  0,
  ABISELECT(-160,-116),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C6__A1__7S3060C2__7S3060C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S3060C2[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__7S3060C5__7S3060C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A2__7S3060C5__7S3060C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3060C5[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
extern void _ZN7S3060C7D1Ev();
extern void _ZN7S3060C7D0Ev();
extern void _ZN7S3060C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C7__7S3060C1[] = {
  ABISELECT(56,48),
  ABISELECT(-104,-80),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3060C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3060C73v17Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C3__A1__7S3060C7__7S3060C1[] = {
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
extern void _ZN7S3060C53v12Ev();
extern void _ZN7S3060C53v13Ev();
extern void _ZN7S3060C53v14Ev();
extern void _ZN7S3060C53v15Ev();
extern void _ZN7S3060C53v16Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C5__7S3060C7__7S3060C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3060C53v16Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C42v4Ev();
extern void _ZN7S3060C42v5Ev();
extern void _ZN7S3060C42v6Ev();
extern void _ZN7S3060C42v7Ev();
extern void _ZN7S3060C42v8Ev();
extern void _ZN7S3060C42v9Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C4__A1__7S3060C7__7S3060C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3060C42v9Ev,
};
extern void _ZN7S3060C32v2Ev();
extern void _ZN7S3060C32v3Ev();
extern void _ZN7S3060C63v10Ev();
extern void _ZN7S3060C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3060C6__A1__7S3060C7__7S3060C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S3060C7[0]),
  (VTBL_ENTRY)&_ZN7S3060C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3060C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3060C63v11Ev,
};
static  VTT_ENTRY vtt_S3060C1[] = {
  {&(_ZTV7S3060C1[7]),  7,102},
  {&(_tg__ZTV7S3060C2__7S3060C1[7]),  7,12},
  {&(_tg__ZTV7S3060C4__7S3060C2__7S3060C1[10]),  10,18},
  {&(_tg__ZTV7S3060C5__7S3060C2__7S3060C1[13]),  13,22},
  {&(_tg__ZTV7S3060C3__A3__7S3060C2__7S3060C1[4]),  4,6},
  {&(_tg__ZTV7S3060C7__7S3060C2__7S3060C1[16]),  16,27},
  {&(_tg__ZTV7S3060C6__A1__7S3060C2__7S3060C1[6]),  6,10},
  {&(_ZTV7S3060C1[29]),  29,102},
  {&(_ZTV7S3060C1[50]),  50,102},
  {&(_ZTV7S3060C1[63]),  63,102},
  {&(_ZTV7S3060C1[81]),  81,102},
  {&(_ZTV7S3060C1[98]),  98,102},
  {&(_tg__ZTV7S3060C5__7S3060C1[4]),  4,13},
  {&(_tg__ZTV7S3060C4__7S3060C5__7S3060C1[10]),  10,18},
  {&(_tg__ZTV7S3060C3__A2__7S3060C5__7S3060C1[4]),  4,6},
  {&(_tg__ZTV7S3060C7__7S3060C1[6]),  6,17},
  {&(_tg__ZTV7S3060C3__A1__7S3060C7__7S3060C1[4]),  4,6},
  {&(_tg__ZTV7S3060C5__7S3060C7__7S3060C1[13]),  13,22},
  {&(_tg__ZTV7S3060C4__A1__7S3060C7__7S3060C1[10]),  10,18},
  {&(_tg__ZTV7S3060C6__A1__7S3060C7__7S3060C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S3060C1[];
extern  VTBL_ENTRY _ZTV7S3060C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3060C1[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C2D0Ev,_ZTv0_n60_N7S3060C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C2D0Ev,_ZThn116_N7S3060C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C2D1Ev,_ZTv0_n60_N7S3060C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C2D1Ev,_ZThn116_N7S3060C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C1D0Ev,_ZTv0_n60_N7S3060C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C1D0Ev,_ZThn116_N7S3060C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3060C1D1Ev,_ZTv0_n60_N7S3060C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3060C1D1Ev,_ZThn116_N7S3060C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3060C1 = {  "S3060C1", // class name
  bases_S3060C1, 15,
  &(vtc_S3060C1[0]), // expected_vtbl_contents
  &(vtt_S3060C1[0]), // expected_vtt_contents
  ABISELECT(248,184), // object size
  NSPAIRA(_ZTI7S3060C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3060C1),102, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3060C1),20, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3456C6  {
  virtual void  v4(); // _ZN7S3456C62v4Ev
  virtual void  v5(); // _ZN7S3456C62v5Ev
  virtual void  v6(); // _ZN7S3456C62v6Ev
  virtual void  v7(); // _ZN7S3456C62v7Ev
  virtual void  v8(); // _ZN7S3456C62v8Ev
  ~S3456C6(); // tgen
  S3456C6(); // tgen
};
//SIG(-1 S3456C6) C1{ v1 v2 v3 v4 v5}


void  S3456C6 ::v4(){vfunc_called(this, "_ZN7S3456C62v4Ev");}
void  S3456C6 ::v5(){vfunc_called(this, "_ZN7S3456C62v5Ev");}
void  S3456C6 ::v6(){vfunc_called(this, "_ZN7S3456C62v6Ev");}
void  S3456C6 ::v7(){vfunc_called(this, "_ZN7S3456C62v7Ev");}
void  S3456C6 ::v8(){vfunc_called(this, "_ZN7S3456C62v8Ev");}
S3456C6 ::~S3456C6(){ note_dtor("S3456C6", this);} // tgen
S3456C6 ::S3456C6(){ note_ctor("S3456C6", this);} // tgen

static void Test_S3456C6()
{
  extern Class_Descriptor cd_S3456C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3456C6, buf);
    S3456C6 *dp, &lv = *(dp=new (buf) S3456C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3456C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C6)");
    test_class_info(&lv, &cd_S3456C6);
    dp->~S3456C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C6(Test_S3456C6, "S3456C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3456C6C1Ev();
extern void _ZN7S3456C6D1Ev();
Name_Map name_map_S3456C6[] = {
  NSPAIR(_ZN7S3456C6C1Ev),
  NSPAIR(_ZN7S3456C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3456C6[];
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
static  VTBL_ENTRY vtc_S3456C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C6[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
};
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
Class_Descriptor cd_S3456C6 = {  "S3456C6", // class name
  0,0,//no base classes
  &(vtc_S3456C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3456C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3456C6),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  S3456C5  : S3456C6 {
  ::S3456C6 s3456c5f0;
  virtual void  v9(); // _ZN7S3456C52v9Ev
  virtual void  v10(); // _ZN7S3456C53v10Ev
  virtual void  v11(); // _ZN7S3456C53v11Ev
  virtual void  v12(); // _ZN7S3456C53v12Ev
  ~S3456C5(); // tgen
  S3456C5(); // tgen
};
//SIG(-1 S3456C5) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S3456C5 ::v9(){vfunc_called(this, "_ZN7S3456C52v9Ev");}
void  S3456C5 ::v10(){vfunc_called(this, "_ZN7S3456C53v10Ev");}
void  S3456C5 ::v11(){vfunc_called(this, "_ZN7S3456C53v11Ev");}
void  S3456C5 ::v12(){vfunc_called(this, "_ZN7S3456C53v12Ev");}
S3456C5 ::~S3456C5(){ note_dtor("S3456C5", this);} // tgen
S3456C5 ::S3456C5(){ note_ctor("S3456C5", this);} // tgen

static void Test_S3456C5()
{
  extern Class_Descriptor cd_S3456C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3456C5, buf);
    S3456C5 *dp, &lv = *(dp=new (buf) S3456C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3456C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C5)");
    check_base_class_offset(lv, (S3456C6*), 0, "S3456C5");
    check_field_offset(lv, s3456c5f0, ABISELECT(8,4), "S3456C5.s3456c5f0");
    test_class_info(&lv, &cd_S3456C5);
    dp->~S3456C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C5(Test_S3456C5, "S3456C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3456C5C1Ev();
extern void _ZN7S3456C5D1Ev();
Name_Map name_map_S3456C5[] = {
  NSPAIR(_ZN7S3456C5C1Ev),
  NSPAIR(_ZN7S3456C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3456C6;
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
static Base_Class bases_S3456C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3456C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3456C5[];
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
static  VTBL_ENTRY vtc_S3456C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C5[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
};
extern VTBL_ENTRY _ZTI7S3456C5[];
extern  VTBL_ENTRY _ZTV7S3456C5[];
Class_Descriptor cd_S3456C5 = {  "S3456C5", // class name
  bases_S3456C5, 1,
  &(vtc_S3456C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3456C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3456C5),11, //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  S3456C4  : S3456C5 {
  virtual void  v13(); // _ZN7S3456C43v13Ev
  virtual void  v14(); // _ZN7S3456C43v14Ev
  virtual void  v15(); // _ZN7S3456C43v15Ev
  virtual void  v16(); // _ZN7S3456C43v16Ev
  virtual void  v17(); // _ZN7S3456C43v17Ev
  virtual void  v18(); // _ZN7S3456C43v18Ev
  ~S3456C4(); // tgen
  S3456C4(); // tgen
};
//SIG(-1 S3456C4) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S3456C4 ::v13(){vfunc_called(this, "_ZN7S3456C43v13Ev");}
void  S3456C4 ::v14(){vfunc_called(this, "_ZN7S3456C43v14Ev");}
void  S3456C4 ::v15(){vfunc_called(this, "_ZN7S3456C43v15Ev");}
void  S3456C4 ::v16(){vfunc_called(this, "_ZN7S3456C43v16Ev");}
void  S3456C4 ::v17(){vfunc_called(this, "_ZN7S3456C43v17Ev");}
void  S3456C4 ::v18(){vfunc_called(this, "_ZN7S3456C43v18Ev");}
S3456C4 ::~S3456C4(){ note_dtor("S3456C4", this);} // tgen
S3456C4 ::S3456C4(){ note_ctor("S3456C4", this);} // tgen

static void Test_S3456C4()
{
  extern Class_Descriptor cd_S3456C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3456C4, buf);
    S3456C4 *dp, &lv = *(dp=new (buf) S3456C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3456C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C4)");
    check_base_class_offset(lv, (S3456C6*)(S3456C5*), 0, "S3456C4");
    check_base_class_offset(lv, (S3456C5*), 0, "S3456C4");
    test_class_info(&lv, &cd_S3456C4);
    dp->~S3456C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C4(Test_S3456C4, "S3456C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3456C4C1Ev();
extern void _ZN7S3456C4D1Ev();
Name_Map name_map_S3456C4[] = {
  NSPAIR(_ZN7S3456C4C1Ev),
  NSPAIR(_ZN7S3456C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3456C6;
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
extern Class_Descriptor cd_S3456C5;
extern VTBL_ENTRY _ZTI7S3456C5[];
extern  VTBL_ENTRY _ZTV7S3456C5[];
static Base_Class bases_S3456C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3456C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S3456C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S3456C4[];
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY vtc_S3456C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C4[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
extern VTBL_ENTRY _ZTI7S3456C4[];
extern  VTBL_ENTRY _ZTV7S3456C4[];
Class_Descriptor cd_S3456C4 = {  "S3456C4", // class name
  bases_S3456C4, 2,
  &(vtc_S3456C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3456C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3456C4),17, //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  S3456C3  : virtual S3456C4 {
  virtual void  v19(); // _ZN7S3456C33v19Ev
  virtual void  v20(); // _ZN7S3456C33v20Ev
  virtual void  v21(); // _ZN7S3456C33v21Ev
  ~S3456C3(); // tgen
  S3456C3(); // tgen
};
//SIG(-1 S3456C3) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S3456C3 ::v19(){vfunc_called(this, "_ZN7S3456C33v19Ev");}
void  S3456C3 ::v20(){vfunc_called(this, "_ZN7S3456C33v20Ev");}
void  S3456C3 ::v21(){vfunc_called(this, "_ZN7S3456C33v21Ev");}
S3456C3 ::~S3456C3(){ note_dtor("S3456C3", this);} // tgen
S3456C3 ::S3456C3(){ note_ctor("S3456C3", this);} // tgen

static void Test_S3456C3()
{
  extern Class_Descriptor cd_S3456C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3456C3, buf);
    S3456C3 *dp, &lv = *(dp=new (buf) S3456C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3456C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C3)");
    check_base_class_offset(lv, (S3456C6*)(S3456C5*)(S3456C4*), ABISELECT(8,4), "S3456C3");
    check_base_class_offset(lv, (S3456C5*)(S3456C4*), ABISELECT(8,4), "S3456C3");
    check_base_class_offset(lv, (S3456C4*), ABISELECT(8,4), "S3456C3");
    test_class_info(&lv, &cd_S3456C3);
    dp->~S3456C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C3(Test_S3456C3, "S3456C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3456C3C1Ev();
extern void _ZN7S3456C3D1Ev();
Name_Map name_map_S3456C3[] = {
  NSPAIR(_ZN7S3456C3C1Ev),
  NSPAIR(_ZN7S3456C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3456C6;
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
extern Class_Descriptor cd_S3456C5;
extern VTBL_ENTRY _ZTI7S3456C5[];
extern  VTBL_ENTRY _ZTV7S3456C5[];
extern Class_Descriptor cd_S3456C4;
extern VTBL_ENTRY _ZTI7S3456C4[];
extern  VTBL_ENTRY _ZTV7S3456C4[];
static Base_Class bases_S3456C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3456C6,    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_S3456C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3456C4,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S3456C3[];
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY vtc_S3456C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
extern VTBL_ENTRY _ZTV7S3456C3[];
static  VTT_ENTRY vtt_S3456C3[] = {
  {&(_ZTV7S3456C3[3]),  3,38},
  {&(_ZTV7S3456C3[23]),  23,38},
};
extern VTBL_ENTRY _ZTI7S3456C3[];
extern  VTBL_ENTRY _ZTV7S3456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C3[];
Class_Descriptor cd_S3456C3 = {  "S3456C3", // class name
  bases_S3456C3, 3,
  &(vtc_S3456C3[0]), // expected_vtbl_contents
  &(vtt_S3456C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3456C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3456C3),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3456C3),2, //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  S3456C2  : S3456C3 {
  virtual  ~S3456C2(); // _ZN7S3456C2D2Ev
  virtual void  v22(); // _ZN7S3456C23v22Ev
  virtual void  v23(); // _ZN7S3456C23v23Ev
  virtual void  v24(); // _ZN7S3456C23v24Ev
  virtual void  v25(); // _ZN7S3456C23v25Ev
  virtual void  v26(); // _ZN7S3456C23v26Ev
  virtual void  v27(); // _ZN7S3456C23v27Ev
  virtual void  v28(); // _ZN7S3456C23v28Ev
  S3456C2(); // tgen
};
//SIG(-1 S3456C2) C1{ BC2{ VBC3{ BC4{ BC5{ v8 v9 v10 v11 v12} v13 v14 v15 v16 FC5} v17 v18 v19 v20 v21 v22} v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7}


 S3456C2 ::~S3456C2(){ note_dtor("S3456C2", this);}
void  S3456C2 ::v22(){vfunc_called(this, "_ZN7S3456C23v22Ev");}
void  S3456C2 ::v23(){vfunc_called(this, "_ZN7S3456C23v23Ev");}
void  S3456C2 ::v24(){vfunc_called(this, "_ZN7S3456C23v24Ev");}
void  S3456C2 ::v25(){vfunc_called(this, "_ZN7S3456C23v25Ev");}
void  S3456C2 ::v26(){vfunc_called(this, "_ZN7S3456C23v26Ev");}
void  S3456C2 ::v27(){vfunc_called(this, "_ZN7S3456C23v27Ev");}
void  S3456C2 ::v28(){vfunc_called(this, "_ZN7S3456C23v28Ev");}
S3456C2 ::S3456C2(){ note_ctor("S3456C2", this);} // tgen

static void Test_S3456C2()
{
  extern Class_Descriptor cd_S3456C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3456C2, buf);
    S3456C2 *dp, &lv = *(dp=new (buf) S3456C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3456C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C2)");
    check_base_class_offset(lv, (S3456C6*)(S3456C5*)(S3456C4*), ABISELECT(8,4), "S3456C2");
    check_base_class_offset(lv, (S3456C5*)(S3456C4*), ABISELECT(8,4), "S3456C2");
    check_base_class_offset(lv, (S3456C4*)(S3456C3*), ABISELECT(8,4), "S3456C2");
    check_base_class_offset(lv, (S3456C3*), 0, "S3456C2");
    test_class_info(&lv, &cd_S3456C2);
    dp->~S3456C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C2(Test_S3456C2, "S3456C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3456C2C1Ev();
extern void _ZN7S3456C2D2Ev();
Name_Map name_map_S3456C2[] = {
  NSPAIR(_ZN7S3456C2C1Ev),
  NSPAIR(_ZN7S3456C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3456C6;
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
extern Class_Descriptor cd_S3456C5;
extern VTBL_ENTRY _ZTI7S3456C5[];
extern  VTBL_ENTRY _ZTV7S3456C5[];
extern Class_Descriptor cd_S3456C4;
extern VTBL_ENTRY _ZTI7S3456C4[];
extern  VTBL_ENTRY _ZTV7S3456C4[];
extern Class_Descriptor cd_S3456C3;
extern VTBL_ENTRY _ZTI7S3456C3[];
extern  VTBL_ENTRY _ZTV7S3456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C3[];
static Base_Class bases_S3456C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3456C6,    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_S3456C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3456C4,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    17, //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_S3456C3,    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 _ZTI7S3456C2[];
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
extern void _ZN7S3456C2D1Ev();
extern void _ZN7S3456C2D0Ev();
extern void _ZN7S3456C23v22Ev();
extern void _ZN7S3456C23v23Ev();
extern void _ZN7S3456C23v24Ev();
extern void _ZN7S3456C23v25Ev();
extern void _ZN7S3456C23v26Ev();
extern void _ZN7S3456C23v27Ev();
extern void _ZN7S3456C23v28Ev();
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY vtc_S3456C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C2[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3456C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3456C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v25Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3456C2[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
extern VTBL_ENTRY _ZTV7S3456C2[];
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C3__7S3456C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
};
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C4__7S3456C3__7S3456C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
static  VTT_ENTRY vtt_S3456C2[] = {
  {&(_ZTV7S3456C2[3]),  3,47},
  {&(_tg__ZTV7S3456C3__7S3456C2[3]),  3,6},
  {&(_tg__ZTV7S3456C4__7S3456C3__7S3456C2[17]),  17,32},
  {&(_ZTV7S3456C2[32]),  32,47},
};
extern VTBL_ENTRY _ZTI7S3456C2[];
extern  VTBL_ENTRY _ZTV7S3456C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C2[];
Class_Descriptor cd_S3456C2 = {  "S3456C2", // class name
  bases_S3456C2, 4,
  &(vtc_S3456C2[0]), // expected_vtbl_contents
  &(vtt_S3456C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3456C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3456C2),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3456C2),4, //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  S3456C7  {
  long s3456c7f0[5];
  void *s3456c7f1;
  virtual void  v29(); // _ZN7S3456C73v29Ev
  virtual void  v30(); // _ZN7S3456C73v30Ev
  ~S3456C7(); // tgen
  S3456C7(); // tgen
};
//SIG(-1 S3456C7) C1{ v1 v2 Fl[5] Fp}


void  S3456C7 ::v29(){vfunc_called(this, "_ZN7S3456C73v29Ev");}
void  S3456C7 ::v30(){vfunc_called(this, "_ZN7S3456C73v30Ev");}
S3456C7 ::~S3456C7(){ note_dtor("S3456C7", this);} // tgen
S3456C7 ::S3456C7(){ note_ctor("S3456C7", this);} // tgen

static void Test_S3456C7()
{
  extern Class_Descriptor cd_S3456C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S3456C7, buf);
    S3456C7 *dp, &lv = *(dp=new (buf) S3456C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S3456C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C7)");
    check_field_offset(lv, s3456c7f0, ABISELECT(8,4), "S3456C7.s3456c7f0");
    check_field_offset(lv, s3456c7f1, ABISELECT(48,24), "S3456C7.s3456c7f1");
    test_class_info(&lv, &cd_S3456C7);
    dp->~S3456C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C7(Test_S3456C7, "S3456C7", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S3456C7C1Ev();
extern void _ZN7S3456C7D1Ev();
Name_Map name_map_S3456C7[] = {
  NSPAIR(_ZN7S3456C7C1Ev),
  NSPAIR(_ZN7S3456C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3456C7[];
extern void _ZN7S3456C73v29Ev();
extern void _ZN7S3456C73v30Ev();
static  VTBL_ENTRY vtc_S3456C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C7[0]),
  (VTBL_ENTRY)&_ZN7S3456C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3456C73v30Ev,
};
extern VTBL_ENTRY _ZTI7S3456C7[];
extern  VTBL_ENTRY _ZTV7S3456C7[];
Class_Descriptor cd_S3456C7 = {  "S3456C7", // class name
  0,0,//no base classes
  &(vtc_S3456C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S3456C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3456C7),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  S3456C1  : S3456C2 , virtual S3456C7 {
  int s3456c1f0;
  __tsi64 s3456c1f1;
  virtual void  v1(); // _ZN7S3456C12v1Ev
  virtual void  v2(); // _ZN7S3456C12v2Ev
  virtual void  v3(); // _ZN7S3456C12v3Ev
  ~S3456C1(); // tgen
  S3456C1(); // tgen
};
//SIG(1 S3456C1) C1{ BC2{ BC3{ VBC4{ BC5{ BC6{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC6} v13 v14 v15 v16 v17 v18} v19 v20 v21} vd v22 v23 v24 v25 v26 v27 v28} VBC7{ v29 v30 Fl[5] Fp} v1 v2 v3 Fi FL}


void  S3456C1 ::v1(){vfunc_called(this, "_ZN7S3456C12v1Ev");}
void  S3456C1 ::v2(){vfunc_called(this, "_ZN7S3456C12v2Ev");}
void  S3456C1 ::v3(){vfunc_called(this, "_ZN7S3456C12v3Ev");}
S3456C1 ::~S3456C1(){ note_dtor("S3456C1", this);} // tgen
S3456C1 ::S3456C1(){ note_ctor("S3456C1", this);} // tgen

static void Test_S3456C1()
{
  extern Class_Descriptor cd_S3456C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S3456C1, buf);
    S3456C1 *dp, &lv = *(dp=new (buf) S3456C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S3456C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3456C1)");
    check_base_class_offset(lv, (S3456C6*)(S3456C5*)(S3456C4*), ABISELECT(24,16), "S3456C1");
    check_base_class_offset(lv, (S3456C5*)(S3456C4*), ABISELECT(24,16), "S3456C1");
    check_base_class_offset(lv, (S3456C4*)(S3456C3*)(S3456C2*), ABISELECT(24,16), "S3456C1");
    check_base_class_offset(lv, (S3456C3*)(S3456C2*), 0, "S3456C1");
    check_base_class_offset(lv, (S3456C2*), 0, "S3456C1");
    check_base_class_offset(lv, (S3456C7*), ABISELECT(40,24), "S3456C1");
    check_field_offset(lv, s3456c1f0, ABISELECT(8,4), "S3456C1.s3456c1f0");
    check_field_offset(lv, s3456c1f1, ABISELECT(16,8), "S3456C1.s3456c1f1");
    test_class_info(&lv, &cd_S3456C1);
    dp->~S3456C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3456C1(Test_S3456C1, "S3456C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S3456C1C1Ev();
extern void _ZN7S3456C1D1Ev();
Name_Map name_map_S3456C1[] = {
  NSPAIR(_ZN7S3456C1C1Ev),
  NSPAIR(_ZN7S3456C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3456C6;
extern VTBL_ENTRY _ZTI7S3456C6[];
extern  VTBL_ENTRY _ZTV7S3456C6[];
extern Class_Descriptor cd_S3456C5;
extern VTBL_ENTRY _ZTI7S3456C5[];
extern  VTBL_ENTRY _ZTV7S3456C5[];
extern Class_Descriptor cd_S3456C4;
extern VTBL_ENTRY _ZTI7S3456C4[];
extern  VTBL_ENTRY _ZTV7S3456C4[];
extern Class_Descriptor cd_S3456C3;
extern VTBL_ENTRY _ZTI7S3456C3[];
extern  VTBL_ENTRY _ZTV7S3456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C3[];
extern Class_Descriptor cd_S3456C2;
extern VTBL_ENTRY _ZTI7S3456C2[];
extern  VTBL_ENTRY _ZTV7S3456C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C2[];
extern Class_Descriptor cd_S3456C7;
extern VTBL_ENTRY _ZTI7S3456C7[];
extern  VTBL_ENTRY _ZTV7S3456C7[];
static Base_Class bases_S3456C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3456C6,    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
    1, //immediately_derived
  0, 0},
  {&cd_S3456C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3456C4,    ABISELECT(24,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    17, //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_S3456C3,    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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3456C2,    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},
  {&cd_S3456C7,    ABISELECT(40,24), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3456C1[];
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
extern void _ZN7S3456C1D1Ev();
extern void _ZN7S3456C1D0Ev();
extern void _ZN7S3456C23v22Ev();
extern void _ZN7S3456C23v23Ev();
extern void _ZN7S3456C23v24Ev();
extern void _ZN7S3456C23v25Ev();
extern void _ZN7S3456C23v26Ev();
extern void _ZN7S3456C23v27Ev();
extern void _ZN7S3456C23v28Ev();
extern void _ZN7S3456C12v1Ev();
extern void _ZN7S3456C12v2Ev();
extern void _ZN7S3456C12v3Ev();
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
extern void _ZN7S3456C73v29Ev();
extern void _ZN7S3456C73v30Ev();
static  VTBL_ENTRY vtc_S3456C1[] = {
  ABISELECT(40,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C1[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3456C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3456C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v25Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v28Ev,
  (VTBL_ENTRY)&_ZN7S3456C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3456C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3456C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3456C1[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3456C1[0]),
  (VTBL_ENTRY)&_ZN7S3456C73v29Ev,
  (VTBL_ENTRY)&_ZN7S3456C73v30Ev,
};
extern VTBL_ENTRY _ZTV7S3456C1[];
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
extern void _ZN7S3456C2D1Ev();
extern void _ZN7S3456C2D0Ev();
extern void _ZN7S3456C23v22Ev();
extern void _ZN7S3456C23v23Ev();
extern void _ZN7S3456C23v24Ev();
extern void _ZN7S3456C23v25Ev();
extern void _ZN7S3456C23v26Ev();
extern void _ZN7S3456C23v27Ev();
extern void _ZN7S3456C23v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C2__7S3456C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C2[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3456C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3456C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v25Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3456C23v28Ev,
};
extern void _ZN7S3456C33v19Ev();
extern void _ZN7S3456C33v20Ev();
extern void _ZN7S3456C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C37S3456C2__7S3456C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3456C33v21Ev,
};
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C4__7S3456C37S3456C2__7S3456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3456C3[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
extern void _ZN7S3456C62v4Ev();
extern void _ZN7S3456C62v5Ev();
extern void _ZN7S3456C62v6Ev();
extern void _ZN7S3456C62v7Ev();
extern void _ZN7S3456C62v8Ev();
extern void _ZN7S3456C52v9Ev();
extern void _ZN7S3456C53v10Ev();
extern void _ZN7S3456C53v11Ev();
extern void _ZN7S3456C53v12Ev();
extern void _ZN7S3456C43v13Ev();
extern void _ZN7S3456C43v14Ev();
extern void _ZN7S3456C43v15Ev();
extern void _ZN7S3456C43v16Ev();
extern void _ZN7S3456C43v17Ev();
extern void _ZN7S3456C43v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3456C4__7S3456C2__7S3456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3456C2[0]),
  (VTBL_ENTRY)&_ZN7S3456C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v7Ev,
  (VTBL_ENTRY)&_ZN7S3456C62v8Ev,
  (VTBL_ENTRY)&_ZN7S3456C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3456C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3456C43v18Ev,
};
static  VTT_ENTRY vtt_S3456C1[] = {
  {&(_ZTV7S3456C1[4]),  4,57},
  {&(_tg__ZTV7S3456C2__7S3456C1[3]),  3,15},
  {&(_tg__ZTV7S3456C37S3456C2__7S3456C1[3]),  3,6},
  {&(_tg__ZTV7S3456C4__7S3456C37S3456C2__7S3456C1[17]),  17,32},
  {&(_tg__ZTV7S3456C4__7S3456C2__7S3456C1[17]),  17,32},
  {&(_ZTV7S3456C1[36]),  36,57},
  {&(_ZTV7S3456C1[55]),  55,57},
};
extern VTBL_ENTRY _ZTI7S3456C1[];
extern  VTBL_ENTRY _ZTV7S3456C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3456C1[];
Class_Descriptor cd_S3456C1 = {  "S3456C1", // class name
  bases_S3456C1, 6,
  &(vtc_S3456C1[0]), // expected_vtbl_contents
  &(vtt_S3456C1[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S3456C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3456C1),57, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3456C1),7, //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  S20344C3_nt  {
  virtual void  v25(); // _ZN11S20344C3_nt3v25Ev
  virtual void  v26(); // _ZN11S20344C3_nt3v26Ev
  ~S20344C3_nt(); // tgen
  S20344C3_nt(); // tgen
};
//SIG(-1 S20344C3_nt) C1{ v1 v2}


void  S20344C3_nt ::v25(){vfunc_called(this, "_ZN11S20344C3_nt3v25Ev");}
void  S20344C3_nt ::v26(){vfunc_called(this, "_ZN11S20344C3_nt3v26Ev");}
S20344C3_nt ::~S20344C3_nt(){ note_dtor("S20344C3_nt", this);} // tgen
S20344C3_nt ::S20344C3_nt(){ note_ctor("S20344C3_nt", this);} // tgen

//skip512 S20344C3_nt

#else // __cplusplus

extern void _ZN11S20344C3_ntC1Ev();
extern void _ZN11S20344C3_ntD1Ev();
Name_Map name_map_S20344C3_nt[] = {
  NSPAIR(_ZN11S20344C3_ntC1Ev),
  NSPAIR(_ZN11S20344C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20344C3_nt[];
extern void _ZN11S20344C3_nt3v25Ev();
extern void _ZN11S20344C3_nt3v26Ev();
static  VTBL_ENTRY vtc_S20344C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20344C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20344C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S20344C3_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI11S20344C3_nt[];
VTBL_ENTRY *P__ZTI11S20344C3_nt = _ZTI11S20344C3_nt; 
extern  VTBL_ENTRY _ZTV11S20344C3_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20344C2  {
  void *s20344c2f0[6];
  ::S20344C3_nt s20344c2f1;
  int s20344c2f2;
  virtual void  v7(); // _ZN8S20344C22v7Ev
  virtual void  v8(); // _ZN8S20344C22v8Ev
  virtual void  v9(); // _ZN8S20344C22v9Ev
  ~S20344C2(); // tgen
  S20344C2(); // tgen
};
//SIG(-1 S20344C2) C1{ v1 v2 v3 Fp[6] FC2{ v4 v5} Fi}


void  S20344C2 ::v7(){vfunc_called(this, "_ZN8S20344C22v7Ev");}
void  S20344C2 ::v8(){vfunc_called(this, "_ZN8S20344C22v8Ev");}
void  S20344C2 ::v9(){vfunc_called(this, "_ZN8S20344C22v9Ev");}
S20344C2 ::~S20344C2(){ note_dtor("S20344C2", this);} // tgen
S20344C2 ::S20344C2(){ note_ctor("S20344C2", this);} // tgen

static void Test_S20344C2()
{
  extern Class_Descriptor cd_S20344C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20344C2, buf);
    S20344C2 *dp, &lv = *(dp=new (buf) S20344C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20344C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20344C2)");
    check_field_offset(lv, s20344c2f0, ABISELECT(8,4), "S20344C2.s20344c2f0");
    check_field_offset(lv, s20344c2f1, ABISELECT(56,28), "S20344C2.s20344c2f1");
    check_field_offset(lv, s20344c2f2, ABISELECT(64,32), "S20344C2.s20344c2f2");
    test_class_info(&lv, &cd_S20344C2);
    dp->~S20344C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20344C2(Test_S20344C2, "S20344C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20344C2C1Ev();
extern void _ZN8S20344C2D1Ev();
Name_Map name_map_S20344C2[] = {
  NSPAIR(_ZN8S20344C2C1Ev),
  NSPAIR(_ZN8S20344C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20344C2[];
extern void _ZN8S20344C22v7Ev();
extern void _ZN8S20344C22v8Ev();
extern void _ZN8S20344C22v9Ev();
static  VTBL_ENTRY vtc_S20344C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C2[0]),
  (VTBL_ENTRY)&_ZN8S20344C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20344C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20344C22v9Ev,
};
extern VTBL_ENTRY _ZTI8S20344C2[];
extern  VTBL_ENTRY _ZTV8S20344C2[];
Class_Descriptor cd_S20344C2 = {  "S20344C2", // class name
  0,0,//no base classes
  &(vtc_S20344C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20344C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20344C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20344C6_nt  {
  virtual void  v10(); // _ZN11S20344C6_nt3v10Ev
  virtual void  v11(); // _ZN11S20344C6_nt3v11Ev
  virtual void  v12(); // _ZN11S20344C6_nt3v12Ev
  ~S20344C6_nt(); // tgen
  S20344C6_nt(); // tgen
};
//SIG(-1 S20344C6_nt) C1{ v1 v2 v3}


void  S20344C6_nt ::v10(){vfunc_called(this, "_ZN11S20344C6_nt3v10Ev");}
void  S20344C6_nt ::v11(){vfunc_called(this, "_ZN11S20344C6_nt3v11Ev");}
void  S20344C6_nt ::v12(){vfunc_called(this, "_ZN11S20344C6_nt3v12Ev");}
S20344C6_nt ::~S20344C6_nt(){ note_dtor("S20344C6_nt", this);} // tgen
S20344C6_nt ::S20344C6_nt(){ note_ctor("S20344C6_nt", this);} // tgen

//skip512 S20344C6_nt

#else // __cplusplus

extern void _ZN11S20344C6_ntC1Ev();
extern void _ZN11S20344C6_ntD1Ev();
Name_Map name_map_S20344C6_nt[] = {
  NSPAIR(_ZN11S20344C6_ntC1Ev),
  NSPAIR(_ZN11S20344C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
static  VTBL_ENTRY vtc_S20344C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20344C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
VTBL_ENTRY *P__ZTI11S20344C6_nt = _ZTI11S20344C6_nt; 
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
Class_Descriptor cd_S20344C6_nt = {  "S20344C6_nt", // class name
  0,0,//no base classes
  &(vtc_S20344C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20344C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20344C6_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  S20344C5  : S20344C6_nt {
  int s20344c5f0;
  virtual void  v13(); // _ZN8S20344C53v13Ev
  virtual void  v14(); // _ZN8S20344C53v14Ev
  virtual void  v15(); // _ZN8S20344C53v15Ev
  virtual void  v16(); // _ZN8S20344C53v16Ev
  virtual void  v17(); // _ZN8S20344C53v17Ev
  virtual void  v18(); // _ZN8S20344C53v18Ev
  virtual void  v19(); // _ZN8S20344C53v19Ev
  ~S20344C5(); // tgen
  S20344C5(); // tgen
};
//SIG(-1 S20344C5) C1{ BC2{ v8 v9 v10} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20344C5 ::v13(){vfunc_called(this, "_ZN8S20344C53v13Ev");}
void  S20344C5 ::v14(){vfunc_called(this, "_ZN8S20344C53v14Ev");}
void  S20344C5 ::v15(){vfunc_called(this, "_ZN8S20344C53v15Ev");}
void  S20344C5 ::v16(){vfunc_called(this, "_ZN8S20344C53v16Ev");}
void  S20344C5 ::v17(){vfunc_called(this, "_ZN8S20344C53v17Ev");}
void  S20344C5 ::v18(){vfunc_called(this, "_ZN8S20344C53v18Ev");}
void  S20344C5 ::v19(){vfunc_called(this, "_ZN8S20344C53v19Ev");}
S20344C5 ::~S20344C5(){ note_dtor("S20344C5", this);} // tgen
S20344C5 ::S20344C5(){ note_ctor("S20344C5", this);} // tgen

static void Test_S20344C5()
{
  extern Class_Descriptor cd_S20344C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20344C5, buf);
    S20344C5 *dp, &lv = *(dp=new (buf) S20344C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20344C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20344C5)");
    check_base_class_offset(lv, (S20344C6_nt*), 0, "S20344C5");
    check_field_offset(lv, s20344c5f0, ABISELECT(8,4), "S20344C5.s20344c5f0");
    test_class_info(&lv, &cd_S20344C5);
    dp->~S20344C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20344C5(Test_S20344C5, "S20344C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20344C5C1Ev();
extern void _ZN8S20344C5D1Ev();
Name_Map name_map_S20344C5[] = {
  NSPAIR(_ZN8S20344C5C1Ev),
  NSPAIR(_ZN8S20344C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
static Base_Class bases_S20344C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20344C6_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 _ZTI8S20344C5[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY vtc_S20344C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C5[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
extern VTBL_ENTRY _ZTI8S20344C5[];
extern  VTBL_ENTRY _ZTV8S20344C5[];
Class_Descriptor cd_S20344C5 = {  "S20344C5", // class name
  bases_S20344C5, 1,
  &(vtc_S20344C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20344C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20344C5),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  S20344C7  : virtual S20344C5 , S20344C6_nt {
  virtual void  v20(); // _ZN8S20344C73v20Ev
  virtual void  v21(); // _ZN8S20344C73v21Ev
  virtual void  v22(); // _ZN8S20344C73v22Ev
  ~S20344C7(); // tgen
  S20344C7(); // tgen
};
//SIG(-1 S20344C7) C1{ VBC2{ BC3{ v4 v5 v6} v7 v8 v9 v10 v11 v12 v13 Fi} BC3 v1 v2 v3}


void  S20344C7 ::v20(){vfunc_called(this, "_ZN8S20344C73v20Ev");}
void  S20344C7 ::v21(){vfunc_called(this, "_ZN8S20344C73v21Ev");}
void  S20344C7 ::v22(){vfunc_called(this, "_ZN8S20344C73v22Ev");}
S20344C7 ::~S20344C7(){ note_dtor("S20344C7", this);} // tgen
S20344C7 ::S20344C7(){ note_ctor("S20344C7", this);} // tgen

static void Test_S20344C7()
{
  extern Class_Descriptor cd_S20344C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20344C7, buf);
    S20344C7 *dp, &lv = *(dp=new (buf) S20344C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20344C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20344C7)");
    check_base_class_offset(lv, (S20344C6_nt*)(S20344C5*), ABISELECT(8,4), "S20344C7");
    check_base_class_offset(lv, (S20344C5*), ABISELECT(8,4), "S20344C7");
    /*is_ambiguous_... S20344C7::S20344C6_nt */ AMB_check_base_class_offset(lv, (S20344C6_nt*), 0, "S20344C7");
    test_class_info(&lv, &cd_S20344C7);
    dp->~S20344C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20344C7(Test_S20344C7, "S20344C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20344C7C1Ev();
extern void _ZN8S20344C7D1Ev();
Name_Map name_map_S20344C7[] = {
  NSPAIR(_ZN8S20344C7C1Ev),
  NSPAIR(_ZN8S20344C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
extern Class_Descriptor cd_S20344C5;
extern VTBL_ENTRY _ZTI8S20344C5[];
extern  VTBL_ENTRY _ZTV8S20344C5[];
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
static Base_Class bases_S20344C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20344C6_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_S20344C5,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    12, //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_S20344C6_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 _ZTI8S20344C7[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY vtc_S20344C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
extern VTBL_ENTRY _ZTV8S20344C7[];
static  VTT_ENTRY vtt_S20344C7[] = {
  {&(_ZTV8S20344C7[3]),  3,31},
  {&(_ZTV8S20344C7[21]),  21,31},
};
extern VTBL_ENTRY _ZTI8S20344C7[];
extern  VTBL_ENTRY _ZTV8S20344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C7[];
Class_Descriptor cd_S20344C7 = {  "S20344C7", // class name
  bases_S20344C7, 3,
  &(vtc_S20344C7[0]), // expected_vtbl_contents
  &(vtt_S20344C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20344C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20344C7),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20344C7),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  S20344C4  : virtual S20344C5 , virtual S20344C7 {
  char s20344c4f0;
  virtual void  v23(); // _ZN8S20344C43v23Ev
  virtual void  v24(); // _ZN8S20344C43v24Ev
  ~S20344C4(); // tgen
  S20344C4(); // tgen
};
//SIG(-1 S20344C4) C1{ VBC2{ BC3{ v3 v4 v5} v6 v7 v8 v9 v10 v11 v12 Fi} VBC4{ VBC2 BC3 v13 v14 v15} v1 v2 Fc}


void  S20344C4 ::v23(){vfunc_called(this, "_ZN8S20344C43v23Ev");}
void  S20344C4 ::v24(){vfunc_called(this, "_ZN8S20344C43v24Ev");}
S20344C4 ::~S20344C4(){ note_dtor("S20344C4", this);} // tgen
S20344C4 ::S20344C4(){ note_ctor("S20344C4", this);} // tgen

static void Test_S20344C4()
{
  extern Class_Descriptor cd_S20344C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20344C4, buf);
    S20344C4 *dp, &lv = *(dp=new (buf) S20344C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20344C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20344C4)");
    check_base_class_offset(lv, (S20344C6_nt*)(S20344C5*), ABISELECT(16,8), "S20344C4");
    check_base_class_offset(lv, (S20344C5*), ABISELECT(16,8), "S20344C4");
    check_base_class_offset(lv, (S20344C5*)(S20344C7*), ABISELECT(16,8), "S20344C4");
    /*is_ambiguous_... S20344C7::S20344C6_nt */ AMB_check_base_class_offset(lv, (S20344C6_nt*)(S20344C7*), 0, "S20344C4");
    check_base_class_offset(lv, (S20344C7*), 0, "S20344C4");
    check_field_offset(lv, s20344c4f0, ABISELECT(8,4), "S20344C4.s20344c4f0");
    test_class_info(&lv, &cd_S20344C4);
    dp->~S20344C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20344C4(Test_S20344C4, "S20344C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20344C4C1Ev();
extern void _ZN8S20344C4D1Ev();
Name_Map name_map_S20344C4[] = {
  NSPAIR(_ZN8S20344C4C1Ev),
  NSPAIR(_ZN8S20344C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
extern Class_Descriptor cd_S20344C5;
extern VTBL_ENTRY _ZTI8S20344C5[];
extern  VTBL_ENTRY _ZTV8S20344C5[];
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
extern Class_Descriptor cd_S20344C7;
extern VTBL_ENTRY _ZTI8S20344C7[];
extern  VTBL_ENTRY _ZTV8S20344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C7[];
static Base_Class bases_S20344C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20344C6_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_S20344C5,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    12, //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_S20344C6_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_S20344C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20344C4[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
extern void _ZN8S20344C43v23Ev();
extern void _ZN8S20344C43v24Ev();
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY vtc_S20344C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C4[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v23Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20344C4[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
extern VTBL_ENTRY _ZTV8S20344C4[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C7__8S20344C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
};
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C5__8S20344C7__8S20344C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
static  VTT_ENTRY vtt_S20344C4[] = {
  {&(_ZTV8S20344C4[10]),  10,40},
  {&(_ZTV8S20344C4[30]),  30,40},
  {&(_ZTV8S20344C4[10]),  10,40},
  {&(_tg__ZTV8S20344C7__8S20344C4[3]),  3,9},
  {&(_tg__ZTV8S20344C5__8S20344C7__8S20344C4[12]),  12,22},
};
extern VTBL_ENTRY _ZTI8S20344C4[];
extern  VTBL_ENTRY _ZTV8S20344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C4[];
Class_Descriptor cd_S20344C4 = {  "S20344C4", // class name
  bases_S20344C4, 4,
  &(vtc_S20344C4[0]), // expected_vtbl_contents
  &(vtt_S20344C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20344C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20344C4),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20344C4),5, //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  S20344C1  : virtual S20344C2 , virtual S20344C4 {
  __tsi64 s20344c1f0;
  virtual void  v1(); // _ZN8S20344C12v1Ev
  virtual void  v2(); // _ZN8S20344C12v2Ev
  virtual void  v3(); // _ZN8S20344C12v3Ev
  virtual void  v4(); // _ZN8S20344C12v4Ev
  virtual void  v5(); // _ZN8S20344C12v5Ev
  virtual void  v6(); // _ZN8S20344C12v6Ev
  ~S20344C1(); // tgen
  S20344C1(); // tgen
};
//SIG(1 S20344C1) C1{ VBC2{ v7 v8 v9 Fp[6] FC3{ v25 v26} Fi} VBC4{ VBC5{ BC6{ v10 v11 v12} v13 v14 v15 v16 v17 v18 v19 Fi} VBC7{ VBC5 BC6 v20 v21 v22} v23 v24 Fc} v1 v2 v3 v4 v5 v6 FL}


void  S20344C1 ::v1(){vfunc_called(this, "_ZN8S20344C12v1Ev");}
void  S20344C1 ::v2(){vfunc_called(this, "_ZN8S20344C12v2Ev");}
void  S20344C1 ::v3(){vfunc_called(this, "_ZN8S20344C12v3Ev");}
void  S20344C1 ::v4(){vfunc_called(this, "_ZN8S20344C12v4Ev");}
void  S20344C1 ::v5(){vfunc_called(this, "_ZN8S20344C12v5Ev");}
void  S20344C1 ::v6(){vfunc_called(this, "_ZN8S20344C12v6Ev");}
S20344C1 ::~S20344C1(){ note_dtor("S20344C1", this);} // tgen
S20344C1 ::S20344C1(){ note_ctor("S20344C1", this);} // tgen

static void Test_S20344C1()
{
  extern Class_Descriptor cd_S20344C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S20344C1, buf);
    S20344C1 *dp, &lv = *(dp=new (buf) S20344C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S20344C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20344C1)");
    check_base_class_offset(lv, (S20344C2*), ABISELECT(16,12), "S20344C1");
    check_base_class_offset(lv, (S20344C6_nt*)(S20344C5*), ABISELECT(104,56), "S20344C1");
    check_base_class_offset(lv, (S20344C5*)(S20344C4*), ABISELECT(104,56), "S20344C1");
    check_base_class_offset(lv, (S20344C5*)(S20344C7*), ABISELECT(104,56), "S20344C1");
    /*is_ambiguous_... S20344C7::S20344C6_nt */ AMB_check_base_class_offset(lv, (S20344C6_nt*)(S20344C7*), 0, "S20344C1");
    check_base_class_offset(lv, (S20344C7*)(S20344C4*), 0, "S20344C1");
    check_base_class_offset(lv, (S20344C4*), ABISELECT(88,48), "S20344C1");
    check_field_offset(lv, s20344c1f0, ABISELECT(8,4), "S20344C1.s20344c1f0");
    test_class_info(&lv, &cd_S20344C1);
    dp->~S20344C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20344C1(Test_S20344C1, "S20344C1", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S20344C1C1Ev();
extern void _ZN8S20344C1D1Ev();
Name_Map name_map_S20344C1[] = {
  NSPAIR(_ZN8S20344C1C1Ev),
  NSPAIR(_ZN8S20344C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20344C2;
extern VTBL_ENTRY _ZTI8S20344C2[];
extern  VTBL_ENTRY _ZTV8S20344C2[];
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
extern Class_Descriptor cd_S20344C5;
extern VTBL_ENTRY _ZTI8S20344C5[];
extern  VTBL_ENTRY _ZTV8S20344C5[];
extern Class_Descriptor cd_S20344C6_nt;
extern VTBL_ENTRY _ZTI11S20344C6_nt[];
extern  VTBL_ENTRY _ZTV11S20344C6_nt[];
extern Class_Descriptor cd_S20344C7;
extern VTBL_ENTRY _ZTI8S20344C7[];
extern  VTBL_ENTRY _ZTV8S20344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C7[];
extern Class_Descriptor cd_S20344C4;
extern VTBL_ENTRY _ZTI8S20344C4[];
extern  VTBL_ENTRY _ZTV8S20344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C4[];
static Base_Class bases_S20344C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20344C2,    ABISELECT(16,12), //bcp->offset
    24, //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},
  {&cd_S20344C6_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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20344C5,    ABISELECT(104,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    12, //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
    4, //immediately_derived
  0, 1},
  {&cd_S20344C6_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_S20344C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20344C4,    ABISELECT(88,48), //bcp->offset
    32, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20344C1[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
extern void _ZN8S20344C12v1Ev();
extern void _ZN8S20344C12v2Ev();
extern void _ZN8S20344C12v3Ev();
extern void _ZN8S20344C12v4Ev();
extern void _ZN8S20344C12v5Ev();
extern void _ZN8S20344C12v6Ev();
extern void _ZN8S20344C22v7Ev();
extern void _ZN8S20344C22v8Ev();
extern void _ZN8S20344C22v9Ev();
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
extern void _ZN8S20344C43v23Ev();
extern void _ZN8S20344C43v24Ev();
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY vtc_S20344C1[] = {
  0,
  ABISELECT(88,48),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C1[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20344C12v6Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20344C1[0]),
  (VTBL_ENTRY)&_ZN8S20344C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20344C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20344C22v9Ev,
  0,
  0,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20344C1[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v23Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20344C1[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
extern VTBL_ENTRY _ZTV8S20344C1[];
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
extern void _ZN8S20344C43v23Ev();
extern void _ZN8S20344C43v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C4__8S20344C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C4[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v23Ev,
  (VTBL_ENTRY)&_ZN8S20344C43v24Ev,
};
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C5__8S20344C4__8S20344C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20344C4[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C7__8S20344C4__8S20344C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,56),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20344C4[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
};
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C73v20Ev();
extern void _ZN8S20344C73v21Ev();
extern void _ZN8S20344C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C7__8S20344C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20344C73v22Ev,
};
extern void _ZN11S20344C6_nt3v10Ev();
extern void _ZN11S20344C6_nt3v11Ev();
extern void _ZN11S20344C6_nt3v12Ev();
extern void _ZN8S20344C53v13Ev();
extern void _ZN8S20344C53v14Ev();
extern void _ZN8S20344C53v15Ev();
extern void _ZN8S20344C53v16Ev();
extern void _ZN8S20344C53v17Ev();
extern void _ZN8S20344C53v18Ev();
extern void _ZN8S20344C53v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20344C5__8S20344C7__8S20344C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20344C7[0]),
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20344C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20344C53v19Ev,
};
static  VTT_ENTRY vtt_S20344C1[] = {
  {&(_ZTV8S20344C1[12]),  12,74},
  {&(_ZTV8S20344C1[29]),  29,74},
  {&(_ZTV8S20344C1[44]),  44,74},
  {&(_ZTV8S20344C1[64]),  64,74},
  {&(_ZTV8S20344C1[12]),  12,74},
  {&(_tg__ZTV8S20344C4__8S20344C1[10]),  10,18},
  {&(_tg__ZTV8S20344C5__8S20344C4__8S20344C1[12]),  12,22},
  {&(_tg__ZTV8S20344C7__8S20344C4__8S20344C1[9]),  9,15},
  {&(_tg__ZTV8S20344C7__8S20344C1[3]),  3,9},
  {&(_tg__ZTV8S20344C5__8S20344C7__8S20344C1[12]),  12,22},
};
extern VTBL_ENTRY _ZTI8S20344C1[];
extern  VTBL_ENTRY _ZTV8S20344C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20344C1[];
Class_Descriptor cd_S20344C1 = {  "S20344C1", // class name
  bases_S20344C1, 6,
  &(vtc_S20344C1[0]), // expected_vtbl_contents
  &(vtt_S20344C1[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S20344C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20344C1),74, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20344C1),10, //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  S1535C4  {
  void *s1535c4f0;
  virtual void  v7(); // _ZN7S1535C42v7Ev
  virtual void  v8(); // _ZN7S1535C42v8Ev
  virtual void  v9(); // _ZN7S1535C42v9Ev
  virtual void  v10(); // _ZN7S1535C43v10Ev
  ~S1535C4(); // tgen
  S1535C4(); // tgen
};
//SIG(-1 S1535C4) C1{ v1 v2 v3 v4 Fp}


void  S1535C4 ::v7(){vfunc_called(this, "_ZN7S1535C42v7Ev");}
void  S1535C4 ::v8(){vfunc_called(this, "_ZN7S1535C42v8Ev");}
void  S1535C4 ::v9(){vfunc_called(this, "_ZN7S1535C42v9Ev");}
void  S1535C4 ::v10(){vfunc_called(this, "_ZN7S1535C43v10Ev");}
S1535C4 ::~S1535C4(){ note_dtor("S1535C4", this);} // tgen
S1535C4 ::S1535C4(){ note_ctor("S1535C4", this);} // tgen

static void Test_S1535C4()
{
  extern Class_Descriptor cd_S1535C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1535C4, buf);
    S1535C4 *dp, &lv = *(dp=new (buf) S1535C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1535C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C4)");
    check_field_offset(lv, s1535c4f0, ABISELECT(8,4), "S1535C4.s1535c4f0");
    test_class_info(&lv, &cd_S1535C4);
    dp->~S1535C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C4(Test_S1535C4, "S1535C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1535C4C1Ev();
extern void _ZN7S1535C4D1Ev();
Name_Map name_map_S1535C4[] = {
  NSPAIR(_ZN7S1535C4C1Ev),
  NSPAIR(_ZN7S1535C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1535C4[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
static  VTBL_ENTRY vtc_S1535C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C4[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
};
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
Class_Descriptor cd_S1535C4 = {  "S1535C4", // class name
  0,0,//no base classes
  &(vtc_S1535C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1535C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1535C4),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  S1535C3  : S1535C4 {
  void *s1535c3f0;
  __tsi64 s1535c3f1;
  virtual void  v11(); // _ZN7S1535C33v11Ev
  virtual void  v12(); // _ZN7S1535C33v12Ev
  ~S1535C3(); // tgen
  S1535C3(); // tgen
};
//SIG(-1 S1535C3) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S1535C3 ::v11(){vfunc_called(this, "_ZN7S1535C33v11Ev");}
void  S1535C3 ::v12(){vfunc_called(this, "_ZN7S1535C33v12Ev");}
S1535C3 ::~S1535C3(){ note_dtor("S1535C3", this);} // tgen
S1535C3 ::S1535C3(){ note_ctor("S1535C3", this);} // tgen

static void Test_S1535C3()
{
  extern Class_Descriptor cd_S1535C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1535C3, buf);
    S1535C3 *dp, &lv = *(dp=new (buf) S1535C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1535C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C3)");
    check_base_class_offset(lv, (S1535C4*), 0, "S1535C3");
    check_field_offset(lv, s1535c3f0, ABISELECT(16,8), "S1535C3.s1535c3f0");
    check_field_offset(lv, s1535c3f1, ABISELECT(24,12), "S1535C3.s1535c3f1");
    test_class_info(&lv, &cd_S1535C3);
    dp->~S1535C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C3(Test_S1535C3, "S1535C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1535C3C1Ev();
extern void _ZN7S1535C3D1Ev();
Name_Map name_map_S1535C3[] = {
  NSPAIR(_ZN7S1535C3C1Ev),
  NSPAIR(_ZN7S1535C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
static Base_Class bases_S1535C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1535C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1535C3[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY vtc_S1535C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C3[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
Class_Descriptor cd_S1535C3 = {  "S1535C3", // class name
  bases_S1535C3, 1,
  &(vtc_S1535C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1535C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1535C3),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  S1535C6  : S1535C4 {
  int s1535c6f0;
  virtual  ~S1535C6(); // _ZN7S1535C6D1Ev
  virtual void  v13(); // _ZN7S1535C63v13Ev
  virtual void  v14(); // _ZN7S1535C63v14Ev
  virtual void  v15(); // _ZN7S1535C63v15Ev
  virtual void  v16(); // _ZN7S1535C63v16Ev
  S1535C6(); // tgen
};
//SIG(-1 S1535C6) C1{ BC2{ v5 v6 v7 v8 Fp} vd v1 v2 v3 v4 Fi}


 S1535C6 ::~S1535C6(){ note_dtor("S1535C6", this);}
void  S1535C6 ::v13(){vfunc_called(this, "_ZN7S1535C63v13Ev");}
void  S1535C6 ::v14(){vfunc_called(this, "_ZN7S1535C63v14Ev");}
void  S1535C6 ::v15(){vfunc_called(this, "_ZN7S1535C63v15Ev");}
void  S1535C6 ::v16(){vfunc_called(this, "_ZN7S1535C63v16Ev");}
S1535C6 ::S1535C6(){ note_ctor("S1535C6", this);} // tgen

static void Test_S1535C6()
{
  extern Class_Descriptor cd_S1535C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1535C6, buf);
    S1535C6 *dp, &lv = *(dp=new (buf) S1535C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1535C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C6)");
    check_base_class_offset(lv, (S1535C4*), 0, "S1535C6");
    check_field_offset(lv, s1535c6f0, ABISELECT(16,8), "S1535C6.s1535c6f0");
    test_class_info(&lv, &cd_S1535C6);
    dp->~S1535C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C6(Test_S1535C6, "S1535C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1535C6C1Ev();
extern void _ZN7S1535C6D1Ev();
Name_Map name_map_S1535C6[] = {
  NSPAIR(_ZN7S1535C6C1Ev),
  NSPAIR(_ZN7S1535C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
static Base_Class bases_S1535C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1535C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1535C6[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C6D1Ev();
extern void _ZN7S1535C6D0Ev();
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
static  VTBL_ENTRY vtc_S1535C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C6[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C6D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C6D0Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
};
extern VTBL_ENTRY _ZTI7S1535C6[];
extern  VTBL_ENTRY _ZTV7S1535C6[];
Class_Descriptor cd_S1535C6 = {  "S1535C6", // class name
  bases_S1535C6, 1,
  &(vtc_S1535C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1535C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1535C6),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  S1535C5  : virtual S1535C3 , S1535C6 {
  char s1535c5f0[7];
  virtual  ~S1535C5(); // _ZN7S1535C5D2Ev
  virtual void  v17(); // _ZN7S1535C53v17Ev
  virtual void  v18(); // _ZN7S1535C53v18Ev
  virtual void  v19(); // _ZN7S1535C53v19Ev
  virtual void  v20(); // _ZN7S1535C53v20Ev
  virtual void  v21(); // _ZN7S1535C53v21Ev
  S1535C5(); // tgen
};
//SIG(-1 S1535C5) C1{ VBC2{ BC3{ v6 v7 v8 v9 Fp} v10 v11 Fp FL} BC4{ BC3 vd v12 v13 v14 v15 Fi} vd v1 v2 v3 v4 v5 Fc[7]}


 S1535C5 ::~S1535C5(){ note_dtor("S1535C5", this);}
void  S1535C5 ::v17(){vfunc_called(this, "_ZN7S1535C53v17Ev");}
void  S1535C5 ::v18(){vfunc_called(this, "_ZN7S1535C53v18Ev");}
void  S1535C5 ::v19(){vfunc_called(this, "_ZN7S1535C53v19Ev");}
void  S1535C5 ::v20(){vfunc_called(this, "_ZN7S1535C53v20Ev");}
void  S1535C5 ::v21(){vfunc_called(this, "_ZN7S1535C53v21Ev");}
S1535C5 ::S1535C5(){ note_ctor("S1535C5", this);} // tgen

static void Test_S1535C5()
{
  extern Class_Descriptor cd_S1535C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S1535C5, buf);
    S1535C5 *dp, &lv = *(dp=new (buf) S1535C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S1535C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C5)");
    check_base_class_offset(lv, (S1535C4*)(S1535C3*), ABISELECT(32,20), "S1535C5");
    check_base_class_offset(lv, (S1535C3*), ABISELECT(32,20), "S1535C5");
    check_base_class_offset(lv, (S1535C4*)(S1535C6*), 0, "S1535C5");
    check_base_class_offset(lv, (S1535C6*), 0, "S1535C5");
    check_field_offset(lv, s1535c5f0, ABISELECT(20,12), "S1535C5.s1535c5f0");
    test_class_info(&lv, &cd_S1535C5);
    dp->~S1535C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C5(Test_S1535C5, "S1535C5", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S1535C5C1Ev();
extern void _ZN7S1535C5D2Ev();
Name_Map name_map_S1535C5[] = {
  NSPAIR(_ZN7S1535C5C1Ev),
  NSPAIR(_ZN7S1535C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C3;
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C6;
extern VTBL_ENTRY _ZTI7S1535C6[];
extern  VTBL_ENTRY _ZTV7S1535C6[];
static Base_Class bases_S1535C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1535C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S1535C3,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //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_S1535C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1535C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1535C5[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C5D1Ev();
extern void _ZN7S1535C5D0Ev();
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY vtc_S1535C5[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
extern VTBL_ENTRY _ZTV7S1535C5[];
static  VTT_ENTRY vtt_S1535C5[] = {
  {&(_ZTV7S1535C5[3]),  3,32},
  {&(_ZTV7S1535C5[26]),  26,32},
};
extern VTBL_ENTRY _ZTI7S1535C5[];
extern  VTBL_ENTRY _ZTV7S1535C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C5[];
Class_Descriptor cd_S1535C5 = {  "S1535C5", // class name
  bases_S1535C5, 4,
  &(vtc_S1535C5[0]), // expected_vtbl_contents
  &(vtt_S1535C5[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S1535C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1535C5),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1535C5),2, //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  S1535C2  : S1535C3 , virtual S1535C5 {
  short s1535c2f0[6];
  virtual void  v22(); // _ZN7S1535C23v22Ev
  virtual void  v23(); // _ZN7S1535C23v23Ev
  virtual void  v24(); // _ZN7S1535C23v24Ev
  ~S1535C2(); // tgen
  S1535C2(); // tgen
};
//SIG(-1 S1535C2) C1{ BC2{ BC3{ v4 v5 v6 v7 Fp} v8 v9 Fp FL} VBC4{ VBC2 BC5{ BC3 vd v10 v11 v12 v13 Fi} vd v14 v15 v16 v17 v18 Fc[7]} v1 v2 v3 Fs[6]}


void  S1535C2 ::v22(){vfunc_called(this, "_ZN7S1535C23v22Ev");}
void  S1535C2 ::v23(){vfunc_called(this, "_ZN7S1535C23v23Ev");}
void  S1535C2 ::v24(){vfunc_called(this, "_ZN7S1535C23v24Ev");}
S1535C2 ::~S1535C2(){ note_dtor("S1535C2", this);} // tgen
S1535C2 ::S1535C2(){ note_ctor("S1535C2", this);} // tgen

static void Test_S1535C2()
{
  extern Class_Descriptor cd_S1535C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S1535C2, buf);
    S1535C2 *dp, &lv = *(dp=new (buf) S1535C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S1535C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C2)");
    /*is_ambiguous_... S1535C2::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C4*)(S1535C3*), 0, "S1535C2");
    /*is_ambiguous_... S1535C2::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C3*), 0, "S1535C2");
    /*is_ambiguous_... S1535C2::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C4*)(S1535C3*), ABISELECT(80,52), "S1535C2");
    check_base_class_offset(lv, (S1535C3*)(S1535C5*), ABISELECT(80,52), "S1535C2");
    check_base_class_offset(lv, (S1535C4*)(S1535C6*)(S1535C5*), ABISELECT(48,32), "S1535C2");
    check_base_class_offset(lv, (S1535C6*)(S1535C5*), ABISELECT(48,32), "S1535C2");
    check_base_class_offset(lv, (S1535C5*), ABISELECT(48,32), "S1535C2");
    check_field_offset(lv, s1535c2f0, ABISELECT(32,20), "S1535C2.s1535c2f0");
    test_class_info(&lv, &cd_S1535C2);
    dp->~S1535C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C2(Test_S1535C2, "S1535C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S1535C2C1Ev();
extern void _ZN7S1535C2D1Ev();
Name_Map name_map_S1535C2[] = {
  NSPAIR(_ZN7S1535C2C1Ev),
  NSPAIR(_ZN7S1535C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C3;
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C3;
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C6;
extern VTBL_ENTRY _ZTI7S1535C6[];
extern  VTBL_ENTRY _ZTV7S1535C6[];
extern Class_Descriptor cd_S1535C5;
extern VTBL_ENTRY _ZTI7S1535C5[];
extern  VTBL_ENTRY _ZTV7S1535C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C5[];
static Base_Class bases_S1535C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1535C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1535C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1535C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1535C3,    ABISELECT(80,52), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //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
    6, //immediately_derived
  0, 1},
  {&cd_S1535C4,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1535C6,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1535C5,    ABISELECT(48,32), //bcp->offset
    15, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1535C2[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
extern void _ZN7S1535C23v22Ev();
extern void _ZN7S1535C23v23Ev();
extern void _ZN7S1535C23v24Ev();
extern void _ZN7S1535C2D1Ev();
extern void _ZN7S1535C2D0Ev();
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1535C2D1Ev,_ZThn32_N7S1535C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1535C2D0Ev,_ZThn32_N7S1535C2D0Ev)() __attribute__((weak));
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY vtc_S1535C2[] = {
  ABISELECT(80,52),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1535C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C2D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
extern VTBL_ENTRY _ZTV7S1535C2[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C5D1Ev();
extern void _ZN7S1535C5D0Ev();
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C5__7S1535C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
};
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C3__7S1535C5__7S1535C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
static  VTT_ENTRY vtt_S1535C2[] = {
  {&(_ZTV7S1535C2[4]),  4,61},
  {&(_ZTV7S1535C2[32]),  32,61},
  {&(_ZTV7S1535C2[55]),  55,61},
  {&(_tg__ZTV7S1535C5__7S1535C2[3]),  3,18},
  {&(_tg__ZTV7S1535C3__7S1535C5__7S1535C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S1535C2[];
extern  VTBL_ENTRY _ZTV7S1535C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C2[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C2D0Ev,_ZThn32_N7S1535C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C2D1Ev,_ZThn32_N7S1535C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1535C2 = {  "S1535C2", // class name
  bases_S1535C2, 7,
  &(vtc_S1535C2[0]), // expected_vtbl_contents
  &(vtt_S1535C2[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S1535C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1535C2),61, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1535C2),5, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1535C1  : S1535C2 {
  virtual  ~S1535C1(); // _ZN7S1535C1D2Ev
  virtual void  v1(); // _ZN7S1535C12v1Ev
  virtual void  v2(); // _ZN7S1535C12v2Ev
  virtual void  v3(); // _ZN7S1535C12v3Ev
  virtual void  v4(); // _ZN7S1535C12v4Ev
  virtual void  v5(); // _ZN7S1535C12v5Ev
  virtual void  v6(); // _ZN7S1535C12v6Ev
  S1535C1(); // tgen
};
//SIG(1 S1535C1) C1{ BC2{ BC3{ BC4{ v7 v8 v9 v10 Fp} v11 v12 Fp FL} VBC5{ VBC3 BC6{ BC4 vd v13 v14 v15 v16 Fi} vd v17 v18 v19 v20 v21 Fc[7]} v22 v23 v24 Fs[6]} vd v1 v2 v3 v4 v5 v6}


 S1535C1 ::~S1535C1(){ note_dtor("S1535C1", this);}
void  S1535C1 ::v1(){vfunc_called(this, "_ZN7S1535C12v1Ev");}
void  S1535C1 ::v2(){vfunc_called(this, "_ZN7S1535C12v2Ev");}
void  S1535C1 ::v3(){vfunc_called(this, "_ZN7S1535C12v3Ev");}
void  S1535C1 ::v4(){vfunc_called(this, "_ZN7S1535C12v4Ev");}
void  S1535C1 ::v5(){vfunc_called(this, "_ZN7S1535C12v5Ev");}
void  S1535C1 ::v6(){vfunc_called(this, "_ZN7S1535C12v6Ev");}
S1535C1 ::S1535C1(){ note_ctor("S1535C1", this);} // tgen

static void Test_S1535C1()
{
  extern Class_Descriptor cd_S1535C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S1535C1, buf);
    S1535C1 *dp, &lv = *(dp=new (buf) S1535C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S1535C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1535C1)");
    /*is_ambiguous_... S1535C2::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C4*)(S1535C3*)(S1535C2*), 0, "S1535C1");
    /*is_ambiguous_... S1535C2::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C3*)(S1535C2*), 0, "S1535C1");
    /*is_ambiguous_... S1535C1::S1535C3 */ AMB_check_base_class_offset(lv, (S1535C4*)(S1535C3*), ABISELECT(80,52), "S1535C1");
    check_base_class_offset(lv, (S1535C3*)(S1535C5*), ABISELECT(80,52), "S1535C1");
    check_base_class_offset(lv, (S1535C4*)(S1535C6*)(S1535C5*), ABISELECT(48,32), "S1535C1");
    check_base_class_offset(lv, (S1535C6*)(S1535C5*), ABISELECT(48,32), "S1535C1");
    check_base_class_offset(lv, (S1535C5*)(S1535C2*), ABISELECT(48,32), "S1535C1");
    check_base_class_offset(lv, (S1535C2*), 0, "S1535C1");
    test_class_info(&lv, &cd_S1535C1);
    dp->~S1535C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1535C1(Test_S1535C1, "S1535C1", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S1535C1C1Ev();
extern void _ZN7S1535C1D2Ev();
Name_Map name_map_S1535C1[] = {
  NSPAIR(_ZN7S1535C1C1Ev),
  NSPAIR(_ZN7S1535C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C3;
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C3;
extern VTBL_ENTRY _ZTI7S1535C3[];
extern  VTBL_ENTRY _ZTV7S1535C3[];
extern Class_Descriptor cd_S1535C4;
extern VTBL_ENTRY _ZTI7S1535C4[];
extern  VTBL_ENTRY _ZTV7S1535C4[];
extern Class_Descriptor cd_S1535C6;
extern VTBL_ENTRY _ZTI7S1535C6[];
extern  VTBL_ENTRY _ZTV7S1535C6[];
extern Class_Descriptor cd_S1535C5;
extern VTBL_ENTRY _ZTI7S1535C5[];
extern  VTBL_ENTRY _ZTV7S1535C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C5[];
extern Class_Descriptor cd_S1535C2;
extern VTBL_ENTRY _ZTI7S1535C2[];
extern  VTBL_ENTRY _ZTV7S1535C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C2[];
static Base_Class bases_S1535C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1535C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1535C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1535C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1535C3,    ABISELECT(80,52), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //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
    6, //immediately_derived
  0, 1},
  {&cd_S1535C4,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1535C6,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1535C5,    ABISELECT(48,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1535C2,    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 _ZTI7S1535C1[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
extern void _ZN7S1535C23v22Ev();
extern void _ZN7S1535C23v23Ev();
extern void _ZN7S1535C23v24Ev();
extern void _ZN7S1535C1D1Ev();
extern void _ZN7S1535C1D0Ev();
extern void _ZN7S1535C12v1Ev();
extern void _ZN7S1535C12v2Ev();
extern void _ZN7S1535C12v3Ev();
extern void _ZN7S1535C12v4Ev();
extern void _ZN7S1535C12v5Ev();
extern void _ZN7S1535C12v6Ev();
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S1535C1D1Ev,_ZTv0_n32_N7S1535C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S1535C1D1Ev,_ZThn32_N7S1535C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1535C1D0Ev,_ZTv0_n32_N7S1535C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S1535C1D0Ev,_ZThn32_N7S1535C1D0Ev)() __attribute__((weak));
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY vtc_S1535C1[] = {
  ABISELECT(80,52),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C1[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1535C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1535C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S1535C1[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C1D1Ev,_ZTv0_n32_N7S1535C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C1D0Ev,_ZTv0_n32_N7S1535C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S1535C1[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
extern VTBL_ENTRY _ZTV7S1535C1[];
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
extern void _ZN7S1535C23v22Ev();
extern void _ZN7S1535C23v23Ev();
extern void _ZN7S1535C23v24Ev();
extern void _ZN7S1535C2D1Ev();
extern void _ZN7S1535C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C2__7S1535C1[] = {
  ABISELECT(80,52),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1535C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1535C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C2D0Ev,
};
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S1535C2D1Ev,_ZThn32_N7S1535C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S1535C2D0Ev,_ZThn32_N7S1535C2D0Ev)() __attribute__((weak));
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C5__7S1535C2__7S1535C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
};
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C3__A1__7S1535C2__7S1535C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S1535C2[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C5D1Ev();
extern void _ZN7S1535C5D0Ev();
extern void _ZN7S1535C63v13Ev();
extern void _ZN7S1535C63v14Ev();
extern void _ZN7S1535C63v15Ev();
extern void _ZN7S1535C63v16Ev();
extern void _ZN7S1535C53v17Ev();
extern void _ZN7S1535C53v18Ev();
extern void _ZN7S1535C53v19Ev();
extern void _ZN7S1535C53v20Ev();
extern void _ZN7S1535C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C5__7S1535C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D1Ev,
  (VTBL_ENTRY)&_ZN7S1535C5D0Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1535C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v17Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v18Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1535C53v21Ev,
};
extern void _ZN7S1535C42v7Ev();
extern void _ZN7S1535C42v8Ev();
extern void _ZN7S1535C42v9Ev();
extern void _ZN7S1535C43v10Ev();
extern void _ZN7S1535C33v11Ev();
extern void _ZN7S1535C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S1535C3__7S1535C5__7S1535C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1535C5[0]),
  (VTBL_ENTRY)&_ZN7S1535C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1535C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1535C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1535C33v12Ev,
};
static  VTT_ENTRY vtt_S1535C1[] = {
  {&(_ZTV7S1535C1[4]),  4,67},
  {&(_tg__ZTV7S1535C2__7S1535C1[4]),  4,15},
  {&(_tg__ZTV7S1535C5__7S1535C2__7S1535C1[17]),  17,32},
  {&(_tg__ZTV7S1535C3__A1__7S1535C2__7S1535C1[8]),  8,14},
  {&(_ZTV7S1535C1[38]),  38,67},
  {&(_ZTV7S1535C1[61]),  61,67},
  {&(_tg__ZTV7S1535C5__7S1535C1[3]),  3,18},
  {&(_tg__ZTV7S1535C3__7S1535C5__7S1535C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S1535C1[];
extern  VTBL_ENTRY _ZTV7S1535C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1535C1[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C2D0Ev,_ZTv0_n32_N7S1535C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C2D0Ev,_ZThn32_N7S1535C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C2D1Ev,_ZTv0_n32_N7S1535C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C2D1Ev,_ZThn32_N7S1535C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C1D0Ev,_ZTv0_n32_N7S1535C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C1D0Ev,_ZThn32_N7S1535C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S1535C1D1Ev,_ZTv0_n32_N7S1535C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S1535C1D1Ev,_ZThn32_N7S1535C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1535C1 = {  "S1535C1", // class name
  bases_S1535C1, 8,
  &(vtc_S1535C1[0]), // expected_vtbl_contents
  &(vtt_S1535C1[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S1535C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1535C1),67, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1535C1),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15367C6_nt  {
};
//SIG(-1 S15367C6_nt) C1{}



//skip512 S15367C6_nt

#else // __cplusplus

Class_Descriptor cd_S15367C6_nt = {  "S15367C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // 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  S15367C5_nt  : S15367C6_nt {
};
//SIG(-1 S15367C5_nt) C1{ BC2{}}



//skip512 S15367C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S15367C6_nt;
static Base_Class bases_S15367C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15367C6_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  S15367C3_nt  : S19762C18_nt {
  ::S15367C5_nt s15367c3f0;
};
//SIG(-1 S15367C3_nt) C1{ BC2{} FC3{ BC4{}}}



//skip512 S15367C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S19762C18_nt;
static Base_Class bases_S15367C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C18_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_S15367C3_nt = {  "S15367C3_nt", // class name
  bases_S15367C3_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // 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  S15367C2_nt  : S15367C3_nt {
  void *s15367c2f0[3];
};
//SIG(-1 S15367C2_nt) C1{ BC2{ BC3{} FC4{ BC5{}}} Fp[3]}



//skip512 S15367C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S19762C18_nt;
extern Class_Descriptor cd_S15367C3_nt;
static Base_Class bases_S15367C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19762C18_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_S15367C3_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  S15367C12_nt  {
  void *s15367c12f0;
  void  mf15367c12(); // _ZN12S15367C12_nt10mf15367c12Ev
};
//SIG(-1 S15367C12_nt) C1{ m Fp}


void  S15367C12_nt ::mf15367c12(){}

//skip512 S15367C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15367C14  {
  void *s15367c14f0;
  void  mf15367c14(); // _ZN9S15367C1410mf15367c14Ev
};
//SIG(-1 S15367C14) C1{ m Fp}


void  S15367C14 ::mf15367c14(){}

static void Test_S15367C14()
{
  {
    init_simple_test("S15367C14");
    S15367C14 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S15367C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15367C14)");
    check_field_offset(lv, s15367c14f0, 0, "S15367C14.s15367c14f0");
  }
}
static Arrange_To_Call_Me vS15367C14(Test_S15367C14, "S15367C14", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15367C1  {
  ::S15367C2_nt s15367c1f0;
  int s15367c1f1;
  ::S4531C10_nt s15367c1f2;
  void *s15367c1f3[2];
  ::S15367C2_nt s15367c1f4;
  void *s15367c1f5[4];
  int s15367c1f6[2];
  ::S15367C12_nt s15367c1f7;
  void *s15367c1f8[2];
  ::S15367C12_nt s15367c1f9;
  ::S15367C12_nt s15367c1f10;
  ::S15367C12_nt s15367c1f11;
  void *s15367c1f12;
  ::S15367C14 s15367c1f13;
  int s15367c1f14;
  void  mf15367c1(); // _ZN8S15367C19mf15367c1Ev
};
//SIG(1 S15367C1) C1{ m FC2{ BC3{ BC4{} FC5{ BC6{}}} Fp[3]} Fi FC7{ m Fp} Fp[2] FC2 Fp[4] Fi[2] FC8{ m Fp} Fp[2] FC8 FC8 FC8 Fp FC9{ m Fp} Fi}


void  S15367C1 ::mf15367c1(){}

static void Test_S15367C1()
{
  {
    init_simple_test("S15367C1");
    S15367C1 lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S15367C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15367C1)");
    check_field_offset(lv, s15367c1f0, 0, "S15367C1.s15367c1f0");
    check_field_offset(lv, s15367c1f1, ABISELECT(32,16), "S15367C1.s15367c1f1");
    check_field_offset(lv, s15367c1f2, ABISELECT(40,20), "S15367C1.s15367c1f2");
    check_field_offset(lv, s15367c1f3, ABISELECT(48,24), "S15367C1.s15367c1f3");
    check_field_offset(lv, s15367c1f4, ABISELECT(64,32), "S15367C1.s15367c1f4");
    check_field_offset(lv, s15367c1f5, ABISELECT(96,48), "S15367C1.s15367c1f5");
    check_field_offset(lv, s15367c1f6, ABISELECT(128,64), "S15367C1.s15367c1f6");
    check_field_offset(lv, s15367c1f7, ABISELECT(136,72), "S15367C1.s15367c1f7");
    check_field_offset(lv, s15367c1f8, ABISELECT(144,76), "S15367C1.s15367c1f8");
    check_field_offset(lv, s15367c1f9, ABISELECT(160,84), "S15367C1.s15367c1f9");
    check_field_offset(lv, s15367c1f10, ABISELECT(168,88), "S15367C1.s15367c1f10");
    check_field_offset(lv, s15367c1f11, ABISELECT(176,92), "S15367C1.s15367c1f11");
    check_field_offset(lv, s15367c1f12, ABISELECT(184,96), "S15367C1.s15367c1f12");
    check_field_offset(lv, s15367c1f13, ABISELECT(192,100), "S15367C1.s15367c1f13");
    check_field_offset(lv, s15367c1f14, ABISELECT(200,104), "S15367C1.s15367c1f14");
  }
}
static Arrange_To_Call_Me vS15367C1(Test_S15367C1, "S15367C1", ABISELECT(208,108));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7219C5  {
  virtual void  v8(); // _ZN7S7219C52v8Ev
  virtual void  v9(); // _ZN7S7219C52v9Ev
  virtual void  v10(); // _ZN7S7219C53v10Ev
  virtual void  v11(); // _ZN7S7219C53v11Ev
  virtual void  v12(); // _ZN7S7219C53v12Ev
  ~S7219C5(); // tgen
  S7219C5(); // tgen
};
//SIG(-1 S7219C5) C1{ v1 v2 v3 v4 v5}


void  S7219C5 ::v8(){vfunc_called(this, "_ZN7S7219C52v8Ev");}
void  S7219C5 ::v9(){vfunc_called(this, "_ZN7S7219C52v9Ev");}
void  S7219C5 ::v10(){vfunc_called(this, "_ZN7S7219C53v10Ev");}
void  S7219C5 ::v11(){vfunc_called(this, "_ZN7S7219C53v11Ev");}
void  S7219C5 ::v12(){vfunc_called(this, "_ZN7S7219C53v12Ev");}
S7219C5 ::~S7219C5(){ note_dtor("S7219C5", this);} // tgen
S7219C5 ::S7219C5(){ note_ctor("S7219C5", this);} // tgen

static void Test_S7219C5()
{
  extern Class_Descriptor cd_S7219C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7219C5, buf);
    S7219C5 *dp, &lv = *(dp=new (buf) S7219C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7219C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C5)");
    test_class_info(&lv, &cd_S7219C5);
    dp->~S7219C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C5(Test_S7219C5, "S7219C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7219C5C1Ev();
extern void _ZN7S7219C5D1Ev();
Name_Map name_map_S7219C5[] = {
  NSPAIR(_ZN7S7219C5C1Ev),
  NSPAIR(_ZN7S7219C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7219C5[];
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
static  VTBL_ENTRY vtc_S7219C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C5[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
};
extern VTBL_ENTRY _ZTI7S7219C5[];
extern  VTBL_ENTRY _ZTV7S7219C5[];
Class_Descriptor cd_S7219C5 = {  "S7219C5", // class name
  0,0,//no base classes
  &(vtc_S7219C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7219C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7219C5),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  S7219C4  : S7219C5 {
  ::S7219C5 s7219c4f0;
  virtual void  v13(); // _ZN7S7219C43v13Ev
  virtual void  v14(); // _ZN7S7219C43v14Ev
  virtual void  v15(); // _ZN7S7219C43v15Ev
  virtual void  v16(); // _ZN7S7219C43v16Ev
  ~S7219C4(); // tgen
  S7219C4(); // tgen
};
//SIG(-1 S7219C4) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S7219C4 ::v13(){vfunc_called(this, "_ZN7S7219C43v13Ev");}
void  S7219C4 ::v14(){vfunc_called(this, "_ZN7S7219C43v14Ev");}
void  S7219C4 ::v15(){vfunc_called(this, "_ZN7S7219C43v15Ev");}
void  S7219C4 ::v16(){vfunc_called(this, "_ZN7S7219C43v16Ev");}
S7219C4 ::~S7219C4(){ note_dtor("S7219C4", this);} // tgen
S7219C4 ::S7219C4(){ note_ctor("S7219C4", this);} // tgen

static void Test_S7219C4()
{
  extern Class_Descriptor cd_S7219C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7219C4, buf);
    S7219C4 *dp, &lv = *(dp=new (buf) S7219C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7219C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C4)");
    check_base_class_offset(lv, (S7219C5*), 0, "S7219C4");
    check_field_offset(lv, s7219c4f0, ABISELECT(8,4), "S7219C4.s7219c4f0");
    test_class_info(&lv, &cd_S7219C4);
    dp->~S7219C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C4(Test_S7219C4, "S7219C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7219C4C1Ev();
extern void _ZN7S7219C4D1Ev();
Name_Map name_map_S7219C4[] = {
  NSPAIR(_ZN7S7219C4C1Ev),
  NSPAIR(_ZN7S7219C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7219C5;
extern VTBL_ENTRY _ZTI7S7219C5[];
extern  VTBL_ENTRY _ZTV7S7219C5[];
static Base_Class bases_S7219C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7219C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7219C4[];
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
extern void _ZN7S7219C43v13Ev();
extern void _ZN7S7219C43v14Ev();
extern void _ZN7S7219C43v15Ev();
extern void _ZN7S7219C43v16Ev();
static  VTBL_ENTRY vtc_S7219C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C4[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v16Ev,
};
extern VTBL_ENTRY _ZTI7S7219C4[];
extern  VTBL_ENTRY _ZTV7S7219C4[];
Class_Descriptor cd_S7219C4 = {  "S7219C4", // class name
  bases_S7219C4, 1,
  &(vtc_S7219C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7219C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7219C4),11, //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  S7219C3  : S7219C4 {
  virtual void  v17(); // _ZN7S7219C33v17Ev
  virtual void  v18(); // _ZN7S7219C33v18Ev
  virtual void  v19(); // _ZN7S7219C33v19Ev
  virtual void  v20(); // _ZN7S7219C33v20Ev
  virtual void  v21(); // _ZN7S7219C33v21Ev
  virtual void  v22(); // _ZN7S7219C33v22Ev
  ~S7219C3(); // tgen
  S7219C3(); // tgen
};
//SIG(-1 S7219C3) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S7219C3 ::v17(){vfunc_called(this, "_ZN7S7219C33v17Ev");}
void  S7219C3 ::v18(){vfunc_called(this, "_ZN7S7219C33v18Ev");}
void  S7219C3 ::v19(){vfunc_called(this, "_ZN7S7219C33v19Ev");}
void  S7219C3 ::v20(){vfunc_called(this, "_ZN7S7219C33v20Ev");}
void  S7219C3 ::v21(){vfunc_called(this, "_ZN7S7219C33v21Ev");}
void  S7219C3 ::v22(){vfunc_called(this, "_ZN7S7219C33v22Ev");}
S7219C3 ::~S7219C3(){ note_dtor("S7219C3", this);} // tgen
S7219C3 ::S7219C3(){ note_ctor("S7219C3", this);} // tgen

static void Test_S7219C3()
{
  extern Class_Descriptor cd_S7219C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7219C3, buf);
    S7219C3 *dp, &lv = *(dp=new (buf) S7219C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7219C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C3)");
    check_base_class_offset(lv, (S7219C5*)(S7219C4*), 0, "S7219C3");
    check_base_class_offset(lv, (S7219C4*), 0, "S7219C3");
    test_class_info(&lv, &cd_S7219C3);
    dp->~S7219C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C3(Test_S7219C3, "S7219C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7219C3C1Ev();
extern void _ZN7S7219C3D1Ev();
Name_Map name_map_S7219C3[] = {
  NSPAIR(_ZN7S7219C3C1Ev),
  NSPAIR(_ZN7S7219C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7219C5;
extern VTBL_ENTRY _ZTI7S7219C5[];
extern  VTBL_ENTRY _ZTV7S7219C5[];
extern Class_Descriptor cd_S7219C4;
extern VTBL_ENTRY _ZTI7S7219C4[];
extern  VTBL_ENTRY _ZTV7S7219C4[];
static Base_Class bases_S7219C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7219C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S7219C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S7219C3[];
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
extern void _ZN7S7219C43v13Ev();
extern void _ZN7S7219C43v14Ev();
extern void _ZN7S7219C43v15Ev();
extern void _ZN7S7219C43v16Ev();
extern void _ZN7S7219C33v17Ev();
extern void _ZN7S7219C33v18Ev();
extern void _ZN7S7219C33v19Ev();
extern void _ZN7S7219C33v20Ev();
extern void _ZN7S7219C33v21Ev();
extern void _ZN7S7219C33v22Ev();
static  VTBL_ENTRY vtc_S7219C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C3[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v22Ev,
};
extern VTBL_ENTRY _ZTI7S7219C3[];
extern  VTBL_ENTRY _ZTV7S7219C3[];
Class_Descriptor cd_S7219C3 = {  "S7219C3", // class name
  bases_S7219C3, 2,
  &(vtc_S7219C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7219C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7219C3),17, //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  S7219C2  : virtual S7219C3 {
  virtual void  v23(); // _ZN7S7219C23v23Ev
  virtual void  v24(); // _ZN7S7219C23v24Ev
  virtual void  v25(); // _ZN7S7219C23v25Ev
  ~S7219C2(); // tgen
  S7219C2(); // tgen
};
//SIG(-1 S7219C2) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S7219C2 ::v23(){vfunc_called(this, "_ZN7S7219C23v23Ev");}
void  S7219C2 ::v24(){vfunc_called(this, "_ZN7S7219C23v24Ev");}
void  S7219C2 ::v25(){vfunc_called(this, "_ZN7S7219C23v25Ev");}
S7219C2 ::~S7219C2(){ note_dtor("S7219C2", this);} // tgen
S7219C2 ::S7219C2(){ note_ctor("S7219C2", this);} // tgen

static void Test_S7219C2()
{
  extern Class_Descriptor cd_S7219C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7219C2, buf);
    S7219C2 *dp, &lv = *(dp=new (buf) S7219C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7219C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C2)");
    check_base_class_offset(lv, (S7219C5*)(S7219C4*)(S7219C3*), ABISELECT(8,4), "S7219C2");
    check_base_class_offset(lv, (S7219C4*)(S7219C3*), ABISELECT(8,4), "S7219C2");
    check_base_class_offset(lv, (S7219C3*), ABISELECT(8,4), "S7219C2");
    test_class_info(&lv, &cd_S7219C2);
    dp->~S7219C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C2(Test_S7219C2, "S7219C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7219C2C1Ev();
extern void _ZN7S7219C2D1Ev();
Name_Map name_map_S7219C2[] = {
  NSPAIR(_ZN7S7219C2C1Ev),
  NSPAIR(_ZN7S7219C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7219C5;
extern VTBL_ENTRY _ZTI7S7219C5[];
extern  VTBL_ENTRY _ZTV7S7219C5[];
extern Class_Descriptor cd_S7219C4;
extern VTBL_ENTRY _ZTI7S7219C4[];
extern  VTBL_ENTRY _ZTV7S7219C4[];
extern Class_Descriptor cd_S7219C3;
extern VTBL_ENTRY _ZTI7S7219C3[];
extern  VTBL_ENTRY _ZTV7S7219C3[];
static Base_Class bases_S7219C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7219C5,    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_S7219C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7219C3,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S7219C2[];
extern void _ZN7S7219C23v23Ev();
extern void _ZN7S7219C23v24Ev();
extern void _ZN7S7219C23v25Ev();
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
extern void _ZN7S7219C43v13Ev();
extern void _ZN7S7219C43v14Ev();
extern void _ZN7S7219C43v15Ev();
extern void _ZN7S7219C43v16Ev();
extern void _ZN7S7219C33v17Ev();
extern void _ZN7S7219C33v18Ev();
extern void _ZN7S7219C33v19Ev();
extern void _ZN7S7219C33v20Ev();
extern void _ZN7S7219C33v21Ev();
extern void _ZN7S7219C33v22Ev();
static  VTBL_ENTRY vtc_S7219C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C2[0]),
  (VTBL_ENTRY)&_ZN7S7219C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7219C2[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v22Ev,
};
extern VTBL_ENTRY _ZTV7S7219C2[];
static  VTT_ENTRY vtt_S7219C2[] = {
  {&(_ZTV7S7219C2[3]),  3,38},
  {&(_ZTV7S7219C2[23]),  23,38},
};
extern VTBL_ENTRY _ZTI7S7219C2[];
extern  VTBL_ENTRY _ZTV7S7219C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7219C2[];
Class_Descriptor cd_S7219C2 = {  "S7219C2", // class name
  bases_S7219C2, 3,
  &(vtc_S7219C2[0]), // expected_vtbl_contents
  &(vtt_S7219C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7219C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7219C2),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7219C2),2, //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  S7219C6  {
  int s7219c6f0;
  ::S7219C5 s7219c6f1;
  virtual void  v26(); // _ZN7S7219C63v26Ev
  ~S7219C6(); // tgen
  S7219C6(); // tgen
};
//SIG(-1 S7219C6) C1{ v1 Fi FC2{ v2 v3 v4 v5 v6}}


void  S7219C6 ::v26(){vfunc_called(this, "_ZN7S7219C63v26Ev");}
S7219C6 ::~S7219C6(){ note_dtor("S7219C6", this);} // tgen
S7219C6 ::S7219C6(){ note_ctor("S7219C6", this);} // tgen

static void Test_S7219C6()
{
  extern Class_Descriptor cd_S7219C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7219C6, buf);
    S7219C6 *dp, &lv = *(dp=new (buf) S7219C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7219C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C6)");
    check_field_offset(lv, s7219c6f0, ABISELECT(8,4), "S7219C6.s7219c6f0");
    check_field_offset(lv, s7219c6f1, ABISELECT(16,8), "S7219C6.s7219c6f1");
    test_class_info(&lv, &cd_S7219C6);
    dp->~S7219C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C6(Test_S7219C6, "S7219C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7219C6C1Ev();
extern void _ZN7S7219C6D1Ev();
Name_Map name_map_S7219C6[] = {
  NSPAIR(_ZN7S7219C6C1Ev),
  NSPAIR(_ZN7S7219C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7219C6[];
extern void _ZN7S7219C63v26Ev();
static  VTBL_ENTRY vtc_S7219C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C6[0]),
  (VTBL_ENTRY)&_ZN7S7219C63v26Ev,
};
extern VTBL_ENTRY _ZTI7S7219C6[];
extern  VTBL_ENTRY _ZTV7S7219C6[];
Class_Descriptor cd_S7219C6 = {  "S7219C6", // class name
  0,0,//no base classes
  &(vtc_S7219C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7219C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7219C6),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7219C1  : S7219C2 , virtual S7219C6 {
  __tsi64 s7219c1f0;
  int s7219c1f1[6];
  ::S7219C5 s7219c1f2;
  virtual  ~S7219C1(); // _ZN7S7219C1D2Ev
  virtual void  v1(); // _ZN7S7219C12v1Ev
  virtual void  v2(); // _ZN7S7219C12v2Ev
  virtual void  v3(); // _ZN7S7219C12v3Ev
  virtual void  v4(); // _ZN7S7219C12v4Ev
  virtual void  v5(); // _ZN7S7219C12v5Ev
  virtual void  v6(); // _ZN7S7219C12v6Ev
  virtual void  v7(); // _ZN7S7219C12v7Ev
  S7219C1(); // tgen
};
//SIG(1 S7219C1) C1{ BC2{ VBC3{ BC4{ BC5{ v8 v9 v10 v11 v12} v13 v14 v15 v16 FC5} v17 v18 v19 v20 v21 v22} v23 v24 v25} VBC6{ v26 Fi FC5} vd v1 v2 v3 v4 v5 v6 v7 FL Fi[6] FC5}


 S7219C1 ::~S7219C1(){ note_dtor("S7219C1", this);}
void  S7219C1 ::v1(){vfunc_called(this, "_ZN7S7219C12v1Ev");}
void  S7219C1 ::v2(){vfunc_called(this, "_ZN7S7219C12v2Ev");}
void  S7219C1 ::v3(){vfunc_called(this, "_ZN7S7219C12v3Ev");}
void  S7219C1 ::v4(){vfunc_called(this, "_ZN7S7219C12v4Ev");}
void  S7219C1 ::v5(){vfunc_called(this, "_ZN7S7219C12v5Ev");}
void  S7219C1 ::v6(){vfunc_called(this, "_ZN7S7219C12v6Ev");}
void  S7219C1 ::v7(){vfunc_called(this, "_ZN7S7219C12v7Ev");}
S7219C1 ::S7219C1(){ note_ctor("S7219C1", this);} // tgen

static void Test_S7219C1()
{
  extern Class_Descriptor cd_S7219C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S7219C1, buf);
    S7219C1 *dp, &lv = *(dp=new (buf) S7219C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S7219C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7219C1)");
    check_base_class_offset(lv, (S7219C5*)(S7219C4*)(S7219C3*), ABISELECT(48,40), "S7219C1");
    check_base_class_offset(lv, (S7219C4*)(S7219C3*), ABISELECT(48,40), "S7219C1");
    check_base_class_offset(lv, (S7219C3*)(S7219C2*), ABISELECT(48,40), "S7219C1");
    check_base_class_offset(lv, (S7219C2*), 0, "S7219C1");
    check_base_class_offset(lv, (S7219C6*), ABISELECT(64,48), "S7219C1");
    check_field_offset(lv, s7219c1f0, ABISELECT(8,4), "S7219C1.s7219c1f0");
    check_field_offset(lv, s7219c1f1, ABISELECT(16,12), "S7219C1.s7219c1f1");
    check_field_offset(lv, s7219c1f2, ABISELECT(40,36), "S7219C1.s7219c1f2");
    test_class_info(&lv, &cd_S7219C1);
    dp->~S7219C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7219C1(Test_S7219C1, "S7219C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S7219C1C1Ev();
extern void _ZN7S7219C1D2Ev();
Name_Map name_map_S7219C1[] = {
  NSPAIR(_ZN7S7219C1C1Ev),
  NSPAIR(_ZN7S7219C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7219C5;
extern VTBL_ENTRY _ZTI7S7219C5[];
extern  VTBL_ENTRY _ZTV7S7219C5[];
extern Class_Descriptor cd_S7219C4;
extern VTBL_ENTRY _ZTI7S7219C4[];
extern  VTBL_ENTRY _ZTV7S7219C4[];
extern Class_Descriptor cd_S7219C3;
extern VTBL_ENTRY _ZTI7S7219C3[];
extern  VTBL_ENTRY _ZTV7S7219C3[];
extern Class_Descriptor cd_S7219C2;
extern VTBL_ENTRY _ZTI7S7219C2[];
extern  VTBL_ENTRY _ZTV7S7219C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7219C2[];
extern Class_Descriptor cd_S7219C6;
extern VTBL_ENTRY _ZTI7S7219C6[];
extern  VTBL_ENTRY _ZTV7S7219C6[];
static Base_Class bases_S7219C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7219C5,    ABISELECT(48,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
    1, //immediately_derived
  0, 0},
  {&cd_S7219C4,    ABISELECT(48,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7219C3,    ABISELECT(48,40), //bcp->offset
    16, //bcp->virtual_function_table_offset
    17, //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_S7219C2,    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},
  {&cd_S7219C6,    ABISELECT(64,48), //bcp->offset
    48, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7219C1[];
extern void _ZN7S7219C23v23Ev();
extern void _ZN7S7219C23v24Ev();
extern void _ZN7S7219C23v25Ev();
extern void _ZN7S7219C1D1Ev();
extern void _ZN7S7219C1D0Ev();
extern void _ZN7S7219C12v1Ev();
extern void _ZN7S7219C12v2Ev();
extern void _ZN7S7219C12v3Ev();
extern void _ZN7S7219C12v4Ev();
extern void _ZN7S7219C12v5Ev();
extern void _ZN7S7219C12v6Ev();
extern void _ZN7S7219C12v7Ev();
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
extern void _ZN7S7219C43v13Ev();
extern void _ZN7S7219C43v14Ev();
extern void _ZN7S7219C43v15Ev();
extern void _ZN7S7219C43v16Ev();
extern void _ZN7S7219C33v17Ev();
extern void _ZN7S7219C33v18Ev();
extern void _ZN7S7219C33v19Ev();
extern void _ZN7S7219C33v20Ev();
extern void _ZN7S7219C33v21Ev();
extern void _ZN7S7219C33v22Ev();
extern void _ZN7S7219C63v26Ev();
static  VTBL_ENTRY vtc_S7219C1[] = {
  ABISELECT(64,48),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C1[0]),
  (VTBL_ENTRY)&_ZN7S7219C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7219C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7219C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7219C12v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7219C1[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v22Ev,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7219C1[0]),
  (VTBL_ENTRY)&_ZN7S7219C63v26Ev,
};
extern VTBL_ENTRY _ZTV7S7219C1[];
extern void _ZN7S7219C23v23Ev();
extern void _ZN7S7219C23v24Ev();
extern void _ZN7S7219C23v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7219C2__7S7219C1[] = {
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7219C2[0]),
  (VTBL_ENTRY)&_ZN7S7219C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7219C23v25Ev,
};
extern void _ZN7S7219C52v8Ev();
extern void _ZN7S7219C52v9Ev();
extern void _ZN7S7219C53v10Ev();
extern void _ZN7S7219C53v11Ev();
extern void _ZN7S7219C53v12Ev();
extern void _ZN7S7219C43v13Ev();
extern void _ZN7S7219C43v14Ev();
extern void _ZN7S7219C43v15Ev();
extern void _ZN7S7219C43v16Ev();
extern void _ZN7S7219C33v17Ev();
extern void _ZN7S7219C33v18Ev();
extern void _ZN7S7219C33v19Ev();
extern void _ZN7S7219C33v20Ev();
extern void _ZN7S7219C33v21Ev();
extern void _ZN7S7219C33v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7219C3__7S7219C2__7S7219C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7219C2[0]),
  (VTBL_ENTRY)&_ZN7S7219C52v8Ev,
  (VTBL_ENTRY)&_ZN7S7219C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7219C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7219C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7219C33v22Ev,
};
static  VTT_ENTRY vtt_S7219C1[] = {
  {&(_ZTV7S7219C1[4]),  4,52},
  {&(_tg__ZTV7S7219C2__7S7219C1[3]),  3,6},
  {&(_tg__ZTV7S7219C3__7S7219C2__7S7219C1[17]),  17,32},
  {&(_ZTV7S7219C1[33]),  33,52},
  {&(_ZTV7S7219C1[51]),  51,52},
};
extern VTBL_ENTRY _ZTI7S7219C1[];
extern  VTBL_ENTRY _ZTV7S7219C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7219C1[];
Class_Descriptor cd_S7219C1 = {  "S7219C1", // class name
  bases_S7219C1, 5,
  &(vtc_S7219C1[0]), // expected_vtbl_contents
  &(vtt_S7219C1[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S7219C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7219C1),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7219C1),5, //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  S6118C6  : S2014C24 {
  ::S2014C24 s6118c6f0;
  virtual  ~S6118C6(); // _ZN7S6118C6D1Ev
  S6118C6(); // tgen
};
//SIG(-1 S6118C6) C1{ BC2{ m} vd FC2}


 S6118C6 ::~S6118C6(){ note_dtor("S6118C6", this);}
S6118C6 ::S6118C6(){ note_ctor("S6118C6", this);} // tgen

static void Test_S6118C6()
{
  extern Class_Descriptor cd_S6118C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6118C6, buf);
    S6118C6 *dp, &lv = *(dp=new (buf) S6118C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6118C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6118C6)");
    check_base_class_offset(lv, (S2014C24*), 0, "S6118C6");
    check_field_offset(lv, s6118c6f0, ABISELECT(8,4), "S6118C6.s6118c6f0");
    test_class_info(&lv, &cd_S6118C6);
    dp->~S6118C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6118C6(Test_S6118C6, "S6118C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6118C6C1Ev();
extern void _ZN7S6118C6D1Ev();
Name_Map name_map_S6118C6[] = {
  NSPAIR(_ZN7S6118C6C1Ev),
  NSPAIR(_ZN7S6118C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
static Base_Class bases_S6118C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6118C6[];
extern void _ZN7S6118C6D1Ev();
extern void _ZN7S6118C6D0Ev();
static  VTBL_ENTRY vtc_S6118C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C6[0]),
  (VTBL_ENTRY)&_ZN7S6118C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C6D0Ev,
};
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
Class_Descriptor cd_S6118C6 = {  "S6118C6", // class name
  bases_S6118C6, 1,
  &(vtc_S6118C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6118C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6118C6),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  S6118C4  : virtual S2014C28 , virtual S6118C6 , virtual S3222C8_nt {
  void *s6118c4f0;
  ::S19762C18_nt s6118c4f1;
  virtual  ~S6118C4(); // _ZN7S6118C4D2Ev
  S6118C4(); // tgen
};
//SIG(-1 S6118C4) C1{ VBC2{ m} VBC3{ BC4{ m} vd FC4} VBC5{ m Fi} vd Fp FC6{}}


 S6118C4 ::~S6118C4(){ note_dtor("S6118C4", this);}
S6118C4 ::S6118C4(){ note_ctor("S6118C4", this);} // tgen

static void Test_S6118C4()
{
  extern Class_Descriptor cd_S6118C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6118C4, buf);
    S6118C4 *dp, &lv = *(dp=new (buf) S6118C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6118C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6118C4)");
    check_base_class_offset(lv, (S2014C28*), 0, "S6118C4");
    check_base_class_offset(lv, (S2014C24*)(S6118C6*), ABISELECT(24,12), "S6118C4");
    check_base_class_offset(lv, (S6118C6*), ABISELECT(24,12), "S6118C4");
    check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(36,20), "S6118C4");
    check_field_offset(lv, s6118c4f0, ABISELECT(8,4), "S6118C4.s6118c4f0");
    check_field_offset(lv, s6118c4f1, ABISELECT(16,8), "S6118C4.s6118c4f1");
    test_class_info(&lv, &cd_S6118C4);
    dp->~S6118C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6118C4(Test_S6118C4, "S6118C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6118C4C1Ev();
extern void _ZN7S6118C4D2Ev();
Name_Map name_map_S6118C4[] = {
  NSPAIR(_ZN7S6118C4C1Ev),
  NSPAIR(_ZN7S6118C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S6118C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C24,    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
    2, //immediately_derived
  0, 0},
  {&cd_S6118C6,    ABISELECT(24,12), //bcp->offset
    7, //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_S3222C8_nt,    ABISELECT(36,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6118C4[];
extern void _ZN7S6118C4D1Ev();
extern void _ZN7S6118C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6118C4[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&_ZN7S6118C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C4D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S6118C4[];
static  VTT_ENTRY vtt_S6118C4[] = {
  {&(_ZTV7S6118C4[5]),  5,12},
  {&(_ZTV7S6118C4[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S6118C4[];
extern  VTBL_ENTRY _ZTV7S6118C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C4[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6118C4 = {  "S6118C4", // class name
  bases_S6118C4, 4,
  &(vtc_S6118C4[0]), // expected_vtbl_contents
  &(vtt_S6118C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6118C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6118C4),12, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6118C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6118C11  : S2014C24 , S6118C6 , virtual S2014C28 , virtual S6118C4 {
  virtual  ~S6118C11(); // _ZN8S6118C11D2Ev
  S6118C11(); // tgen
};
//SIG(-1 S6118C11) C1{ BC2{ m} BC3{ BC2 vd FC2} VBC4{ m} VBC5{ VBC4 VBC3 VBC6{ m Fi} vd Fp FC7{}} vd}


 S6118C11 ::~S6118C11(){ note_dtor("S6118C11", this);}
S6118C11 ::S6118C11(){ note_ctor("S6118C11", this);} // tgen

static void Test_S6118C11()
{
  extern Class_Descriptor cd_S6118C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6118C11, buf);
    S6118C11 *dp, &lv = *(dp=new (buf) S6118C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6118C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6118C11)");
    /*is_ambiguous_... S6118C11::S2014C24 */ AMB_check_base_class_offset(lv, (S2014C24*), ABISELECT(9,5), "S6118C11");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*), 0, "S6118C11");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S6118C6*), 0, "S6118C11");
    check_base_class_offset(lv, (S2014C28*), 0, "S6118C11");
    check_base_class_offset(lv, (S2014C28*)(S6118C4*), 0, "S6118C11");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*), ABISELECT(40,20), "S6118C11");
    check_base_class_offset(lv, (S6118C6*)(S6118C4*), ABISELECT(40,20), "S6118C11");
    check_base_class_offset(lv, (S3222C8_nt*)(S6118C4*), ABISELECT(52,28), "S6118C11");
    check_base_class_offset(lv, (S6118C4*), ABISELECT(16,8), "S6118C11");
    test_class_info(&lv, &cd_S6118C11);
    dp->~S6118C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6118C11(Test_S6118C11, "S6118C11", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S6118C11C1Ev();
extern void _ZN8S6118C11D2Ev();
Name_Map name_map_S6118C11[] = {
  NSPAIR(_ZN8S6118C11C1Ev),
  NSPAIR(_ZN8S6118C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S6118C4;
extern VTBL_ENTRY _ZTI7S6118C4[];
extern  VTBL_ENTRY _ZTV7S6118C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C4[];
static Base_Class bases_S6118C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C24,    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_S2014C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6118C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C24,    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
    5, //immediately_derived
  0, 0},
  {&cd_S6118C6,    ABISELECT(40,20), //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
    7, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(52,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
    7, //immediately_derived
  0, 1},
  {&cd_S6118C4,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S6118C11[];
extern void _ZN8S6118C11D1Ev();
extern void _ZN8S6118C11D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6118C11D1Ev,_ZThn8_N8S6118C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S6118C11D0Ev,_ZThn8_N8S6118C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev)();
extern void ABISELECT(_ZThn40_N8S6118C11D1Ev,_ZThn20_N8S6118C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev)();
extern void ABISELECT(_ZThn40_N8S6118C11D0Ev,_ZThn20_N8S6118C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6118C11[] = {
  ABISELECT(52,28),
  ABISELECT(40,20),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&_ZN8S6118C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6118C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S6118C11[];
extern void _ZN7S6118C4D1Ev();
extern void _ZN7S6118C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6118C4__8S6118C11[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&_ZN7S6118C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6118C6__7S6118C4__8S6118C11[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev),
};
static  VTT_ENTRY vtt_S6118C11[] = {
  {&(_ZTV8S6118C11[6]),  6,21},
  {&(_ZTV8S6118C11[14]),  14,21},
  {&(_ZTV8S6118C11[19]),  19,21},
  {&(_tg__ZTV7S6118C4__8S6118C11[5]),  5,7},
  {&(_tg__ZTV7S6118C6__7S6118C4__8S6118C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6118C11[];
extern  VTBL_ENTRY _ZTV8S6118C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6118C11[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6118C11D0Ev,_ZThn20_N8S6118C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6118C11D1Ev,_ZThn20_N8S6118C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6118C11D0Ev,_ZThn8_N8S6118C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6118C11D1Ev,_ZThn8_N8S6118C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6118C11 = {  "S6118C11", // class name
  bases_S6118C11, 8,
  &(vtc_S6118C11[0]), // expected_vtbl_contents
  &(vtt_S6118C11[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S6118C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6118C11),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6118C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6118C3  : virtual S2014C38 , virtual S6118C4 , S2014C21 , virtual S6118C11 , S3222C8_nt {
  ::S19017C20_nt s6118c3f0[6];
  short s6118c3f1;
  virtual  ~S6118C3(); // _ZN7S6118C3D2Ev
  S6118C3(); // tgen
};
//SIG(-1 S6118C3) C1{ VBC2{ m} VBC3{ VBC4{ m} VBC5{ BC6{ m} vd FC6} VBC7{ m Fi} vd Fp FC8{}} BC9{ m} VBC10{ BC6 BC5 VBC4 VBC3 vd} BC7 vd FU11{ m}[6] Fs}


 S6118C3 ::~S6118C3(){ note_dtor("S6118C3", this);}
S6118C3 ::S6118C3(){ note_ctor("S6118C3", this);} // tgen

static void Test_S6118C3()
{
  extern Class_Descriptor cd_S6118C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S6118C3, buf);
    S6118C3 *dp, &lv = *(dp=new (buf) S6118C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S6118C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6118C3)");
    check_base_class_offset(lv, (S2014C38*), 0, "S6118C3");
    check_base_class_offset(lv, (S2014C28*)(S6118C4*), 0, "S6118C3");
    check_base_class_offset(lv, (S2014C28*)(S6118C11*), 0, "S6118C3");
    /*is_ambiguous_... S6118C3::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*), ABISELECT(48,28), "S6118C3");
    check_base_class_offset(lv, (S6118C6*)(S6118C4*), ABISELECT(48,28), "S6118C3");
    check_base_class_offset(lv, (S3222C8_nt*)(S6118C4*), ABISELECT(60,36), "S6118C3");
    check_base_class_offset(lv, (S6118C4*), ABISELECT(24,16), "S6118C3");
    check_base_class_offset(lv, (S6118C4*)(S6118C11*), ABISELECT(24,16), "S6118C3");
    check_base_class_offset(lv, (S2014C21*), 0, "S6118C3");
    /*is_ambiguous_... S6118C11::S2014C24 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C11*), ABISELECT(73,45), "S6118C3");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*)(S6118C11*), ABISELECT(64,40), "S6118C3");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S6118C6*)(S6118C11*), ABISELECT(64,40), "S6118C3");
    check_base_class_offset(lv, (S6118C11*), ABISELECT(64,40), "S6118C3");
    /*is_ambiguous_... S6118C3::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*), ABISELECT(8,4), "S6118C3");
    check_field_offset(lv, s6118c3f0, ABISELECT(12,8), "S6118C3.s6118c3f0");
    check_field_offset(lv, s6118c3f1, ABISELECT(18,14), "S6118C3.s6118c3f1");
    test_class_info(&lv, &cd_S6118C3);
    dp->~S6118C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6118C3(Test_S6118C3, "S6118C3", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S6118C3C1Ev();
extern void _ZN7S6118C3D2Ev();
Name_Map name_map_S6118C3[] = {
  NSPAIR(_ZN7S6118C3C1Ev),
  NSPAIR(_ZN7S6118C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S6118C4;
extern VTBL_ENTRY _ZTI7S6118C4[];
extern  VTBL_ENTRY _ZTV7S6118C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C4[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S6118C11;
extern VTBL_ENTRY _ZTI8S6118C11[];
extern  VTBL_ENTRY _ZTV8S6118C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6118C11[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
static Base_Class bases_S6118C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C24,    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
    3, //immediately_derived
  0, 0},
  {&cd_S6118C6,    ABISELECT(48,28), //bcp->offset
    18, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    5, //immediately_derived
  0, 1},
  {&cd_S6118C4,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2014C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C24,    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
    10, //immediately_derived
  0, 0},
  {&cd_S2014C24,    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
    9, //immediately_derived
  0, 0},
  {&cd_S6118C6,    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
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6118C11,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3222C8_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 _ZTI7S6118C3[];
extern void _ZN7S6118C3D1Ev();
extern void _ZN7S6118C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C3D1Ev,_ZThn16_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C3D0Ev,_ZThn16_N7S6118C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S6118C3D1Ev,_ZThn28_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S6118C3D0Ev,_ZThn28_N7S6118C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S6118C3D1Ev,_ZThn40_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S6118C3D0Ev,_ZThn40_N7S6118C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6118C3[] = {
  ABISELECT(64,40),
  ABISELECT(60,36),
  ABISELECT(48,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&_ZN7S6118C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C3D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S6118C3[];
extern void _ZN7S6118C4D1Ev();
extern void _ZN7S6118C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6118C4__7S6118C3[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&_ZN7S6118C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6118C6__7S6118C4__7S6118C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev),
};
extern void _ZN8S6118C11D1Ev();
extern void _ZN8S6118C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6118C11__7S6118C3[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&_ZN8S6118C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6118C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6118C4__8S6118C11__7S6118C3[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6118C6__A1__8S6118C11__7S6118C3[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev),
};
static  VTT_ENTRY vtt_S6118C3[] = {
  {&(_ZTV7S6118C3[8]),  8,32},
  {&(_ZTV7S6118C3[16]),  16,32},
  {&(_ZTV7S6118C3[21]),  21,32},
  {&(_ZTV7S6118C3[30]),  30,32},
  {&(_tg__ZTV7S6118C4__7S6118C3[5]),  5,7},
  {&(_tg__ZTV7S6118C6__7S6118C4__7S6118C3[3]),  3,5},
  {&(_tg__ZTV8S6118C11__7S6118C3[6]),  6,8},
  {&(_tg__ZTV7S6118C4__8S6118C11__7S6118C3[6]),  6,8},
  {&(_tg__ZTV7S6118C6__A1__8S6118C11__7S6118C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6118C3[];
extern  VTBL_ENTRY _ZTV7S6118C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C3[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C3D0Ev,_ZThn40_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C3D1Ev,_ZThn40_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C3D0Ev,_ZThn28_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C3D1Ev,_ZThn28_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C3D0Ev,_ZThn16_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C3D1Ev,_ZThn16_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6118C3 = {  "S6118C3", // class name
  bases_S6118C3, 12,
  &(vtc_S6118C3[0]), // expected_vtbl_contents
  &(vtt_S6118C3[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S6118C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6118C3),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6118C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6118C14_nt  {
  int s6118c14f0;
  void  mf6118c14(); // _ZN11S6118C14_nt9mf6118c14Ev
};
//SIG(-1 S6118C14_nt) C1{ m Fi}


void  S6118C14_nt ::mf6118c14(){}

//skip512 S6118C14_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S6118C14_nt[];
VTBL_ENTRY *P__ZTI11S6118C14_nt = _ZTI11S6118C14_nt; 
Class_Descriptor cd_S6118C14_nt = {  "S6118C14_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI11S6118C14_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  S6118C1  : S2014C38 , S6118C3 , S2014C7_nt , virtual S6118C14_nt {
  virtual  ~S6118C1(); // _ZN7S6118C1D2Ev
  S6118C1(); // tgen
};
//SIG(1 S6118C1) C1{ BC2{ m} BC3{ VBC2 VBC4{ VBC5{ m} VBC6{ BC7{ m} vd FC7} VBC8{ m Fi} vd Fp FC9{}} BC10{ m} VBC11{ BC7 BC6 VBC5 VBC4 vd} BC8 vd FU12{ m}[6] Fs} BC13{ m} VBC14{ m Fi} vd}


 S6118C1 ::~S6118C1(){ note_dtor("S6118C1", this);}
S6118C1 ::S6118C1(){ note_ctor("S6118C1", this);} // tgen

static void Test_S6118C1()
{
  extern Class_Descriptor cd_S6118C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S6118C1, buf);
    S6118C1 *dp, &lv = *(dp=new (buf) S6118C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S6118C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6118C1)");
    /*is_ambiguous_... S6118C1::S2014C38 */ AMB_check_base_class_offset(lv, (S2014C38*), 0, "S6118C1");
    check_base_class_offset(lv, (S2014C38*)(S6118C3*), ABISELECT(20,16), "S6118C1");
    check_base_class_offset(lv, (S2014C28*)(S6118C4*), 0, "S6118C1");
    check_base_class_offset(lv, (S2014C28*)(S6118C11*), 0, "S6118C1");
    /*is_ambiguous_... S6118C1::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*), ABISELECT(48,28), "S6118C1");
    check_base_class_offset(lv, (S6118C6*)(S6118C4*), ABISELECT(48,28), "S6118C1");
    check_base_class_offset(lv, (S3222C8_nt*)(S6118C4*), ABISELECT(60,36), "S6118C1");
    check_base_class_offset(lv, (S6118C4*)(S6118C3*), ABISELECT(24,16), "S6118C1");
    check_base_class_offset(lv, (S6118C4*)(S6118C11*), ABISELECT(24,16), "S6118C1");
    check_base_class_offset(lv, (S2014C21*)(S6118C3*), 0, "S6118C1");
    /*is_ambiguous_... S6118C11::S2014C24 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C11*), ABISELECT(73,45), "S6118C1");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S2014C24*)(S6118C6*)(S6118C11*), ABISELECT(64,40), "S6118C1");
    /*is_ambiguous_... S6118C11::S6118C6 */ AMB_check_base_class_offset(lv, (S6118C6*)(S6118C11*), ABISELECT(64,40), "S6118C1");
    check_base_class_offset(lv, (S6118C11*)(S6118C3*), ABISELECT(64,40), "S6118C1");
    /*is_ambiguous_... S6118C3::S3222C8_nt */ AMB_check_base_class_offset(lv, (S3222C8_nt*)(S6118C3*), ABISELECT(8,4), "S6118C1");
    check_base_class_offset(lv, (S6118C3*), 0, "S6118C1");
    check_base_class_offset(lv, (S2014C7_nt*), 0, "S6118C1");
    check_base_class_offset(lv, (S6118C14_nt*), ABISELECT(76,48), "S6118C1");
    test_class_info(&lv, &cd_S6118C1);
    dp->~S6118C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6118C1(Test_S6118C1, "S6118C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S6118C1C1Ev();
extern void _ZN7S6118C1D2Ev();
Name_Map name_map_S6118C1[] = {
  NSPAIR(_ZN7S6118C1C1Ev),
  NSPAIR(_ZN7S6118C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S2014C28;
extern VTBL_ENTRY _ZTI8S2014C28[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S6118C4;
extern VTBL_ENTRY _ZTI7S6118C4[];
extern  VTBL_ENTRY _ZTV7S6118C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C4[];
extern Class_Descriptor cd_S2014C21;
extern VTBL_ENTRY _ZTI8S2014C21[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S2014C24;
extern VTBL_ENTRY _ZTI8S2014C24[];
extern Class_Descriptor cd_S6118C6;
extern VTBL_ENTRY _ZTI7S6118C6[];
extern  VTBL_ENTRY _ZTV7S6118C6[];
extern Class_Descriptor cd_S6118C11;
extern VTBL_ENTRY _ZTI8S6118C11[];
extern  VTBL_ENTRY _ZTV8S6118C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6118C11[];
extern Class_Descriptor cd_S3222C8_nt;
extern VTBL_ENTRY _ZTI10S3222C8_nt[];
extern Class_Descriptor cd_S6118C3;
extern VTBL_ENTRY _ZTI7S6118C3[];
extern  VTBL_ENTRY _ZTV7S6118C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C3[];
extern Class_Descriptor cd_S2014C7_nt;
extern VTBL_ENTRY _ZTI10S2014C7_nt[];
extern Class_Descriptor cd_S6118C14_nt;
extern VTBL_ENTRY _ZTI11S6118C14_nt[];
static Base_Class bases_S6118C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2014C38,    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
    13, //immediately_derived
  0, 1},
  {&cd_S2014C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C24,    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
    4, //immediately_derived
  0, 0},
  {&cd_S6118C6,    ABISELECT(48,28), //bcp->offset
    19, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3222C8_nt,    ABISELECT(60,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
    6, //immediately_derived
  0, 1},
  {&cd_S6118C4,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S2014C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2014C24,    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_S2014C24,    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_S6118C6,    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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6118C11,    ABISELECT(64,40), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3222C8_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
    13, //immediately_derived
  0, 0},
  {&cd_S6118C3,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2014C7_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},
  {&cd_S6118C14_nt,    ABISELECT(76,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, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6118C1[];
extern void _ZN7S6118C1D1Ev();
extern void _ZN7S6118C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S6118C1D1Ev,_ZTv0_n24_N7S6118C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C1D1Ev,_ZThn16_N7S6118C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6118C1D0Ev,_ZTv0_n24_N7S6118C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C1D0Ev,_ZThn16_N7S6118C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C1D1Ev,_ZTv0_n12_N7S6118C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6118C1D1Ev,_ZThn28_N7S6118C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C1D0Ev,_ZTv0_n12_N7S6118C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S6118C1D0Ev,_ZThn28_N7S6118C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6118C1D1Ev,_ZTv0_n28_N7S6118C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S6118C1D1Ev,_ZThn40_N7S6118C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6118C1D0Ev,_ZTv0_n28_N7S6118C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S6118C1D0Ev,_ZThn40_N7S6118C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6118C1[] = {
  ABISELECT(76,48),
  ABISELECT(64,40),
  ABISELECT(60,36),
  ABISELECT(48,28),
  0,
  ABISELECT(24,16),
  ABISELECT(20,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C1[0]),
  (VTBL_ENTRY)&_ZN7S6118C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C1D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6118C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C1D1Ev,_ZTv0_n24_N7S6118C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C1D0Ev,_ZTv0_n24_N7S6118C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6118C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C1D1Ev,_ZTv0_n12_N7S6118C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C1D0Ev,_ZTv0_n12_N7S6118C1D0Ev),
  ABISELECT(-64,-40),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6118C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C1D1Ev,_ZTv0_n28_N7S6118C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C1D0Ev,_ZTv0_n28_N7S6118C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6118C1[];
extern void _ZN7S6118C3D1Ev();
extern void _ZN7S6118C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6118C3__7S6118C1[] = {
  ABISELECT(64,40),
  ABISELECT(60,36),
  ABISELECT(48,28),
  0,
  ABISELECT(24,16),
  ABISELECT(20,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&_ZN7S6118C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C3D1Ev,_ZThn16_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C3D0Ev,_ZThn16_N7S6118C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6118C4__7S6118C3__7S6118C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S6118C3D1Ev,_ZThn28_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S6118C3D0Ev,_ZThn28_N7S6118C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6118C6__7S6118C3__7S6118C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S6118C3D1Ev,_ZThn40_N7S6118C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S6118C3D0Ev,_ZThn40_N7S6118C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6118C11__7S6118C3__7S6118C1[] = {
  ABISELECT(-64,-40),
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6118C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev),
};
extern void _ZN7S6118C4D1Ev();
extern void _ZN7S6118C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6118C4__7S6118C1[] = {
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&_ZN7S6118C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6118C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6118C6__7S6118C4__7S6118C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6118C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev),
};
extern void _ZN8S6118C11D1Ev();
extern void _ZN8S6118C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6118C11__7S6118C1[] = {
  -4,
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&_ZN8S6118C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6118C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6118C4__8S6118C11__7S6118C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,20),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D1Ev,_ZTv0_n24_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6118C11D0Ev,_ZTv0_n24_N8S6118C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6118C6__A1__8S6118C11__7S6118C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6118C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D1Ev,_ZTv0_n12_N8S6118C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6118C11D0Ev,_ZTv0_n12_N8S6118C11D0Ev),
};
static  VTT_ENTRY vtt_S6118C1[] = {
  {&(_ZTV7S6118C1[9]),  9,33},
  {&(_tg__ZTV7S6118C3__7S6118C1[8]),  8,10},
  {&(_tg__ZTV7S6118C4__7S6118C3__7S6118C1[6]),  6,8},
  {&(_tg__ZTV7S6118C6__7S6118C3__7S6118C1[3]),  3,5},
  {&(_tg__ZTV8S6118C11__7S6118C3__7S6118C1[7]),  7,9},
  {&(_ZTV7S6118C1[17]),  17,33},
  {&(_ZTV7S6118C1[22]),  22,33},
  {&(_ZTV7S6118C1[31]),  31,33},
  {&(_tg__ZTV7S6118C4__7S6118C1[5]),  5,7},
  {&(_tg__ZTV7S6118C6__7S6118C4__7S6118C1[3]),  3,5},
  {&(_tg__ZTV8S6118C11__7S6118C1[6]),  6,8},
  {&(_tg__ZTV7S6118C4__8S6118C11__7S6118C1[6]),  6,8},
  {&(_tg__ZTV7S6118C6__A1__8S6118C11__7S6118C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6118C1[];
extern  VTBL_ENTRY _ZTV7S6118C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6118C1[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D0Ev,_ZTv0_n12_N7S6118C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D0Ev,_ZThn12_N7S6118C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C4D1Ev,_ZTv0_n12_N7S6118C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C4D1Ev,_ZThn12_N7S6118C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C3D0Ev,_ZTv0_n28_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C3D0Ev,_ZThn40_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C3D1Ev,_ZTv0_n28_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C3D1Ev,_ZThn40_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C3D0Ev,_ZTv0_n12_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C3D0Ev,_ZThn28_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C3D1Ev,_ZTv0_n12_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C3D1Ev,_ZThn28_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C3D0Ev,_ZTv0_n24_N7S6118C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C3D0Ev,_ZThn16_N7S6118C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C3D1Ev,_ZTv0_n24_N7S6118C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C3D1Ev,_ZThn16_N7S6118C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C1D0Ev,_ZTv0_n28_N7S6118C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C1D0Ev,_ZThn40_N7S6118C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6118C1D1Ev,_ZTv0_n28_N7S6118C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6118C1D1Ev,_ZThn40_N7S6118C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C1D0Ev,_ZTv0_n12_N7S6118C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C1D0Ev,_ZThn28_N7S6118C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6118C1D1Ev,_ZTv0_n12_N7S6118C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6118C1D1Ev,_ZThn28_N7S6118C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C1D0Ev,_ZTv0_n24_N7S6118C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C1D0Ev,_ZThn16_N7S6118C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6118C1D1Ev,_ZTv0_n24_N7S6118C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6118C1D1Ev,_ZThn16_N7S6118C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6118C1 = {  "S6118C1", // class name
  bases_S6118C1, 16,
  &(vtc_S6118C1[0]), // expected_vtbl_contents
  &(vtt_S6118C1[0]), // expected_vtt_contents
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S6118C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6118C1),33, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6118C1),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7359C5  {
  virtual void  v9(); // _ZN7S7359C52v9Ev
  ~S7359C5(); // tgen
  S7359C5(); // tgen
};
//SIG(-1 S7359C5) C1{ v1}


void  S7359C5 ::v9(){vfunc_called(this, "_ZN7S7359C52v9Ev");}
S7359C5 ::~S7359C5(){ note_dtor("S7359C5", this);} // tgen
S7359C5 ::S7359C5(){ note_ctor("S7359C5", this);} // tgen

static void Test_S7359C5()
{
  extern Class_Descriptor cd_S7359C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7359C5, buf);
    S7359C5 *dp, &lv = *(dp=new (buf) S7359C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7359C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7359C5)");
    test_class_info(&lv, &cd_S7359C5);
    dp->~S7359C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C5(Test_S7359C5, "S7359C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7359C5C1Ev();
extern void _ZN7S7359C5D1Ev();
Name_Map name_map_S7359C5[] = {
  NSPAIR(_ZN7S7359C5C1Ev),
  NSPAIR(_ZN7S7359C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7359C5[];
extern void _ZN7S7359C52v9Ev();
static  VTBL_ENTRY vtc_S7359C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C5[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
Class_Descriptor cd_S7359C5 = {  "S7359C5", // class name
  0,0,//no base classes
  &(vtc_S7359C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7359C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7359C5),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  S7359C4  : virtual S7359C5 {
  int s7359c4f0;
  void *s7359c4f1;
  virtual  ~S7359C4(); // _ZN7S7359C4D2Ev
  virtual void  v10(); // _ZN7S7359C43v10Ev
  virtual void  v11(); // _ZN7S7359C43v11Ev
  S7359C4(); // tgen
};
//SIG(-1 S7359C4) C1{ VBC2{ v3} vd v1 v2 Fi Fp}


 S7359C4 ::~S7359C4(){ note_dtor("S7359C4", this);}
void  S7359C4 ::v10(){vfunc_called(this, "_ZN7S7359C43v10Ev");}
void  S7359C4 ::v11(){vfunc_called(this, "_ZN7S7359C43v11Ev");}
S7359C4 ::S7359C4(){ note_ctor("S7359C4", this);} // tgen

static void Test_S7359C4()
{
  extern Class_Descriptor cd_S7359C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7359C4, buf);
    S7359C4 *dp, &lv = *(dp=new (buf) S7359C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7359C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7359C4)");
    check_base_class_offset(lv, (S7359C5*), 0, "S7359C4");
    check_field_offset(lv, s7359c4f0, ABISELECT(8,4), "S7359C4.s7359c4f0");
    check_field_offset(lv, s7359c4f1, ABISELECT(16,8), "S7359C4.s7359c4f1");
    test_class_info(&lv, &cd_S7359C4);
    dp->~S7359C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C4(Test_S7359C4, "S7359C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7359C4C1Ev();
extern void _ZN7S7359C4D2Ev();
Name_Map name_map_S7359C4[] = {
  NSPAIR(_ZN7S7359C4C1Ev),
  NSPAIR(_ZN7S7359C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7359C5;
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
static Base_Class bases_S7359C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7359C5,    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 _ZTI7S7359C4[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C4D1Ev();
extern void _ZN7S7359C4D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
static  VTBL_ENTRY vtc_S7359C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7359C4[];
static  VTT_ENTRY vtt_S7359C4[] = {
  {&(_ZTV7S7359C4[4]),  4,9},
  {&(_ZTV7S7359C4[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7359C4[];
extern  VTBL_ENTRY _ZTV7S7359C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C4[];
Class_Descriptor cd_S7359C4 = {  "S7359C4", // class name
  bases_S7359C4, 1,
  &(vtc_S7359C4[0]), // expected_vtbl_contents
  &(vtt_S7359C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7359C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7359C4),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7359C4),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  S7359C3  : S7359C4 {
  long double s7359c3f0[8];
  virtual void  v12(); // _ZN7S7359C33v12Ev
  virtual void  v13(); // _ZN7S7359C33v13Ev
  ~S7359C3(); // tgen
  S7359C3(); // tgen
};
//SIG(-1 S7359C3) C1{ BC2{ VBC3{ v3} vd v4 v5 Fi Fp} v1 v2 FD[8]}


void  S7359C3 ::v12(){vfunc_called(this, "_ZN7S7359C33v12Ev");}
void  S7359C3 ::v13(){vfunc_called(this, "_ZN7S7359C33v13Ev");}
S7359C3 ::~S7359C3(){ note_dtor("S7359C3", this);} // tgen
S7359C3 ::S7359C3(){ note_ctor("S7359C3", this);} // tgen

static void Test_S7359C3()
{
  extern Class_Descriptor cd_S7359C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S7359C3, buf);
    S7359C3 *dp, &lv = *(dp=new (buf) S7359C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S7359C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7359C3)");
    check_base_class_offset(lv, (S7359C5*)(S7359C4*), 0, "S7359C3");
    check_base_class_offset(lv, (S7359C4*), 0, "S7359C3");
    check_field_offset(lv, s7359c3f0, ABISELECT(32,12), "S7359C3.s7359c3f0");
    test_class_info(&lv, &cd_S7359C3);
    dp->~S7359C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C3(Test_S7359C3, "S7359C3", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S7359C3C1Ev();
extern void _ZN7S7359C3D1Ev();
Name_Map name_map_S7359C3[] = {
  NSPAIR(_ZN7S7359C3C1Ev),
  NSPAIR(_ZN7S7359C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7359C5;
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
extern Class_Descriptor cd_S7359C4;
extern VTBL_ENTRY _ZTI7S7359C4[];
extern  VTBL_ENTRY _ZTV7S7359C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C4[];
static Base_Class bases_S7359C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7359C5,    0, //bcp->offset
    -1, //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_S7359C4,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7359C3[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C3D1Ev();
extern void _ZN7S7359C3D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
static  VTBL_ENTRY vtc_S7359C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C3[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7359C3[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C4D1Ev();
extern void _ZN7S7359C4D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C4__7S7359C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
};
static  VTT_ENTRY vtt_S7359C3[] = {
  {&(_ZTV7S7359C3[4]),  4,11},
  {&(_tg__ZTV7S7359C4__7S7359C3[4]),  4,9},
  {&(_tg__ZTV7S7359C4__7S7359C3[4]),  4,9},
  {&(_ZTV7S7359C3[4]),  4,11},
};
extern VTBL_ENTRY _ZTI7S7359C3[];
extern  VTBL_ENTRY _ZTV7S7359C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C3[];
Class_Descriptor cd_S7359C3 = {  "S7359C3", // class name
  bases_S7359C3, 2,
  &(vtc_S7359C3[0]), // expected_vtbl_contents
  &(vtt_S7359C3[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S7359C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7359C3),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7359C3),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  S7359C6  {
  void *s7359c6f0;
  virtual void  v14(); // _ZN7S7359C63v14Ev
  virtual void  v15(); // _ZN7S7359C63v15Ev
  virtual void  v16(); // _ZN7S7359C63v16Ev
  virtual void  v17(); // _ZN7S7359C63v17Ev
  ~S7359C6(); // tgen
  S7359C6(); // tgen
};
//SIG(-1 S7359C6) C1{ v1 v2 v3 v4 Fp}


void  S7359C6 ::v14(){vfunc_called(this, "_ZN7S7359C63v14Ev");}
void  S7359C6 ::v15(){vfunc_called(this, "_ZN7S7359C63v15Ev");}
void  S7359C6 ::v16(){vfunc_called(this, "_ZN7S7359C63v16Ev");}
void  S7359C6 ::v17(){vfunc_called(this, "_ZN7S7359C63v17Ev");}
S7359C6 ::~S7359C6(){ note_dtor("S7359C6", this);} // tgen
S7359C6 ::S7359C6(){ note_ctor("S7359C6", this);} // tgen

static void Test_S7359C6()
{
  extern Class_Descriptor cd_S7359C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7359C6, buf);
    S7359C6 *dp, &lv = *(dp=new (buf) S7359C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7359C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7359C6)");
    check_field_offset(lv, s7359c6f0, ABISELECT(8,4), "S7359C6.s7359c6f0");
    test_class_info(&lv, &cd_S7359C6);
    dp->~S7359C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C6(Test_S7359C6, "S7359C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7359C6C1Ev();
extern void _ZN7S7359C6D1Ev();
Name_Map name_map_S7359C6[] = {
  NSPAIR(_ZN7S7359C6C1Ev),
  NSPAIR(_ZN7S7359C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7359C6[];
extern void _ZN7S7359C63v14Ev();
extern void _ZN7S7359C63v15Ev();
extern void _ZN7S7359C63v16Ev();
extern void _ZN7S7359C63v17Ev();
static  VTBL_ENTRY vtc_S7359C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C6[0]),
  (VTBL_ENTRY)&_ZN7S7359C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v17Ev,
};
extern VTBL_ENTRY _ZTI7S7359C6[];
extern  VTBL_ENTRY _ZTV7S7359C6[];
Class_Descriptor cd_S7359C6 = {  "S7359C6", // class name
  0,0,//no base classes
  &(vtc_S7359C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7359C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7359C6),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  S7359C2  : virtual S7359C3 , virtual S7359C6 {
  long double s7359c2f0[8];
  ::S7359C6 s7359c2f1;
  __tsi64 s7359c2f2;
  void *s7359c2f3;
  virtual void  v18(); // _ZN7S7359C23v18Ev
  virtual void  v19(); // _ZN7S7359C23v19Ev
  ~S7359C2(); // tgen
  S7359C2(); // tgen
};
//SIG(-1 S7359C2) C1{ VBC2{ BC3{ VBC4{ v3} vd v4 v5 Fi Fp} v6 v7 FD[8]} VBC5{ v8 v9 v10 v11 Fp} v1 v2 FD[8] FC5 FL Fp}


void  S7359C2 ::v18(){vfunc_called(this, "_ZN7S7359C23v18Ev");}
void  S7359C2 ::v19(){vfunc_called(this, "_ZN7S7359C23v19Ev");}
S7359C2 ::~S7359C2(){ note_dtor("S7359C2", this);} // tgen
S7359C2 ::S7359C2(){ note_ctor("S7359C2", this);} // tgen

static void Test_S7359C2()
{
  extern Class_Descriptor cd_S7359C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,60)];
    init_test(&cd_S7359C2, buf);
    S7359C2 *dp, &lv = *(dp=new (buf) S7359C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,236), "sizeof(S7359C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7359C2)");
    check_base_class_offset(lv, (S7359C5*)(S7359C4*)(S7359C3*), 0, "S7359C2");
    check_base_class_offset(lv, (S7359C4*)(S7359C3*), ABISELECT(176,120), "S7359C2");
    check_base_class_offset(lv, (S7359C3*), ABISELECT(176,120), "S7359C2");
    check_base_class_offset(lv, (S7359C6*), ABISELECT(336,228), "S7359C2");
    check_field_offset(lv, s7359c2f0, ABISELECT(16,4), "S7359C2.s7359c2f0");
    check_field_offset(lv, s7359c2f1, ABISELECT(144,100), "S7359C2.s7359c2f1");
    check_field_offset(lv, s7359c2f2, ABISELECT(160,108), "S7359C2.s7359c2f2");
    check_field_offset(lv, s7359c2f3, ABISELECT(168,116), "S7359C2.s7359c2f3");
    test_class_info(&lv, &cd_S7359C2);
    dp->~S7359C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C2(Test_S7359C2, "S7359C2", ABISELECT(352,236));

#else // __cplusplus

extern void _ZN7S7359C2C1Ev();
extern void _ZN7S7359C2D1Ev();
Name_Map name_map_S7359C2[] = {
  NSPAIR(_ZN7S7359C2C1Ev),
  NSPAIR(_ZN7S7359C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7359C5;
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
extern Class_Descriptor cd_S7359C4;
extern VTBL_ENTRY _ZTI7S7359C4[];
extern  VTBL_ENTRY _ZTV7S7359C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C4[];
extern Class_Descriptor cd_S7359C3;
extern VTBL_ENTRY _ZTI7S7359C3[];
extern  VTBL_ENTRY _ZTV7S7359C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C3[];
extern Class_Descriptor cd_S7359C6;
extern VTBL_ENTRY _ZTI7S7359C6[];
extern  VTBL_ENTRY _ZTV7S7359C6[];
static Base_Class bases_S7359C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7359C5,    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
    1, //immediately_derived
  0, 1},
  {&cd_S7359C4,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    2, //immediately_derived
  0, 0},
  {&cd_S7359C3,    ABISELECT(176,120), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7359C6,    ABISELECT(336,228), //bcp->offset
    27, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7359C2[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C23v18Ev();
extern void _ZN7S7359C23v19Ev();
extern void _ZN7S7359C2D1Ev();
extern void _ZN7S7359C2D0Ev();
extern void _ZN7S7359C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7359C2D1Ev,_ZThn120_N7S7359C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7359C2D0Ev,_ZThn120_N7S7359C2D0Ev)() __attribute__((weak));
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
extern void _ZN7S7359C63v14Ev();
extern void _ZN7S7359C63v15Ev();
extern void _ZN7S7359C63v16Ev();
extern void _ZN7S7359C63v17Ev();
static  VTBL_ENTRY vtc_S7359C2[] = {
  ABISELECT(336,228),
  0,
  ABISELECT(176,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7359C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C2D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-228),
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7359C2[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C3D1Ev();
extern void _ZN7S7359C3D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C3__7S7359C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C3[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
};
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C4D1Ev();
extern void _ZN7S7359C4D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C47S7359C3__7S7359C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
};
extern void _ZN7S7359C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C5__7S7359C47S7359C3__7S7359C2[] = {
  0,
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
};
extern void _ZN7S7359C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C5__7S7359C3__7S7359C2[] = {
  0,
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI7S7359C3[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
};
static  VTT_ENTRY vtt_S7359C2[] = {
  {&(_ZTV7S7359C2[6]),  6,37},
  {&(_ZTV7S7359C2[20]),  20,37},
  {&(_ZTV7S7359C2[6]),  6,37},
  {&(_ZTV7S7359C2[33]),  33,37},
  {&(_tg__ZTV7S7359C3__7S7359C2[4]),  4,11},
  {&(_tg__ZTV7S7359C47S7359C3__7S7359C2[4]),  4,9},
  {&(_tg__ZTV7S7359C5__7S7359C47S7359C3__7S7359C2[3]),  3,4},
  {&(_tg__ZTV7S7359C5__7S7359C3__7S7359C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7359C2[];
extern  VTBL_ENTRY _ZTV7S7359C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C2[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7359C2D0Ev,_ZThn120_N7S7359C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7359C2D1Ev,_ZThn120_N7S7359C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7359C2 = {  "S7359C2", // class name
  bases_S7359C2, 4,
  &(vtc_S7359C2[0]), // expected_vtbl_contents
  &(vtt_S7359C2[0]), // expected_vtt_contents
  ABISELECT(352,236), // object size
  NSPAIRA(_ZTI7S7359C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7359C2),37, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7359C2),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7359C1  : S7359C2 , S7359C5 {
  void *s7359c1f0[7];
  int s7359c1f1;
  virtual  ~S7359C1(); // _ZN7S7359C1D2Ev
  virtual void  v1(); // _ZN7S7359C12v1Ev
  virtual void  v2(); // _ZN7S7359C12v2Ev
  virtual void  v3(); // _ZN7S7359C12v3Ev
  virtual void  v4(); // _ZN7S7359C12v4Ev
  virtual void  v5(); // _ZN7S7359C12v5Ev
  virtual void  v6(); // _ZN7S7359C12v6Ev
  virtual void  v7(); // _ZN7S7359C12v7Ev
  virtual void  v8(); // _ZN7S7359C12v8Ev
  S7359C1(); // tgen
};
//SIG(1 S7359C1) C1{ BC2{ VBC3{ BC4{ VBC5{ v9} vd v10 v11 Fi Fp} v12 v13 FD[8]} VBC6{ v14 v15 v16 v17 Fp} v18 v19 FD[8] FC6 FL Fp} BC5 vd v1 v2 v3 v4 v5 v6 v7 v8 Fp[7] Fi}


 S7359C1 ::~S7359C1(){ note_dtor("S7359C1", this);}
void  S7359C1 ::v1(){vfunc_called(this, "_ZN7S7359C12v1Ev");}
void  S7359C1 ::v2(){vfunc_called(this, "_ZN7S7359C12v2Ev");}
void  S7359C1 ::v3(){vfunc_called(this, "_ZN7S7359C12v3Ev");}
void  S7359C1 ::v4(){vfunc_called(this, "_ZN7S7359C12v4Ev");}
void  S7359C1 ::v5(){vfunc_called(this, "_ZN7S7359C12v5Ev");}
void  S7359C1 ::v6(){vfunc_called(this, "_ZN7S7359C12v6Ev");}
void  S7359C1 ::v7(){vfunc_called(this, "_ZN7S7359C12v7Ev");}
void  S7359C1 ::v8(){vfunc_called(this, "_ZN7S7359C12v8Ev");}
S7359C1 ::S7359C1(){ note_ctor("S7359C1", this);} // tgen

static void Test_S7359C1()
{
  extern Class_Descriptor cd_S7359C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,69)];
    init_test(&cd_S7359C1, buf);
    S7359C1 *dp, &lv = *(dp=new (buf) S7359C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,272), "sizeof(S7359C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7359C1)");
    check_base_class_offset(lv, (S7359C5*)(S7359C4*)(S7359C3*), 0, "S7359C1");
    check_base_class_offset(lv, (S7359C4*)(S7359C3*), ABISELECT(256,156), "S7359C1");
    check_base_class_offset(lv, (S7359C3*)(S7359C2*), ABISELECT(256,156), "S7359C1");
    check_base_class_offset(lv, (S7359C6*)(S7359C2*), ABISELECT(416,264), "S7359C1");
    check_base_class_offset(lv, (S7359C2*), 0, "S7359C1");
    /*is_ambiguous_... S7359C1::S7359C5 */ AMB_check_base_class_offset(lv, (S7359C5*), ABISELECT(176,120), "S7359C1");
    check_field_offset(lv, s7359c1f0, ABISELECT(184,124), "S7359C1.s7359c1f0");
    check_field_offset(lv, s7359c1f1, ABISELECT(240,152), "S7359C1.s7359c1f1");
    test_class_info(&lv, &cd_S7359C1);
    dp->~S7359C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7359C1(Test_S7359C1, "S7359C1", ABISELECT(432,272));

#else // __cplusplus

extern void _ZN7S7359C1C1Ev();
extern void _ZN7S7359C1D2Ev();
Name_Map name_map_S7359C1[] = {
  NSPAIR(_ZN7S7359C1C1Ev),
  NSPAIR(_ZN7S7359C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7359C5;
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
extern Class_Descriptor cd_S7359C4;
extern VTBL_ENTRY _ZTI7S7359C4[];
extern  VTBL_ENTRY _ZTV7S7359C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C4[];
extern Class_Descriptor cd_S7359C3;
extern VTBL_ENTRY _ZTI7S7359C3[];
extern  VTBL_ENTRY _ZTV7S7359C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C3[];
extern Class_Descriptor cd_S7359C6;
extern VTBL_ENTRY _ZTI7S7359C6[];
extern  VTBL_ENTRY _ZTV7S7359C6[];
extern Class_Descriptor cd_S7359C2;
extern VTBL_ENTRY _ZTI7S7359C2[];
extern  VTBL_ENTRY _ZTV7S7359C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C2[];
extern Class_Descriptor cd_S7359C5;
extern VTBL_ENTRY _ZTI7S7359C5[];
extern  VTBL_ENTRY _ZTV7S7359C5[];
static Base_Class bases_S7359C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7359C5,    0, //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_S7359C4,    ABISELECT(256,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7359C3,    ABISELECT(256,156), //bcp->offset
    22, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7359C6,    ABISELECT(416,264), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //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_S7359C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S7359C5,    ABISELECT(176,120), //bcp->offset
    19, //bcp->virtual_function_table_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 _ZTI7S7359C1[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C23v18Ev();
extern void _ZN7S7359C23v19Ev();
extern void _ZN7S7359C1D1Ev();
extern void _ZN7S7359C1D0Ev();
extern void _ZN7S7359C12v1Ev();
extern void _ZN7S7359C12v2Ev();
extern void _ZN7S7359C12v3Ev();
extern void _ZN7S7359C12v4Ev();
extern void _ZN7S7359C12v5Ev();
extern void _ZN7S7359C12v6Ev();
extern void _ZN7S7359C12v7Ev();
extern void _ZN7S7359C12v8Ev();
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7359C1D1Ev,_ZTv0_n20_N7S7359C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7359C1D1Ev,_ZThn156_N7S7359C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7359C1D0Ev,_ZTv0_n20_N7S7359C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S7359C1D0Ev,_ZThn156_N7S7359C1D0Ev)() __attribute__((weak));
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
extern void _ZN7S7359C63v14Ev();
extern void _ZN7S7359C63v15Ev();
extern void _ZN7S7359C63v16Ev();
extern void _ZN7S7359C63v17Ev();
static  VTBL_ENTRY vtc_S7359C1[] = {
  ABISELECT(416,264),
  0,
  ABISELECT(256,156),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C1[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7359C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7359C12v8Ev,
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S7359C1[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI7S7359C1[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C1D1Ev,_ZTv0_n20_N7S7359C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C1D0Ev,_ZTv0_n20_N7S7359C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI7S7359C1[0]),
  (VTBL_ENTRY)&_ZN7S7359C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7359C1[];
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C23v18Ev();
extern void _ZN7S7359C23v19Ev();
extern void _ZN7S7359C2D1Ev();
extern void _ZN7S7359C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C2__7S7359C1[] = {
  ABISELECT(416,264),
  0,
  ABISELECT(256,156),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7359C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7359C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C2D0Ev,
};
extern void _ZN7S7359C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7359C2D1Ev,_ZThn156_N7S7359C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7359C2D0Ev,_ZThn156_N7S7359C2D0Ev)() __attribute__((weak));
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C3__7S7359C2__7S7359C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
};
extern void _ZN7S7359C63v14Ev();
extern void _ZN7S7359C63v15Ev();
extern void _ZN7S7359C63v16Ev();
extern void _ZN7S7359C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C6__7S7359C2__7S7359C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI7S7359C2[0]),
  (VTBL_ENTRY)&_ZN7S7359C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7359C63v17Ev,
};
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C3D1Ev();
extern void _ZN7S7359C3D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
extern void _ZN7S7359C33v12Ev();
extern void _ZN7S7359C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C3__7S7359C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C3[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7359C33v13Ev,
};
extern void _ZN7S7359C52v9Ev();
extern void _ZN7S7359C4D1Ev();
extern void _ZN7S7359C4D0Ev();
extern void _ZN7S7359C43v10Ev();
extern void _ZN7S7359C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C47S7359C3__7S7359C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7359C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7359C43v11Ev,
};
extern void _ZN7S7359C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C5__7S7359C47S7359C3__7S7359C1[] = {
  0,
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI7S7359C4[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
};
extern void _ZN7S7359C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7359C5__7S7359C3__7S7359C1[] = {
  0,
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI7S7359C3[0]),
  (VTBL_ENTRY)&_ZN7S7359C52v9Ev,
};
static  VTT_ENTRY vtt_S7359C1[] = {
  {&(_ZTV7S7359C1[6]),  6,48},
  {&(_tg__ZTV7S7359C2__7S7359C1[6]),  6,11},
  {&(_tg__ZTV7S7359C3__7S7359C2__7S7359C1[9]),  9,16},
  {&(_tg__ZTV7S7359C2__7S7359C1[6]),  6,11},
  {&(_tg__ZTV7S7359C6__7S7359C2__7S7359C1[6]),  6,10},
  {&(_ZTV7S7359C1[31]),  31,48},
  {&(_ZTV7S7359C1[6]),  6,48},
  {&(_ZTV7S7359C1[44]),  44,48},
  {&(_tg__ZTV7S7359C3__7S7359C1[4]),  4,11},
  {&(_tg__ZTV7S7359C47S7359C3__7S7359C1[4]),  4,9},
  {&(_tg__ZTV7S7359C5__7S7359C47S7359C3__7S7359C1[3]),  3,4},
  {&(_tg__ZTV7S7359C5__7S7359C3__7S7359C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7359C1[];
extern  VTBL_ENTRY _ZTV7S7359C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7359C1[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C2D0Ev,_ZTv0_n20_N7S7359C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7359C2D0Ev,_ZThn156_N7S7359C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C2D1Ev,_ZTv0_n20_N7S7359C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7359C2D1Ev,_ZThn156_N7S7359C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C1D0Ev,_ZTv0_n20_N7S7359C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7359C1D0Ev,_ZThn156_N7S7359C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7359C1D1Ev,_ZTv0_n20_N7S7359C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7359C1D1Ev,_ZThn156_N7S7359C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7359C1 = {  "S7359C1", // class name
  bases_S7359C1, 6,
  &(vtc_S7359C1[0]), // expected_vtbl_contents
  &(vtt_S7359C1[0]), // expected_vtt_contents
  ABISELECT(432,272), // object size
  NSPAIRA(_ZTI7S7359C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7359C1),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7359C1),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7358C5  {
  virtual void  v9(); // _ZN7S7358C52v9Ev
  ~S7358C5(); // tgen
  S7358C5(); // tgen
};
//SIG(-1 S7358C5) C1{ v1}


void  S7358C5 ::v9(){vfunc_called(this, "_ZN7S7358C52v9Ev");}
S7358C5 ::~S7358C5(){ note_dtor("S7358C5", this);} // tgen
S7358C5 ::S7358C5(){ note_ctor("S7358C5", this);} // tgen

static void Test_S7358C5()
{
  extern Class_Descriptor cd_S7358C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7358C5, buf);
    S7358C5 *dp, &lv = *(dp=new (buf) S7358C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7358C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7358C5)");
    test_class_info(&lv, &cd_S7358C5);
    dp->~S7358C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C5(Test_S7358C5, "S7358C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7358C5C1Ev();
extern void _ZN7S7358C5D1Ev();
Name_Map name_map_S7358C5[] = {
  NSPAIR(_ZN7S7358C5C1Ev),
  NSPAIR(_ZN7S7358C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7358C5[];
extern void _ZN7S7358C52v9Ev();
static  VTBL_ENTRY vtc_S7358C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C5[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
Class_Descriptor cd_S7358C5 = {  "S7358C5", // class name
  0,0,//no base classes
  &(vtc_S7358C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7358C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7358C5),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  S7358C4  : virtual S7358C5 {
  int s7358c4f0;
  void *s7358c4f1;
  virtual  ~S7358C4(); // _ZN7S7358C4D2Ev
  virtual void  v10(); // _ZN7S7358C43v10Ev
  virtual void  v11(); // _ZN7S7358C43v11Ev
  S7358C4(); // tgen
};
//SIG(-1 S7358C4) C1{ VBC2{ v3} vd v1 v2 Fi Fp}


 S7358C4 ::~S7358C4(){ note_dtor("S7358C4", this);}
void  S7358C4 ::v10(){vfunc_called(this, "_ZN7S7358C43v10Ev");}
void  S7358C4 ::v11(){vfunc_called(this, "_ZN7S7358C43v11Ev");}
S7358C4 ::S7358C4(){ note_ctor("S7358C4", this);} // tgen

static void Test_S7358C4()
{
  extern Class_Descriptor cd_S7358C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7358C4, buf);
    S7358C4 *dp, &lv = *(dp=new (buf) S7358C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7358C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7358C4)");
    check_base_class_offset(lv, (S7358C5*), 0, "S7358C4");
    check_field_offset(lv, s7358c4f0, ABISELECT(8,4), "S7358C4.s7358c4f0");
    check_field_offset(lv, s7358c4f1, ABISELECT(16,8), "S7358C4.s7358c4f1");
    test_class_info(&lv, &cd_S7358C4);
    dp->~S7358C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C4(Test_S7358C4, "S7358C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7358C4C1Ev();
extern void _ZN7S7358C4D2Ev();
Name_Map name_map_S7358C4[] = {
  NSPAIR(_ZN7S7358C4C1Ev),
  NSPAIR(_ZN7S7358C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7358C5;
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
static Base_Class bases_S7358C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7358C5,    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 _ZTI7S7358C4[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C4D1Ev();
extern void _ZN7S7358C4D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
static  VTBL_ENTRY vtc_S7358C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7358C4[];
static  VTT_ENTRY vtt_S7358C4[] = {
  {&(_ZTV7S7358C4[4]),  4,9},
  {&(_ZTV7S7358C4[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7358C4[];
extern  VTBL_ENTRY _ZTV7S7358C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C4[];
Class_Descriptor cd_S7358C4 = {  "S7358C4", // class name
  bases_S7358C4, 1,
  &(vtc_S7358C4[0]), // expected_vtbl_contents
  &(vtt_S7358C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7358C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7358C4),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7358C4),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  S7358C3  : S7358C4 {
  long double s7358c3f0[8];
  virtual void  v12(); // _ZN7S7358C33v12Ev
  virtual void  v13(); // _ZN7S7358C33v13Ev
  ~S7358C3(); // tgen
  S7358C3(); // tgen
};
//SIG(-1 S7358C3) C1{ BC2{ VBC3{ v3} vd v4 v5 Fi Fp} v1 v2 FD[8]}


void  S7358C3 ::v12(){vfunc_called(this, "_ZN7S7358C33v12Ev");}
void  S7358C3 ::v13(){vfunc_called(this, "_ZN7S7358C33v13Ev");}
S7358C3 ::~S7358C3(){ note_dtor("S7358C3", this);} // tgen
S7358C3 ::S7358C3(){ note_ctor("S7358C3", this);} // tgen

static void Test_S7358C3()
{
  extern Class_Descriptor cd_S7358C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S7358C3, buf);
    S7358C3 *dp, &lv = *(dp=new (buf) S7358C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S7358C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7358C3)");
    check_base_class_offset(lv, (S7358C5*)(S7358C4*), 0, "S7358C3");
    check_base_class_offset(lv, (S7358C4*), 0, "S7358C3");
    check_field_offset(lv, s7358c3f0, ABISELECT(32,12), "S7358C3.s7358c3f0");
    test_class_info(&lv, &cd_S7358C3);
    dp->~S7358C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C3(Test_S7358C3, "S7358C3", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S7358C3C1Ev();
extern void _ZN7S7358C3D1Ev();
Name_Map name_map_S7358C3[] = {
  NSPAIR(_ZN7S7358C3C1Ev),
  NSPAIR(_ZN7S7358C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7358C5;
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
extern Class_Descriptor cd_S7358C4;
extern VTBL_ENTRY _ZTI7S7358C4[];
extern  VTBL_ENTRY _ZTV7S7358C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C4[];
static Base_Class bases_S7358C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7358C5,    0, //bcp->offset
    -1, //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_S7358C4,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7358C3[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C3D1Ev();
extern void _ZN7S7358C3D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
static  VTBL_ENTRY vtc_S7358C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C3[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S7358C3[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C4D1Ev();
extern void _ZN7S7358C4D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C4__7S7358C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
};
static  VTT_ENTRY vtt_S7358C3[] = {
  {&(_ZTV7S7358C3[4]),  4,11},
  {&(_tg__ZTV7S7358C4__7S7358C3[4]),  4,9},
  {&(_tg__ZTV7S7358C4__7S7358C3[4]),  4,9},
  {&(_ZTV7S7358C3[4]),  4,11},
};
extern VTBL_ENTRY _ZTI7S7358C3[];
extern  VTBL_ENTRY _ZTV7S7358C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C3[];
Class_Descriptor cd_S7358C3 = {  "S7358C3", // class name
  bases_S7358C3, 2,
  &(vtc_S7358C3[0]), // expected_vtbl_contents
  &(vtt_S7358C3[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S7358C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7358C3),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7358C3),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  S7358C6  {
  void *s7358c6f0;
  virtual void  v14(); // _ZN7S7358C63v14Ev
  virtual void  v15(); // _ZN7S7358C63v15Ev
  virtual void  v16(); // _ZN7S7358C63v16Ev
  virtual void  v17(); // _ZN7S7358C63v17Ev
  ~S7358C6(); // tgen
  S7358C6(); // tgen
};
//SIG(-1 S7358C6) C1{ v1 v2 v3 v4 Fp}


void  S7358C6 ::v14(){vfunc_called(this, "_ZN7S7358C63v14Ev");}
void  S7358C6 ::v15(){vfunc_called(this, "_ZN7S7358C63v15Ev");}
void  S7358C6 ::v16(){vfunc_called(this, "_ZN7S7358C63v16Ev");}
void  S7358C6 ::v17(){vfunc_called(this, "_ZN7S7358C63v17Ev");}
S7358C6 ::~S7358C6(){ note_dtor("S7358C6", this);} // tgen
S7358C6 ::S7358C6(){ note_ctor("S7358C6", this);} // tgen

static void Test_S7358C6()
{
  extern Class_Descriptor cd_S7358C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7358C6, buf);
    S7358C6 *dp, &lv = *(dp=new (buf) S7358C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7358C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7358C6)");
    check_field_offset(lv, s7358c6f0, ABISELECT(8,4), "S7358C6.s7358c6f0");
    test_class_info(&lv, &cd_S7358C6);
    dp->~S7358C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C6(Test_S7358C6, "S7358C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7358C6C1Ev();
extern void _ZN7S7358C6D1Ev();
Name_Map name_map_S7358C6[] = {
  NSPAIR(_ZN7S7358C6C1Ev),
  NSPAIR(_ZN7S7358C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7358C6[];
extern void _ZN7S7358C63v14Ev();
extern void _ZN7S7358C63v15Ev();
extern void _ZN7S7358C63v16Ev();
extern void _ZN7S7358C63v17Ev();
static  VTBL_ENTRY vtc_S7358C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C6[0]),
  (VTBL_ENTRY)&_ZN7S7358C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v17Ev,
};
extern VTBL_ENTRY _ZTI7S7358C6[];
extern  VTBL_ENTRY _ZTV7S7358C6[];
Class_Descriptor cd_S7358C6 = {  "S7358C6", // class name
  0,0,//no base classes
  &(vtc_S7358C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7358C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7358C6),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  S7358C2  : virtual S7358C3 , virtual S7358C6 {
  long double s7358c2f0[8];
  ::S7358C6 s7358c2f1;
  long s7358c2f2;
  void *s7358c2f3;
  virtual void  v18(); // _ZN7S7358C23v18Ev
  virtual void  v19(); // _ZN7S7358C23v19Ev
  ~S7358C2(); // tgen
  S7358C2(); // tgen
};
//SIG(-1 S7358C2) C1{ VBC2{ BC3{ VBC4{ v3} vd v4 v5 Fi Fp} v6 v7 FD[8]} VBC5{ v8 v9 v10 v11 Fp} v1 v2 FD[8] FC5 Fl Fp}


void  S7358C2 ::v18(){vfunc_called(this, "_ZN7S7358C23v18Ev");}
void  S7358C2 ::v19(){vfunc_called(this, "_ZN7S7358C23v19Ev");}
S7358C2 ::~S7358C2(){ note_dtor("S7358C2", this);} // tgen
S7358C2 ::S7358C2(){ note_ctor("S7358C2", this);} // tgen

static void Test_S7358C2()
{
  extern Class_Descriptor cd_S7358C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,59)];
    init_test(&cd_S7358C2, buf);
    S7358C2 *dp, &lv = *(dp=new (buf) S7358C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,232), "sizeof(S7358C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7358C2)");
    check_base_class_offset(lv, (S7358C5*)(S7358C4*)(S7358C3*), 0, "S7358C2");
    check_base_class_offset(lv, (S7358C4*)(S7358C3*), ABISELECT(176,116), "S7358C2");
    check_base_class_offset(lv, (S7358C3*), ABISELECT(176,116), "S7358C2");
    check_base_class_offset(lv, (S7358C6*), ABISELECT(336,224), "S7358C2");
    check_field_offset(lv, s7358c2f0, ABISELECT(16,4), "S7358C2.s7358c2f0");
    check_field_offset(lv, s7358c2f1, ABISELECT(144,100), "S7358C2.s7358c2f1");
    check_field_offset(lv, s7358c2f2, ABISELECT(160,108), "S7358C2.s7358c2f2");
    check_field_offset(lv, s7358c2f3, ABISELECT(168,112), "S7358C2.s7358c2f3");
    test_class_info(&lv, &cd_S7358C2);
    dp->~S7358C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C2(Test_S7358C2, "S7358C2", ABISELECT(352,232));

#else // __cplusplus

extern void _ZN7S7358C2C1Ev();
extern void _ZN7S7358C2D1Ev();
Name_Map name_map_S7358C2[] = {
  NSPAIR(_ZN7S7358C2C1Ev),
  NSPAIR(_ZN7S7358C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7358C5;
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
extern Class_Descriptor cd_S7358C4;
extern VTBL_ENTRY _ZTI7S7358C4[];
extern  VTBL_ENTRY _ZTV7S7358C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C4[];
extern Class_Descriptor cd_S7358C3;
extern VTBL_ENTRY _ZTI7S7358C3[];
extern  VTBL_ENTRY _ZTV7S7358C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C3[];
extern Class_Descriptor cd_S7358C6;
extern VTBL_ENTRY _ZTI7S7358C6[];
extern  VTBL_ENTRY _ZTV7S7358C6[];
static Base_Class bases_S7358C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7358C5,    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
    1, //immediately_derived
  0, 1},
  {&cd_S7358C4,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    2, //immediately_derived
  0, 0},
  {&cd_S7358C3,    ABISELECT(176,116), //bcp->offset
    11, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7358C6,    ABISELECT(336,224), //bcp->offset
    27, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7358C2[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C23v18Ev();
extern void _ZN7S7358C23v19Ev();
extern void _ZN7S7358C2D1Ev();
extern void _ZN7S7358C2D0Ev();
extern void _ZN7S7358C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7358C2D1Ev,_ZThn116_N7S7358C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7358C2D0Ev,_ZThn116_N7S7358C2D0Ev)() __attribute__((weak));
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
extern void _ZN7S7358C63v14Ev();
extern void _ZN7S7358C63v15Ev();
extern void _ZN7S7358C63v16Ev();
extern void _ZN7S7358C63v17Ev();
static  VTBL_ENTRY vtc_S7358C2[] = {
  ABISELECT(336,224),
  0,
  ABISELECT(176,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7358C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C2D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-116),
  ABISELECT(-176,-116),
  ABISELECT(-176,-116),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7358C2[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C3D1Ev();
extern void _ZN7S7358C3D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C3__7S7358C2[] = {
  ABISELECT(-176,-116),
  ABISELECT(-176,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C3[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
};
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C4D1Ev();
extern void _ZN7S7358C4D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C47S7358C3__7S7358C2[] = {
  ABISELECT(-176,-116),
  ABISELECT(-176,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
};
extern void _ZN7S7358C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C5__7S7358C47S7358C3__7S7358C2[] = {
  0,
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
};
extern void _ZN7S7358C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C5__7S7358C3__7S7358C2[] = {
  0,
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI7S7358C3[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
};
static  VTT_ENTRY vtt_S7358C2[] = {
  {&(_ZTV7S7358C2[6]),  6,37},
  {&(_ZTV7S7358C2[20]),  20,37},
  {&(_ZTV7S7358C2[6]),  6,37},
  {&(_ZTV7S7358C2[33]),  33,37},
  {&(_tg__ZTV7S7358C3__7S7358C2[4]),  4,11},
  {&(_tg__ZTV7S7358C47S7358C3__7S7358C2[4]),  4,9},
  {&(_tg__ZTV7S7358C5__7S7358C47S7358C3__7S7358C2[3]),  3,4},
  {&(_tg__ZTV7S7358C5__7S7358C3__7S7358C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7358C2[];
extern  VTBL_ENTRY _ZTV7S7358C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C2[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7358C2D0Ev,_ZThn116_N7S7358C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7358C2D1Ev,_ZThn116_N7S7358C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7358C2 = {  "S7358C2", // class name
  bases_S7358C2, 4,
  &(vtc_S7358C2[0]), // expected_vtbl_contents
  &(vtt_S7358C2[0]), // expected_vtt_contents
  ABISELECT(352,232), // object size
  NSPAIRA(_ZTI7S7358C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7358C2),37, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7358C2),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7358C1  : S7358C2 , S7358C5 {
  void *s7358c1f0[7];
  int s7358c1f1;
  virtual  ~S7358C1(); // _ZN7S7358C1D2Ev
  virtual void  v1(); // _ZN7S7358C12v1Ev
  virtual void  v2(); // _ZN7S7358C12v2Ev
  virtual void  v3(); // _ZN7S7358C12v3Ev
  virtual void  v4(); // _ZN7S7358C12v4Ev
  virtual void  v5(); // _ZN7S7358C12v5Ev
  virtual void  v6(); // _ZN7S7358C12v6Ev
  virtual void  v7(); // _ZN7S7358C12v7Ev
  virtual void  v8(); // _ZN7S7358C12v8Ev
  S7358C1(); // tgen
};
//SIG(1 S7358C1) C1{ BC2{ VBC3{ BC4{ VBC5{ v9} vd v10 v11 Fi Fp} v12 v13 FD[8]} VBC6{ v14 v15 v16 v17 Fp} v18 v19 FD[8] FC6 Fl Fp} BC5 vd v1 v2 v3 v4 v5 v6 v7 v8 Fp[7] Fi}


 S7358C1 ::~S7358C1(){ note_dtor("S7358C1", this);}
void  S7358C1 ::v1(){vfunc_called(this, "_ZN7S7358C12v1Ev");}
void  S7358C1 ::v2(){vfunc_called(this, "_ZN7S7358C12v2Ev");}
void  S7358C1 ::v3(){vfunc_called(this, "_ZN7S7358C12v3Ev");}
void  S7358C1 ::v4(){vfunc_called(this, "_ZN7S7358C12v4Ev");}
void  S7358C1 ::v5(){vfunc_called(this, "_ZN7S7358C12v5Ev");}
void  S7358C1 ::v6(){vfunc_called(this, "_ZN7S7358C12v6Ev");}
void  S7358C1 ::v7(){vfunc_called(this, "_ZN7S7358C12v7Ev");}
void  S7358C1 ::v8(){vfunc_called(this, "_ZN7S7358C12v8Ev");}
S7358C1 ::S7358C1(){ note_ctor("S7358C1", this);} // tgen

static void Test_S7358C1()
{
  extern Class_Descriptor cd_S7358C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,68)];
    init_test(&cd_S7358C1, buf);
    S7358C1 *dp, &lv = *(dp=new (buf) S7358C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,268), "sizeof(S7358C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7358C1)");
    check_base_class_offset(lv, (S7358C5*)(S7358C4*)(S7358C3*), 0, "S7358C1");
    check_base_class_offset(lv, (S7358C4*)(S7358C3*), ABISELECT(256,152), "S7358C1");
    check_base_class_offset(lv, (S7358C3*)(S7358C2*), ABISELECT(256,152), "S7358C1");
    check_base_class_offset(lv, (S7358C6*)(S7358C2*), ABISELECT(416,260), "S7358C1");
    check_base_class_offset(lv, (S7358C2*), 0, "S7358C1");
    /*is_ambiguous_... S7358C1::S7358C5 */ AMB_check_base_class_offset(lv, (S7358C5*), ABISELECT(176,116), "S7358C1");
    check_field_offset(lv, s7358c1f0, ABISELECT(184,120), "S7358C1.s7358c1f0");
    check_field_offset(lv, s7358c1f1, ABISELECT(240,148), "S7358C1.s7358c1f1");
    test_class_info(&lv, &cd_S7358C1);
    dp->~S7358C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7358C1(Test_S7358C1, "S7358C1", ABISELECT(432,268));

#else // __cplusplus

extern void _ZN7S7358C1C1Ev();
extern void _ZN7S7358C1D2Ev();
Name_Map name_map_S7358C1[] = {
  NSPAIR(_ZN7S7358C1C1Ev),
  NSPAIR(_ZN7S7358C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7358C5;
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
extern Class_Descriptor cd_S7358C4;
extern VTBL_ENTRY _ZTI7S7358C4[];
extern  VTBL_ENTRY _ZTV7S7358C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C4[];
extern Class_Descriptor cd_S7358C3;
extern VTBL_ENTRY _ZTI7S7358C3[];
extern  VTBL_ENTRY _ZTV7S7358C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C3[];
extern Class_Descriptor cd_S7358C6;
extern VTBL_ENTRY _ZTI7S7358C6[];
extern  VTBL_ENTRY _ZTV7S7358C6[];
extern Class_Descriptor cd_S7358C2;
extern VTBL_ENTRY _ZTI7S7358C2[];
extern  VTBL_ENTRY _ZTV7S7358C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C2[];
extern Class_Descriptor cd_S7358C5;
extern VTBL_ENTRY _ZTI7S7358C5[];
extern  VTBL_ENTRY _ZTV7S7358C5[];
static Base_Class bases_S7358C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7358C5,    0, //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_S7358C4,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7358C3,    ABISELECT(256,152), //bcp->offset
    22, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7358C6,    ABISELECT(416,260), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //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_S7358C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S7358C5,    ABISELECT(176,116), //bcp->offset
    19, //bcp->virtual_function_table_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 _ZTI7S7358C1[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C23v18Ev();
extern void _ZN7S7358C23v19Ev();
extern void _ZN7S7358C1D1Ev();
extern void _ZN7S7358C1D0Ev();
extern void _ZN7S7358C12v1Ev();
extern void _ZN7S7358C12v2Ev();
extern void _ZN7S7358C12v3Ev();
extern void _ZN7S7358C12v4Ev();
extern void _ZN7S7358C12v5Ev();
extern void _ZN7S7358C12v6Ev();
extern void _ZN7S7358C12v7Ev();
extern void _ZN7S7358C12v8Ev();
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7358C1D1Ev,_ZTv0_n20_N7S7358C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7358C1D1Ev,_ZThn152_N7S7358C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7358C1D0Ev,_ZTv0_n20_N7S7358C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S7358C1D0Ev,_ZThn152_N7S7358C1D0Ev)() __attribute__((weak));
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
extern void _ZN7S7358C63v14Ev();
extern void _ZN7S7358C63v15Ev();
extern void _ZN7S7358C63v16Ev();
extern void _ZN7S7358C63v17Ev();
static  VTBL_ENTRY vtc_S7358C1[] = {
  ABISELECT(416,260),
  0,
  ABISELECT(256,152),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C1[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7358C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7358C12v8Ev,
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7358C1[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7358C1[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C1D1Ev,_ZTv0_n20_N7S7358C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C1D0Ev,_ZTv0_n20_N7S7358C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI7S7358C1[0]),
  (VTBL_ENTRY)&_ZN7S7358C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v17Ev,
};
extern VTBL_ENTRY _ZTV7S7358C1[];
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C23v18Ev();
extern void _ZN7S7358C23v19Ev();
extern void _ZN7S7358C2D1Ev();
extern void _ZN7S7358C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C2__7S7358C1[] = {
  ABISELECT(416,260),
  0,
  ABISELECT(256,152),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7358C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7358C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C2D0Ev,
};
extern void _ZN7S7358C52v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7358C2D1Ev,_ZThn152_N7S7358C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7358C2D0Ev,_ZThn152_N7S7358C2D0Ev)() __attribute__((weak));
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C3__7S7358C2__7S7358C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
};
extern void _ZN7S7358C63v14Ev();
extern void _ZN7S7358C63v15Ev();
extern void _ZN7S7358C63v16Ev();
extern void _ZN7S7358C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C6__7S7358C2__7S7358C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI7S7358C2[0]),
  (VTBL_ENTRY)&_ZN7S7358C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7358C63v17Ev,
};
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C3D1Ev();
extern void _ZN7S7358C3D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
extern void _ZN7S7358C33v12Ev();
extern void _ZN7S7358C33v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C3__7S7358C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C3[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7358C33v13Ev,
};
extern void _ZN7S7358C52v9Ev();
extern void _ZN7S7358C4D1Ev();
extern void _ZN7S7358C4D0Ev();
extern void _ZN7S7358C43v10Ev();
extern void _ZN7S7358C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C47S7358C3__7S7358C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7358C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7358C43v11Ev,
};
extern void _ZN7S7358C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C5__7S7358C47S7358C3__7S7358C1[] = {
  0,
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI7S7358C4[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
};
extern void _ZN7S7358C52v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7358C5__7S7358C3__7S7358C1[] = {
  0,
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI7S7358C3[0]),
  (VTBL_ENTRY)&_ZN7S7358C52v9Ev,
};
static  VTT_ENTRY vtt_S7358C1[] = {
  {&(_ZTV7S7358C1[6]),  6,48},
  {&(_tg__ZTV7S7358C2__7S7358C1[6]),  6,11},
  {&(_tg__ZTV7S7358C3__7S7358C2__7S7358C1[9]),  9,16},
  {&(_tg__ZTV7S7358C2__7S7358C1[6]),  6,11},
  {&(_tg__ZTV7S7358C6__7S7358C2__7S7358C1[6]),  6,10},
  {&(_ZTV7S7358C1[31]),  31,48},
  {&(_ZTV7S7358C1[6]),  6,48},
  {&(_ZTV7S7358C1[44]),  44,48},
  {&(_tg__ZTV7S7358C3__7S7358C1[4]),  4,11},
  {&(_tg__ZTV7S7358C47S7358C3__7S7358C1[4]),  4,9},
  {&(_tg__ZTV7S7358C5__7S7358C47S7358C3__7S7358C1[3]),  3,4},
  {&(_tg__ZTV7S7358C5__7S7358C3__7S7358C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7358C1[];
extern  VTBL_ENTRY _ZTV7S7358C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7358C1[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C2D0Ev,_ZTv0_n20_N7S7358C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7358C2D0Ev,_ZThn152_N7S7358C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C2D1Ev,_ZTv0_n20_N7S7358C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7358C2D1Ev,_ZThn152_N7S7358C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C1D0Ev,_ZTv0_n20_N7S7358C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7358C1D0Ev,_ZThn152_N7S7358C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7358C1D1Ev,_ZTv0_n20_N7S7358C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7358C1D1Ev,_ZThn152_N7S7358C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7358C1 = {  "S7358C1", // class name
  bases_S7358C1, 6,
  &(vtc_S7358C1[0]), // expected_vtbl_contents
  &(vtt_S7358C1[0]), // expected_vtt_contents
  ABISELECT(432,268), // object size
  NSPAIRA(_ZTI7S7358C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7358C1),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7358C1),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9969C2_nt  {
  virtual  ~S9969C2_nt(); // _ZN10S9969C2_ntD1Ev
  virtual void  v5(); // _ZN10S9969C2_nt2v5Ev
  virtual void  v6(); // _ZN10S9969C2_nt2v6Ev
  virtual void  v7(); // _ZN10S9969C2_nt2v7Ev
  virtual void  v8(); // _ZN10S9969C2_nt2v8Ev
  S9969C2_nt(); // tgen
};
//SIG(-1 S9969C2_nt) C1{ vd v1 v2 v3 v4}


 S9969C2_nt ::~S9969C2_nt(){ note_dtor("S9969C2_nt", this);}
void  S9969C2_nt ::v5(){vfunc_called(this, "_ZN10S9969C2_nt2v5Ev");}
void  S9969C2_nt ::v6(){vfunc_called(this, "_ZN10S9969C2_nt2v6Ev");}
void  S9969C2_nt ::v7(){vfunc_called(this, "_ZN10S9969C2_nt2v7Ev");}
void  S9969C2_nt ::v8(){vfunc_called(this, "_ZN10S9969C2_nt2v8Ev");}
S9969C2_nt ::S9969C2_nt(){ note_ctor("S9969C2_nt", this);} // tgen

//skip512 S9969C2_nt

#else // __cplusplus

extern void _ZN10S9969C2_ntC1Ev();
extern void _ZN10S9969C2_ntD1Ev();
Name_Map name_map_S9969C2_nt[] = {
  NSPAIR(_ZN10S9969C2_ntC1Ev),
  NSPAIR(_ZN10S9969C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9969C2_nt[];
extern void _ZN10S9969C2_ntD1Ev();
extern void _ZN10S9969C2_ntD0Ev();
extern void _ZN10S9969C2_nt2v5Ev();
extern void _ZN10S9969C2_nt2v6Ev();
extern void _ZN10S9969C2_nt2v7Ev();
extern void _ZN10S9969C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S9969C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9969C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9969C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S9969C2_nt[];
VTBL_ENTRY *P__ZTI10S9969C2_nt = _ZTI10S9969C2_nt; 
extern  VTBL_ENTRY _ZTV10S9969C2_nt[];
Class_Descriptor cd_S9969C2_nt = {  "S9969C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9969C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9969C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9969C2_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  S9969C6_nt  {
  virtual  ~S9969C6_nt(); // _ZN10S9969C6_ntD1Ev
  virtual void  v11(); // _ZN10S9969C6_nt3v11Ev
  virtual void  v12(); // _ZN10S9969C6_nt3v12Ev
  S9969C6_nt(); // tgen
};
//SIG(-1 S9969C6_nt) C1{ vd v1 v2}


 S9969C6_nt ::~S9969C6_nt(){ note_dtor("S9969C6_nt", this);}
void  S9969C6_nt ::v11(){vfunc_called(this, "_ZN10S9969C6_nt3v11Ev");}
void  S9969C6_nt ::v12(){vfunc_called(this, "_ZN10S9969C6_nt3v12Ev");}
S9969C6_nt ::S9969C6_nt(){ note_ctor("S9969C6_nt", this);} // tgen

//skip512 S9969C6_nt

#else // __cplusplus

extern void _ZN10S9969C6_ntC1Ev();
extern void _ZN10S9969C6_ntD1Ev();
Name_Map name_map_S9969C6_nt[] = {
  NSPAIR(_ZN10S9969C6_ntC1Ev),
  NSPAIR(_ZN10S9969C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9969C6_nt[];
extern void _ZN10S9969C6_ntD1Ev();
extern void _ZN10S9969C6_ntD0Ev();
extern void _ZN10S9969C6_nt3v11Ev();
extern void _ZN10S9969C6_nt3v12Ev();
static  VTBL_ENTRY vtc_S9969C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9969C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S9969C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9969C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9969C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S9969C6_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S9969C6_nt[];
VTBL_ENTRY *P__ZTI10S9969C6_nt = _ZTI10S9969C6_nt; 
extern  VTBL_ENTRY _ZTV10S9969C6_nt[];
Class_Descriptor cd_S9969C6_nt = {  "S9969C6_nt", // class name
  0,0,//no base classes
  &(vtc_S9969C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9969C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9969C6_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  S9969C3_nt  : S2014C37 , S9969C6_nt {
  virtual  ~S9969C3_nt(); // _ZN10S9969C3_ntD1Ev
  virtual void  v9(); // _ZN10S9969C3_nt2v9Ev
  virtual void  v10(); // _ZN10S9969C3_nt3v10Ev
  S9969C3_nt(); // tgen
};
//SIG(-1 S9969C3_nt) C1{ BC2{ m Fp Fi[2] FC3{ m}} BC4{ vd v3 v4} vd v1 v2}


 S9969C3_nt ::~S9969C3_nt(){ note_dtor("S9969C3_nt", this);}
void  S9969C3_nt ::v9(){vfunc_called(this, "_ZN10S9969C3_nt2v9Ev");}
void  S9969C3_nt ::v10(){vfunc_called(this, "_ZN10S9969C3_nt3v10Ev");}
S9969C3_nt ::S9969C3_nt(){ note_ctor("S9969C3_nt", this);} // tgen

//skip512 S9969C3_nt

#else // __cplusplus

extern void _ZN10S9969C3_ntC1Ev();
extern void _ZN10S9969C3_ntD1Ev();
Name_Map name_map_S9969C3_nt[] = {
  NSPAIR(_ZN10S9969C3_ntC1Ev),
  NSPAIR(_ZN10S9969C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2014C37;
extern VTBL_ENTRY _ZTI8S2014C37[];
extern Class_Descriptor cd_S9969C6_nt;
extern VTBL_ENTRY _ZTI10S9969C6_nt[];
extern  VTBL_ENTRY _ZTV10S9969C6_nt[];
static Base_Class bases_S9969C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C37,    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_S9969C6_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 _ZTI10S9969C3_nt[];
extern void _ZN10S9969C3_ntD1Ev();
extern void _ZN10S9969C3_ntD0Ev();
extern void _ZN10S9969C6_nt3v11Ev();
extern void _ZN10S9969C6_nt3v12Ev();
extern void _ZN10S9969C3_nt2v9Ev();
extern void _ZN10S9969C3_nt3v10Ev();
static  VTBL_ENTRY vtc_S9969C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9969C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S9969C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9969C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9969C6_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S9969C6_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S9969C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9969C3_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S9969C3_nt[];
VTBL_ENTRY *P__ZTI10S9969C3_nt = _ZTI10S9969C3_nt; 
extern  VTBL_ENTRY _ZTV10S9969C3_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9969C1  : S9969C2_nt {
  void *s9969c1f0;
  ::S9969C3_nt s9969c1f1;
  void *s9969c1f2[3];
  ::S9969C3_nt s9969c1f3;
  int s9969c1f4;
  ::S2014C25 s9969c1f5;
  virtual  ~S9969C1(); // _ZN7S9969C1D1Ev
  virtual void  v1(); // _ZN7S9969C12v1Ev
  virtual void  v2(); // _ZN7S9969C12v2Ev
  virtual void  v3(); // _ZN7S9969C12v3Ev
  virtual void  v4(); // _ZN7S9969C12v4Ev
  S9969C1(); // tgen
};
//SIG(1 S9969C1) C1{ BC2{ vd v5 v6 v7 v8} vd v1 v2 v3 v4 Fp FC3{ BC4{ m Fp Fi[2] FC5{ m}} BC6{ vd v11 v12} vd v9 v10} Fp[3] FC3 Fi FC7{ BC8{ m Fp Fi FC9{ m} FC10{ m}}}}


 S9969C1 ::~S9969C1(){ note_dtor("S9969C1", this);}
void  S9969C1 ::v1(){vfunc_called(this, "_ZN7S9969C12v1Ev");}
void  S9969C1 ::v2(){vfunc_called(this, "_ZN7S9969C12v2Ev");}
void  S9969C1 ::v3(){vfunc_called(this, "_ZN7S9969C12v3Ev");}
void  S9969C1 ::v4(){vfunc_called(this, "_ZN7S9969C12v4Ev");}
S9969C1 ::S9969C1(){ note_ctor("S9969C1", this);} // tgen

static void Test_S9969C1()
{
  extern Class_Descriptor cd_S9969C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S9969C1, buf);
    S9969C1 *dp, &lv = *(dp=new (buf) S9969C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S9969C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9969C1)");
    check_base_class_offset(lv, (S9969C2_nt*), 0, "S9969C1");
    check_field_offset(lv, s9969c1f0, ABISELECT(8,4), "S9969C1.s9969c1f0");
    check_field_offset(lv, s9969c1f1, ABISELECT(16,8), "S9969C1.s9969c1f1");
    check_field_offset(lv, s9969c1f2, ABISELECT(48,28), "S9969C1.s9969c1f2");
    check_field_offset(lv, s9969c1f3, ABISELECT(72,40), "S9969C1.s9969c1f3");
    check_field_offset(lv, s9969c1f4, ABISELECT(104,60), "S9969C1.s9969c1f4");
    check_field_offset(lv, s9969c1f5, ABISELECT(112,64), "S9969C1.s9969c1f5");
    test_class_info(&lv, &cd_S9969C1);
    dp->~S9969C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9969C1(Test_S9969C1, "S9969C1", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S9969C1C1Ev();
extern void _ZN7S9969C1D1Ev();
Name_Map name_map_S9969C1[] = {
  NSPAIR(_ZN7S9969C1C1Ev),
  NSPAIR(_ZN7S9969C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9969C2_nt;
extern VTBL_ENTRY _ZTI10S9969C2_nt[];
extern  VTBL_ENTRY _ZTV10S9969C2_nt[];
static Base_Class bases_S9969C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9969C2_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 _ZTI7S9969C1[];
extern void _ZN7S9969C1D1Ev();
extern void _ZN7S9969C1D0Ev();
extern void _ZN10S9969C2_nt2v5Ev();
extern void _ZN10S9969C2_nt2v6Ev();
extern void _ZN10S9969C2_nt2v7Ev();
extern void _ZN10S9969C2_nt2v8Ev();
extern void _ZN7S9969C12v1Ev();
extern void _ZN7S9969C12v2Ev();
extern void _ZN7S9969C12v3Ev();
extern void _ZN7S9969C12v4Ev();
static  VTBL_ENTRY vtc_S9969C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9969C1[0]),
  (VTBL_ENTRY)&_ZN7S9969C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9969C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S9969C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S9969C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9969C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9969C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9969C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9969C1[];
extern  VTBL_ENTRY _ZTV7S9969C1[];
Class_Descriptor cd_S9969C1 = {  "S9969C1", // class name
  bases_S9969C1, 1,
  &(vtc_S9969C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S9969C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9969C1),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  S20092C2_nt  {
  int s20092c2f0;
  virtual  ~S20092C2_nt(); // _ZN11S20092C2_ntD1Ev
  virtual void  v2(); // _ZN11S20092C2_nt2v2Ev
  S20092C2_nt(); // tgen
};
//SIG(-1 S20092C2_nt) C1{ vd v1 Fi}


 S20092C2_nt ::~S20092C2_nt(){ note_dtor("S20092C2_nt", this);}
void  S20092C2_nt ::v2(){vfunc_called(this, "_ZN11S20092C2_nt2v2Ev");}
S20092C2_nt ::S20092C2_nt(){ note_ctor("S20092C2_nt", this);} // tgen

//skip512 S20092C2_nt

#else // __cplusplus

extern void _ZN11S20092C2_ntC1Ev();
extern void _ZN11S20092C2_ntD1Ev();
Name_Map name_map_S20092C2_nt[] = {
  NSPAIR(_ZN11S20092C2_ntC1Ev),
  NSPAIR(_ZN11S20092C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20092C2_nt[];
extern void _ZN11S20092C2_ntD1Ev();
extern void _ZN11S20092C2_ntD0Ev();
extern void _ZN11S20092C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S20092C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20092C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20092C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20092C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20092C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI11S20092C2_nt[];
VTBL_ENTRY *P__ZTI11S20092C2_nt = _ZTI11S20092C2_nt; 
extern  VTBL_ENTRY _ZTV11S20092C2_nt[];
Class_Descriptor cd_S20092C2_nt = {  "S20092C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20092C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20092C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20092C2_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  S20092C5_nt  {
  int s20092c5f0;
  void *s20092c5f1;
  virtual void  v20(); // _ZN11S20092C5_nt3v20Ev
  ~S20092C5_nt(); // tgen
  S20092C5_nt(); // tgen
};
//SIG(-1 S20092C5_nt) C1{ v1 Fi Fp}


void  S20092C5_nt ::v20(){vfunc_called(this, "_ZN11S20092C5_nt3v20Ev");}
S20092C5_nt ::~S20092C5_nt(){ note_dtor("S20092C5_nt", this);} // tgen
S20092C5_nt ::S20092C5_nt(){ note_ctor("S20092C5_nt", this);} // tgen

//skip512 S20092C5_nt

#else // __cplusplus

extern void _ZN11S20092C5_ntC1Ev();
extern void _ZN11S20092C5_ntD1Ev();
Name_Map name_map_S20092C5_nt[] = {
  NSPAIR(_ZN11S20092C5_ntC1Ev),
  NSPAIR(_ZN11S20092C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20092C5_nt[];
extern void _ZN11S20092C5_nt3v20Ev();
static  VTBL_ENTRY vtc_S20092C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20092C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20092C5_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI11S20092C5_nt[];
VTBL_ENTRY *P__ZTI11S20092C5_nt = _ZTI11S20092C5_nt; 
extern  VTBL_ENTRY _ZTV11S20092C5_nt[];
Class_Descriptor cd_S20092C5_nt = {  "S20092C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20092C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S20092C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20092C5_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  S20092C4  : virtual S20092C5_nt {
  virtual void  v18(); // _ZN8S20092C43v18Ev
  virtual void  v19(); // _ZN8S20092C43v19Ev
  ~S20092C4(); // tgen
  S20092C4(); // tgen
};
//SIG(-1 S20092C4) C1{ VBC2{ v3 Fi Fp} v1 v2}


void  S20092C4 ::v18(){vfunc_called(this, "_ZN8S20092C43v18Ev");}
void  S20092C4 ::v19(){vfunc_called(this, "_ZN8S20092C43v19Ev");}
S20092C4 ::~S20092C4(){ note_dtor("S20092C4", this);} // tgen
S20092C4 ::S20092C4(){ note_ctor("S20092C4", this);} // tgen

static void Test_S20092C4()
{
  extern Class_Descriptor cd_S20092C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20092C4, buf);
    S20092C4 *dp, &lv = *(dp=new (buf) S20092C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20092C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20092C4)");
    check_base_class_offset(lv, (S20092C5_nt*), ABISELECT(8,4), "S20092C4");
    test_class_info(&lv, &cd_S20092C4);
    dp->~S20092C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20092C4(Test_S20092C4, "S20092C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20092C4C1Ev();
extern void _ZN8S20092C4D1Ev();
Name_Map name_map_S20092C4[] = {
  NSPAIR(_ZN8S20092C4C1Ev),
  NSPAIR(_ZN8S20092C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20092C5_nt;
extern VTBL_ENTRY _ZTI11S20092C5_nt[];
extern  VTBL_ENTRY _ZTV11S20092C5_nt[];
static Base_Class bases_S20092C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20092C5_nt,    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 _ZTI8S20092C4[];
extern void _ZN8S20092C43v18Ev();
extern void _ZN8S20092C43v19Ev();
extern void _ZN11S20092C5_nt3v20Ev();
static  VTBL_ENTRY vtc_S20092C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20092C4[0]),
  (VTBL_ENTRY)&_ZN8S20092C43v18Ev,
  (VTBL_ENTRY)&_ZN8S20092C43v19Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20092C4[0]),
  (VTBL_ENTRY)&_ZN11S20092C5_nt3v20Ev,
};
extern VTBL_ENTRY _ZTV8S20092C4[];
static  VTT_ENTRY vtt_S20092C4[] = {
  {&(_ZTV8S20092C4[3]),  3,9},
  {&(_ZTV8S20092C4[8]),  8,9},
};
extern VTBL_ENTRY _ZTI8S20092C4[];
extern  VTBL_ENTRY _ZTV8S20092C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20092C4[];
Class_Descriptor cd_S20092C4 = {  "S20092C4", // class name
  bases_S20092C4, 1,
  &(vtc_S20092C4[0]), // expected_vtbl_contents
  &(vtt_S20092C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20092C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20092C4),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20092C4),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  S20092C3  {
  ::S20092C4 s20092c3f0;
  virtual void  v3(); // _ZN8S20092C32v3Ev
  virtual void  v4(); // _ZN8S20092C32v4Ev
  ~S20092C3(); // tgen
  S20092C3(); // tgen
};
//SIG(-1 S20092C3) C1{ v1 v2 FC2{ VBC3{ v5 Fi Fp} v3 v4}}


void  S20092C3 ::v3(){vfunc_called(this, "_ZN8S20092C32v3Ev");}
void  S20092C3 ::v4(){vfunc_called(this, "_ZN8S20092C32v4Ev");}
S20092C3 ::~S20092C3(){ note_dtor("S20092C3", this);} // tgen
S20092C3 ::S20092C3(){ note_ctor("S20092C3", this);} // tgen

static void Test_S20092C3()
{
  extern Class_Descriptor cd_S20092C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20092C3, buf);
    S20092C3 *dp, &lv = *(dp=new (buf) S20092C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20092C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20092C3)");
    check_field_offset(lv, s20092c3f0, ABISELECT(8,4), "S20092C3.s20092c3f0");
    test_class_info(&lv, &cd_S20092C3);
    dp->~S20092C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20092C3(Test_S20092C3, "S20092C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20092C3C1Ev();
extern void _ZN8S20092C3D1Ev();
Name_Map name_map_S20092C3[] = {
  NSPAIR(_ZN8S20092C3C1Ev),
  NSPAIR(_ZN8S20092C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20092C3[];
extern void _ZN8S20092C32v3Ev();
extern void _ZN8S20092C32v4Ev();
static  VTBL_ENTRY vtc_S20092C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20092C3[0]),
  (VTBL_ENTRY)&_ZN8S20092C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20092C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20092C3[];
extern  VTBL_ENTRY _ZTV8S20092C3[];
Class_Descriptor cd_S20092C3 = {  "S20092C3", // class name
  0,0,//no base classes
  &(vtc_S20092C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20092C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20092C3),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  S20092C7_nt  {
  virtual void  v10(); // _ZN11S20092C7_nt3v10Ev
  virtual void  v11(); // _ZN11S20092C7_nt3v11Ev
  virtual void  v12(); // _ZN11S20092C7_nt3v12Ev
  virtual void  v13(); // _ZN11S20092C7_nt3v13Ev
  ~S20092C7_nt(); // tgen
  S20092C7_nt(); // tgen
};
//SIG(-1 S20092C7_nt) C1{ v1 v2 v3 v4}


void  S20092C7_nt ::v10(){vfunc_called(this, "_ZN11S20092C7_nt3v10Ev");}
void  S20092C7_nt ::v11(){vfunc_called(this, "_ZN11S20092C7_nt3v11Ev");}
void  S20092C7_nt ::v12(){vfunc_called(this, "_ZN11S20092C7_nt3v12Ev");}
void  S20092C7_nt ::v13(){vfunc_called(this, "_ZN11S20092C7_nt3v13Ev");}
S20092C7_nt ::~S20092C7_nt(){ note_dtor("S20092C7_nt", this);} // tgen
S20092C7_nt ::S20092C7_nt(){ note_ctor("S20092C7_nt", this);} // tgen

//skip512 S20092C7_nt

#else // __cplusplus

extern void _ZN11S20092C7_ntC1Ev();
extern void _ZN11S20092C7_ntD1Ev();
Name_Map name_map_S20092C7_nt[] = {
  NSPAIR(_ZN11S20092C7_ntC1Ev),
  NSPAIR(_ZN11S20092C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20092C7_nt[];
extern void _ZN11S20092C7_nt3v10Ev();
extern void _ZN11S20092C7_nt3v11Ev();
extern void _ZN11S20092C7_nt3v12Ev();
extern void _ZN11S20092C7_nt3v13Ev();
static  VTBL_ENTRY vtc_S20092C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20092C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S20092C7_nt[];
VTBL_ENTRY *P__ZTI11S20092C7_nt = _ZTI11S20092C7_nt; 
extern  VTBL_ENTRY _ZTV11S20092C7_nt[];
Class_Descriptor cd_S20092C7_nt = {  "S20092C7_nt", // class name
  0,0,//no base classes
  &(vtc_S20092C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20092C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20092C7_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  S20092C8  {
  void *s20092c8f0;
  virtual void  v14(); // _ZN8S20092C83v14Ev
  virtual void  v15(); // _ZN8S20092C83v15Ev
  virtual void  v16(); // _ZN8S20092C83v16Ev
  virtual void  v17(); // _ZN8S20092C83v17Ev
  ~S20092C8(); // tgen
  S20092C8(); // tgen
};
//SIG(-1 S20092C8) C1{ v1 v2 v3 v4 Fp}


void  S20092C8 ::v14(){vfunc_called(this, "_ZN8S20092C83v14Ev");}
void  S20092C8 ::v15(){vfunc_called(this, "_ZN8S20092C83v15Ev");}
void  S20092C8 ::v16(){vfunc_called(this, "_ZN8S20092C83v16Ev");}
void  S20092C8 ::v17(){vfunc_called(this, "_ZN8S20092C83v17Ev");}
S20092C8 ::~S20092C8(){ note_dtor("S20092C8", this);} // tgen
S20092C8 ::S20092C8(){ note_ctor("S20092C8", this);} // tgen

static void Test_S20092C8()
{
  extern Class_Descriptor cd_S20092C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20092C8, buf);
    S20092C8 *dp, &lv = *(dp=new (buf) S20092C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20092C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20092C8)");
    check_field_offset(lv, s20092c8f0, ABISELECT(8,4), "S20092C8.s20092c8f0");
    test_class_info(&lv, &cd_S20092C8);
    dp->~S20092C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20092C8(Test_S20092C8, "S20092C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20092C8C1Ev();
extern void _ZN8S20092C8D1Ev();
Name_Map name_map_S20092C8[] = {
  NSPAIR(_ZN8S20092C8C1Ev),
  NSPAIR(_ZN8S20092C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20092C8[];
extern void _ZN8S20092C83v14Ev();
extern void _ZN8S20092C83v15Ev();
extern void _ZN8S20092C83v16Ev();
extern void _ZN8S20092C83v17Ev();
static  VTBL_ENTRY vtc_S20092C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20092C8[0]),
  (VTBL_ENTRY)&_ZN8S20092C83v14Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v17Ev,
};
extern VTBL_ENTRY _ZTI8S20092C8[];
extern  VTBL_ENTRY _ZTV8S20092C8[];
Class_Descriptor cd_S20092C8 = {  "S20092C8", // class name
  0,0,//no base classes
  &(vtc_S20092C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20092C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20092C8),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  S20092C6  : virtual S20092C7_nt , virtual S20092C8 {
  long s20092c6f0[2];
  int s20092c6f1;
  virtual void  v5(); // _ZN8S20092C62v5Ev
  virtual void  v6(); // _ZN8S20092C62v6Ev
  virtual void  v7(); // _ZN8S20092C62v7Ev
  virtual void  v8(); // _ZN8S20092C62v8Ev
  virtual void  v9(); // _ZN8S20092C62v9Ev
  ~S20092C6(); // tgen
  S20092C6(); // tgen
};
//SIG(-1 S20092C6) C1{ VBC2{ v6 v7 v8 v9} VBC3{ v10 v11 v12 v13 Fp} v1 v2 v3 v4 v5 Fl[2] Fi}


void  S20092C6 ::v5(){vfunc_called(this, "_ZN8S20092C62v5Ev");}
void  S20092C6 ::v6(){vfunc_called(this, "_ZN8S20092C62v6Ev");}
void  S20092C6 ::v7(){vfunc_called(this, "_ZN8S20092C62v7Ev");}
void  S20092C6 ::v8(){vfunc_called(this, "_ZN8S20092C62v8Ev");}
void  S20092C6 ::v9(){vfunc_called(this, "_ZN8S20092C62v9Ev");}
S20092C6 ::~S20092C6(){ note_dtor("S20092C6", this);} // tgen
S20092C6 ::S20092C6(){ note_ctor("S20092C6", this);} // tgen

static void Test_S20092C6()
{
  extern Class_Descriptor cd_S20092C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20092C6, buf);
    S20092C6 *dp, &lv = *(dp=new (buf) S20092C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20092C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20092C6)");
    check_base_class_offset(lv, (S20092C7_nt*), 0, "S20092C6");
    check_base_class_offset(lv, (S20092C8*), ABISELECT(32,16), "S20092C6");
    check_field_offset(lv, s20092c6f0, ABISELECT(8,4), "S20092C6.s20092c6f0");
    check_field_offset(lv, s20092c6f1, ABISELECT(24,12), "S20092C6.s20092c6f1");
    test_class_info(&lv, &cd_S20092C6);
    dp->~S20092C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20092C6(Test_S20092C6, "S20092C6", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20092C6C1Ev();
extern void _ZN8S20092C6D1Ev();
Name_Map name_map_S20092C6[] = {
  NSPAIR(_ZN8S20092C6C1Ev),
  NSPAIR(_ZN8S20092C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20092C7_nt;
extern VTBL_ENTRY _ZTI11S20092C7_nt[];
extern  VTBL_ENTRY _ZTV11S20092C7_nt[];
extern Class_Descriptor cd_S20092C8;
extern VTBL_ENTRY _ZTI8S20092C8[];
extern  VTBL_ENTRY _ZTV8S20092C8[];
static Base_Class bases_S20092C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20092C7_nt,    0, //bcp->offset
    -1, //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_S20092C8,    ABISELECT(32,16), //bcp->offset
    17, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20092C6[];
extern void _ZN11S20092C7_nt3v10Ev();
extern void _ZN11S20092C7_nt3v11Ev();
extern void _ZN11S20092C7_nt3v12Ev();
extern void _ZN11S20092C7_nt3v13Ev();
extern void _ZN8S20092C62v5Ev();
extern void _ZN8S20092C62v6Ev();
extern void _ZN8S20092C62v7Ev();
extern void _ZN8S20092C62v8Ev();
extern void _ZN8S20092C62v9Ev();
extern void _ZN8S20092C83v14Ev();
extern void _ZN8S20092C83v15Ev();
extern void _ZN8S20092C83v16Ev();
extern void _ZN8S20092C83v17Ev();
static  VTBL_ENTRY vtc_S20092C6[] = {
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20092C6[0]),
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20092C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S20092C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20092C62v6Ev,
  (VTBL_ENTRY)&_ZN8S20092C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20092C62v8Ev,
  (VTBL_ENTRY)&_ZN8S20092C62v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20092C6[0]),
  (VTBL_ENTRY)&_ZN8S20092C83v14Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20092C83v17Ev,
};
extern VTBL_ENTRY _ZTV8S20092C6[];
static  VTT_ENTRY vtt_S20092C6[] = {
  {&(_ZTV8S20092C6[8]),  8,27},
  {&(_ZTV8S20092C6[8]),  8,27},
  {&(_ZTV8S20092C6[23]),  23,27},
};
extern VTBL_ENTRY _ZTI8S20092C6[];
extern  VTBL_ENTRY _ZTV8S20092C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20092C6[];
Class_Descriptor cd_S20092C6 = {  "S20092C6", // class name
  bases_S20092C6, 2,
  &(vtc_S20092C6[0]), // expected_vtbl_contents
  &(vtt_S20092C6[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20092C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20092C6),27, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20092C6),3, //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  S20092C1  : virtual S20092C2_nt , virtual S20092C3 {
  ::S20092C6 s20092c1f0;
  virtual  ~S20092C1(); // _ZN8S20092C1D2Ev
  virtual void  v1(); // _ZN8S20092C12v1Ev
  S20092C1(); // tgen
};
//SIG(1 S20092C1) C1{ VBC2{ vd v2 Fi} VBC3{ v3 v4 FC4{ VBC5{ v20 Fi Fp} v18 v19}} vd v1 FC6{ VBC7{ v10 v11 v12 v13} VBC8{ v14 v15 v16 v17 Fp} v5 v6 v7 v8 v9 Fl[2] Fi}}


 S20092C1 ::~S20092C1(){ note_dtor("S20092C1", this);}
void  S20092C1 ::v1(){vfunc_called(this, "_ZN8S20092C12v1Ev");}
S20092C1 ::S20092C1(){ note_ctor("S20092C1", this);} // tgen

static void Test_S20092C1()
{
  extern Class_Descriptor cd_S20092C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[15];
    init_test(&cd_S20092C1, buf);
    S20092C1 *dp, &lv = *(dp=new (buf) S20092C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S20092C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20092C1)");
    check_base_class_offset(lv, (S20092C2_nt*), ABISELECT(56,28), "S20092C1");
    check_base_class_offset(lv, (S20092C3*), ABISELECT(72,36), "S20092C1");
    check_field_offset(lv, s20092c1f0, ABISELECT(8,4), "S20092C1.s20092c1f0");
    test_class_info(&lv, &cd_S20092C1);
    dp->~S20092C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20092C1(Test_S20092C1, "S20092C1", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S20092C1C1Ev();
extern void _ZN8S20092C1D2Ev();
Name_Map name_map_S20092C1[] = {
  NSPAIR(_ZN8S20092C1C1Ev),
  NSPAIR(_ZN8S20092C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20092C2_nt;
extern VTBL_ENTRY _ZTI11S20092C2_nt[];
extern  VTBL_ENTRY _ZTV11S20092C2_nt[];
extern Class_Descriptor cd_S20092C3;
extern VTBL_ENTRY _ZTI8S20092C3[];
extern  VTBL_ENTRY _ZTV8S20092C3[];
static Base_Class bases_S20092C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20092C2_nt,    ABISELECT(56,28), //bcp->offset
    7, //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_S20092C3,    ABISELECT(72,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //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 _ZTI8S20092C1[];
extern void _ZN8S20092C1D1Ev();
extern void _ZN8S20092C1D0Ev();
extern void _ZN8S20092C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20092C1D1Ev,_ZTv0_n12_N8S20092C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20092C1D1Ev,_ZThn28_N8S20092C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20092C1D0Ev,_ZTv0_n12_N8S20092C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20092C1D0Ev,_ZThn28_N8S20092C1D0Ev)() __attribute__((weak));
extern void _ZN11S20092C2_nt2v2Ev();
extern void _ZN8S20092C32v3Ev();
extern void _ZN8S20092C32v4Ev();
static  VTBL_ENTRY vtc_S20092C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20092C1[0]),
  (VTBL_ENTRY)&_ZN8S20092C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20092C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20092C12v1Ev,
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20092C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20092C1D1Ev,_ZTv0_n12_N8S20092C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20092C1D0Ev,_ZTv0_n12_N8S20092C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20092C2_nt2v2Ev,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20092C1[0]),
  (VTBL_ENTRY)&_ZN8S20092C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20092C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20092C1[];
static  VTT_ENTRY vtt_S20092C1[] = {
  {&(_ZTV8S20092C1[4]),  4,20},
  {&(_ZTV8S20092C1[11]),  11,20},
  {&(_ZTV8S20092C1[18]),  18,20},
};
extern VTBL_ENTRY _ZTI8S20092C1[];
extern  VTBL_ENTRY _ZTV8S20092C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20092C1[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20092C1D0Ev,_ZTv0_n12_N8S20092C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20092C1D0Ev,_ZThn28_N8S20092C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20092C1D1Ev,_ZTv0_n12_N8S20092C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20092C1D1Ev,_ZThn28_N8S20092C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20092C1 = {  "S20092C1", // class name
  bases_S20092C1, 2,
  &(vtc_S20092C1[0]), // expected_vtbl_contents
  &(vtt_S20092C1[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S20092C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20092C1),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20092C1),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20443C5  {
  virtual void  v6(); // _ZN8S20443C52v6Ev
  virtual void  v7(); // _ZN8S20443C52v7Ev
  virtual void  v8(); // _ZN8S20443C52v8Ev
  virtual void  v9(); // _ZN8S20443C52v9Ev
  virtual void  v10(); // _ZN8S20443C53v10Ev
  ~S20443C5(); // tgen
  S20443C5(); // tgen
};
//SIG(-1 S20443C5) C1{ v1 v2 v3 v4 v5}


void  S20443C5 ::v6(){vfunc_called(this, "_ZN8S20443C52v6Ev");}
void  S20443C5 ::v7(){vfunc_called(this, "_ZN8S20443C52v7Ev");}
void  S20443C5 ::v8(){vfunc_called(this, "_ZN8S20443C52v8Ev");}
void  S20443C5 ::v9(){vfunc_called(this, "_ZN8S20443C52v9Ev");}
void  S20443C5 ::v10(){vfunc_called(this, "_ZN8S20443C53v10Ev");}
S20443C5 ::~S20443C5(){ note_dtor("S20443C5", this);} // tgen
S20443C5 ::S20443C5(){ note_ctor("S20443C5", this);} // tgen

static void Test_S20443C5()
{
  extern Class_Descriptor cd_S20443C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20443C5, buf);
    S20443C5 *dp, &lv = *(dp=new (buf) S20443C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20443C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20443C5)");
    test_class_info(&lv, &cd_S20443C5);
    dp->~S20443C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20443C5(Test_S20443C5, "S20443C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20443C5C1Ev();
extern void _ZN8S20443C5D1Ev();
Name_Map name_map_S20443C5[] = {
  NSPAIR(_ZN8S20443C5C1Ev),
  NSPAIR(_ZN8S20443C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20443C5[];
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
static  VTBL_ENTRY vtc_S20443C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C5[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
};
extern VTBL_ENTRY _ZTI8S20443C5[];
extern  VTBL_ENTRY _ZTV8S20443C5[];
Class_Descriptor cd_S20443C5 = {  "S20443C5", // class name
  0,0,//no base classes
  &(vtc_S20443C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20443C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20443C5),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  S20443C4  : S20443C5 {
  ::S20443C5 s20443c4f0;
  virtual void  v11(); // _ZN8S20443C43v11Ev
  virtual void  v12(); // _ZN8S20443C43v12Ev
  virtual void  v13(); // _ZN8S20443C43v13Ev
  virtual void  v14(); // _ZN8S20443C43v14Ev
  ~S20443C4(); // tgen
  S20443C4(); // tgen
};
//SIG(-1 S20443C4) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S20443C4 ::v11(){vfunc_called(this, "_ZN8S20443C43v11Ev");}
void  S20443C4 ::v12(){vfunc_called(this, "_ZN8S20443C43v12Ev");}
void  S20443C4 ::v13(){vfunc_called(this, "_ZN8S20443C43v13Ev");}
void  S20443C4 ::v14(){vfunc_called(this, "_ZN8S20443C43v14Ev");}
S20443C4 ::~S20443C4(){ note_dtor("S20443C4", this);} // tgen
S20443C4 ::S20443C4(){ note_ctor("S20443C4", this);} // tgen

static void Test_S20443C4()
{
  extern Class_Descriptor cd_S20443C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20443C4, buf);
    S20443C4 *dp, &lv = *(dp=new (buf) S20443C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20443C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20443C4)");
    check_base_class_offset(lv, (S20443C5*), 0, "S20443C4");
    check_field_offset(lv, s20443c4f0, ABISELECT(8,4), "S20443C4.s20443c4f0");
    test_class_info(&lv, &cd_S20443C4);
    dp->~S20443C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20443C4(Test_S20443C4, "S20443C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20443C4C1Ev();
extern void _ZN8S20443C4D1Ev();
Name_Map name_map_S20443C4[] = {
  NSPAIR(_ZN8S20443C4C1Ev),
  NSPAIR(_ZN8S20443C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20443C5;
extern VTBL_ENTRY _ZTI8S20443C5[];
extern  VTBL_ENTRY _ZTV8S20443C5[];
static Base_Class bases_S20443C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20443C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20443C4[];
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
extern void _ZN8S20443C43v11Ev();
extern void _ZN8S20443C43v12Ev();
extern void _ZN8S20443C43v13Ev();
extern void _ZN8S20443C43v14Ev();
static  VTBL_ENTRY vtc_S20443C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C4[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v14Ev,
};
extern VTBL_ENTRY _ZTI8S20443C4[];
extern  VTBL_ENTRY _ZTV8S20443C4[];
Class_Descriptor cd_S20443C4 = {  "S20443C4", // class name
  bases_S20443C4, 1,
  &(vtc_S20443C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20443C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20443C4),11, //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  S20443C3  : S20443C4 {
  virtual void  v15(); // _ZN8S20443C33v15Ev
  virtual void  v16(); // _ZN8S20443C33v16Ev
  virtual void  v17(); // _ZN8S20443C33v17Ev
  virtual void  v18(); // _ZN8S20443C33v18Ev
  virtual void  v19(); // _ZN8S20443C33v19Ev
  virtual void  v20(); // _ZN8S20443C33v20Ev
  ~S20443C3(); // tgen
  S20443C3(); // tgen
};
//SIG(-1 S20443C3) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S20443C3 ::v15(){vfunc_called(this, "_ZN8S20443C33v15Ev");}
void  S20443C3 ::v16(){vfunc_called(this, "_ZN8S20443C33v16Ev");}
void  S20443C3 ::v17(){vfunc_called(this, "_ZN8S20443C33v17Ev");}
void  S20443C3 ::v18(){vfunc_called(this, "_ZN8S20443C33v18Ev");}
void  S20443C3 ::v19(){vfunc_called(this, "_ZN8S20443C33v19Ev");}
void  S20443C3 ::v20(){vfunc_called(this, "_ZN8S20443C33v20Ev");}
S20443C3 ::~S20443C3(){ note_dtor("S20443C3", this);} // tgen
S20443C3 ::S20443C3(){ note_ctor("S20443C3", this);} // tgen

static void Test_S20443C3()
{
  extern Class_Descriptor cd_S20443C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20443C3, buf);
    S20443C3 *dp, &lv = *(dp=new (buf) S20443C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20443C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20443C3)");
    check_base_class_offset(lv, (S20443C5*)(S20443C4*), 0, "S20443C3");
    check_base_class_offset(lv, (S20443C4*), 0, "S20443C3");
    test_class_info(&lv, &cd_S20443C3);
    dp->~S20443C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20443C3(Test_S20443C3, "S20443C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20443C3C1Ev();
extern void _ZN8S20443C3D1Ev();
Name_Map name_map_S20443C3[] = {
  NSPAIR(_ZN8S20443C3C1Ev),
  NSPAIR(_ZN8S20443C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20443C5;
extern VTBL_ENTRY _ZTI8S20443C5[];
extern  VTBL_ENTRY _ZTV8S20443C5[];
extern Class_Descriptor cd_S20443C4;
extern VTBL_ENTRY _ZTI8S20443C4[];
extern  VTBL_ENTRY _ZTV8S20443C4[];
static Base_Class bases_S20443C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20443C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S20443C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20443C3[];
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
extern void _ZN8S20443C43v11Ev();
extern void _ZN8S20443C43v12Ev();
extern void _ZN8S20443C43v13Ev();
extern void _ZN8S20443C43v14Ev();
extern void _ZN8S20443C33v15Ev();
extern void _ZN8S20443C33v16Ev();
extern void _ZN8S20443C33v17Ev();
extern void _ZN8S20443C33v18Ev();
extern void _ZN8S20443C33v19Ev();
extern void _ZN8S20443C33v20Ev();
static  VTBL_ENTRY vtc_S20443C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C3[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v20Ev,
};
extern VTBL_ENTRY _ZTI8S20443C3[];
extern  VTBL_ENTRY _ZTV8S20443C3[];
Class_Descriptor cd_S20443C3 = {  "S20443C3", // class name
  bases_S20443C3, 2,
  &(vtc_S20443C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20443C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20443C3),17, //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  S20443C2  : virtual S20443C3 {
  virtual void  v21(); // _ZN8S20443C23v21Ev
  virtual void  v22(); // _ZN8S20443C23v22Ev
  virtual void  v23(); // _ZN8S20443C23v23Ev
  ~S20443C2(); // tgen
  S20443C2(); // tgen
};
//SIG(-1 S20443C2) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S20443C2 ::v21(){vfunc_called(this, "_ZN8S20443C23v21Ev");}
void  S20443C2 ::v22(){vfunc_called(this, "_ZN8S20443C23v22Ev");}
void  S20443C2 ::v23(){vfunc_called(this, "_ZN8S20443C23v23Ev");}
S20443C2 ::~S20443C2(){ note_dtor("S20443C2", this);} // tgen
S20443C2 ::S20443C2(){ note_ctor("S20443C2", this);} // tgen

static void Test_S20443C2()
{
  extern Class_Descriptor cd_S20443C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20443C2, buf);
    S20443C2 *dp, &lv = *(dp=new (buf) S20443C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20443C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20443C2)");
    check_base_class_offset(lv, (S20443C5*)(S20443C4*)(S20443C3*), ABISELECT(8,4), "S20443C2");
    check_base_class_offset(lv, (S20443C4*)(S20443C3*), ABISELECT(8,4), "S20443C2");
    check_base_class_offset(lv, (S20443C3*), ABISELECT(8,4), "S20443C2");
    test_class_info(&lv, &cd_S20443C2);
    dp->~S20443C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20443C2(Test_S20443C2, "S20443C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20443C2C1Ev();
extern void _ZN8S20443C2D1Ev();
Name_Map name_map_S20443C2[] = {
  NSPAIR(_ZN8S20443C2C1Ev),
  NSPAIR(_ZN8S20443C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20443C5;
extern VTBL_ENTRY _ZTI8S20443C5[];
extern  VTBL_ENTRY _ZTV8S20443C5[];
extern Class_Descriptor cd_S20443C4;
extern VTBL_ENTRY _ZTI8S20443C4[];
extern  VTBL_ENTRY _ZTV8S20443C4[];
extern Class_Descriptor cd_S20443C3;
extern VTBL_ENTRY _ZTI8S20443C3[];
extern  VTBL_ENTRY _ZTV8S20443C3[];
static Base_Class bases_S20443C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20443C5,    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_S20443C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20443C3,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI8S20443C2[];
extern void _ZN8S20443C23v21Ev();
extern void _ZN8S20443C23v22Ev();
extern void _ZN8S20443C23v23Ev();
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
extern void _ZN8S20443C43v11Ev();
extern void _ZN8S20443C43v12Ev();
extern void _ZN8S20443C43v13Ev();
extern void _ZN8S20443C43v14Ev();
extern void _ZN8S20443C33v15Ev();
extern void _ZN8S20443C33v16Ev();
extern void _ZN8S20443C33v17Ev();
extern void _ZN8S20443C33v18Ev();
extern void _ZN8S20443C33v19Ev();
extern void _ZN8S20443C33v20Ev();
static  VTBL_ENTRY vtc_S20443C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C2[0]),
  (VTBL_ENTRY)&_ZN8S20443C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20443C2[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v20Ev,
};
extern VTBL_ENTRY _ZTV8S20443C2[];
static  VTT_ENTRY vtt_S20443C2[] = {
  {&(_ZTV8S20443C2[3]),  3,38},
  {&(_ZTV8S20443C2[23]),  23,38},
};
extern VTBL_ENTRY _ZTI8S20443C2[];
extern  VTBL_ENTRY _ZTV8S20443C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20443C2[];
Class_Descriptor cd_S20443C2 = {  "S20443C2", // class name
  bases_S20443C2, 3,
  &(vtc_S20443C2[0]), // expected_vtbl_contents
  &(vtt_S20443C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20443C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20443C2),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20443C2),2, //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  S20443C1  : virtual S20443C2 {
  int s20443c1f0[4];
  ::S19762C18_nt s20443c1f1;
  int s20443c1f2[4];
  __tsi64 s20443c1f3:41;
  virtual  ~S20443C1(); // _ZN8S20443C1D2Ev
  virtual void  v1(); // _ZN8S20443C12v1Ev
  virtual void  v2(); // _ZN8S20443C12v2Ev
  virtual void  v3(); // _ZN8S20443C12v3Ev
  virtual void  v4(); // _ZN8S20443C12v4Ev
  virtual void  v5(); // _ZN8S20443C12v5Ev
  S20443C1(); // tgen
};
//SIG(1 S20443C1) C1{ VBC2{ VBC3{ BC4{ BC5{ v6 v7 v8 v9 v10} v11 v12 v13 v14 FC5} v15 v16 v17 v18 v19 v20} v21 v22 v23} vd v1 v2 v3 v4 v5 Fi[4] FC6{} Fi[4] FL:41}


 S20443C1 ::~S20443C1(){ note_dtor("S20443C1", this);}
void  S20443C1 ::v1(){vfunc_called(this, "_ZN8S20443C12v1Ev");}
void  S20443C1 ::v2(){vfunc_called(this, "_ZN8S20443C12v2Ev");}
void  S20443C1 ::v3(){vfunc_called(this, "_ZN8S20443C12v3Ev");}
void  S20443C1 ::v4(){vfunc_called(this, "_ZN8S20443C12v4Ev");}
void  S20443C1 ::v5(){vfunc_called(this, "_ZN8S20443C12v5Ev");}
S20443C1 ::S20443C1(){ note_ctor("S20443C1", this);} // tgen

static void Test_S20443C1()
{
  extern Class_Descriptor cd_S20443C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S20443C1, buf);
    S20443C1 *dp, &lv = *(dp=new (buf) S20443C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S20443C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20443C1)");
    check_base_class_offset(lv, (S20443C5*)(S20443C4*)(S20443C3*), ABISELECT(56,48), "S20443C1");
    check_base_class_offset(lv, (S20443C4*)(S20443C3*), ABISELECT(56,48), "S20443C1");
    check_base_class_offset(lv, (S20443C3*)(S20443C2*), ABISELECT(56,48), "S20443C1");
    check_base_class_offset(lv, (S20443C2*), 0, "S20443C1");
    check_field_offset(lv, s20443c1f0, ABISELECT(8,4), "S20443C1.s20443c1f0");
    check_field_offset(lv, s20443c1f1, ABISELECT(24,20), "S20443C1.s20443c1f1");
    check_field_offset(lv, s20443c1f2, ABISELECT(28,24), "S20443C1.s20443c1f2");
    set_bf_and_test(lv, s20443c1f3, ABISELECT(48,40), 0, 41, 1, "S20443C1");
    set_bf_and_test(lv, s20443c1f3, ABISELECT(48,40), 0, 41, hide_sll(1LL<<40), "S20443C1");
    test_class_info(&lv, &cd_S20443C1);
    dp->~S20443C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20443C1(Test_S20443C1, "S20443C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S20443C1C1Ev();
extern void _ZN8S20443C1D2Ev();
Name_Map name_map_S20443C1[] = {
  NSPAIR(_ZN8S20443C1C1Ev),
  NSPAIR(_ZN8S20443C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20443C5;
extern VTBL_ENTRY _ZTI8S20443C5[];
extern  VTBL_ENTRY _ZTV8S20443C5[];
extern Class_Descriptor cd_S20443C4;
extern VTBL_ENTRY _ZTI8S20443C4[];
extern  VTBL_ENTRY _ZTV8S20443C4[];
extern Class_Descriptor cd_S20443C3;
extern VTBL_ENTRY _ZTI8S20443C3[];
extern  VTBL_ENTRY _ZTV8S20443C3[];
extern Class_Descriptor cd_S20443C2;
extern VTBL_ENTRY _ZTI8S20443C2[];
extern  VTBL_ENTRY _ZTV8S20443C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20443C2[];
static Base_Class bases_S20443C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20443C5,    ABISELECT(56,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
  0, 0},
  {&cd_S20443C4,    ABISELECT(56,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20443C3,    ABISELECT(56,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    17, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20443C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20443C1[];
extern void _ZN8S20443C23v21Ev();
extern void _ZN8S20443C23v22Ev();
extern void _ZN8S20443C23v23Ev();
extern void _ZN8S20443C1D1Ev();
extern void _ZN8S20443C1D0Ev();
extern void _ZN8S20443C12v1Ev();
extern void _ZN8S20443C12v2Ev();
extern void _ZN8S20443C12v3Ev();
extern void _ZN8S20443C12v4Ev();
extern void _ZN8S20443C12v5Ev();
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
extern void _ZN8S20443C43v11Ev();
extern void _ZN8S20443C43v12Ev();
extern void _ZN8S20443C43v13Ev();
extern void _ZN8S20443C43v14Ev();
extern void _ZN8S20443C33v15Ev();
extern void _ZN8S20443C33v16Ev();
extern void _ZN8S20443C33v17Ev();
extern void _ZN8S20443C33v18Ev();
extern void _ZN8S20443C33v19Ev();
extern void _ZN8S20443C33v20Ev();
static  VTBL_ENTRY vtc_S20443C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C1[0]),
  (VTBL_ENTRY)&_ZN8S20443C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v23Ev,
  (VTBL_ENTRY)&_ZN8S20443C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20443C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20443C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20443C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20443C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20443C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20443C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20443C1[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v20Ev,
};
extern VTBL_ENTRY _ZTV8S20443C1[];
extern void _ZN8S20443C23v21Ev();
extern void _ZN8S20443C23v22Ev();
extern void _ZN8S20443C23v23Ev();
static  VTBL_ENTRY _tg__ZTV8S20443C2__8S20443C1[] = {
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20443C2[0]),
  (VTBL_ENTRY)&_ZN8S20443C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20443C23v23Ev,
};
extern void _ZN8S20443C52v6Ev();
extern void _ZN8S20443C52v7Ev();
extern void _ZN8S20443C52v8Ev();
extern void _ZN8S20443C52v9Ev();
extern void _ZN8S20443C53v10Ev();
extern void _ZN8S20443C43v11Ev();
extern void _ZN8S20443C43v12Ev();
extern void _ZN8S20443C43v13Ev();
extern void _ZN8S20443C43v14Ev();
extern void _ZN8S20443C33v15Ev();
extern void _ZN8S20443C33v16Ev();
extern void _ZN8S20443C33v17Ev();
extern void _ZN8S20443C33v18Ev();
extern void _ZN8S20443C33v19Ev();
extern void _ZN8S20443C33v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20443C3__8S20443C2__8S20443C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20443C2[0]),
  (VTBL_ENTRY)&_ZN8S20443C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20443C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20443C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20443C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20443C33v20Ev,
};
static  VTT_ENTRY vtt_S20443C1[] = {
  {&(_ZTV8S20443C1[7]),  7,49},
  {&(_ZTV8S20443C1[7]),  7,49},
  {&(_ZTV8S20443C1[34]),  34,49},
  {&(_tg__ZTV8S20443C2__8S20443C1[3]),  3,6},
  {&(_tg__ZTV8S20443C3__8S20443C2__8S20443C1[17]),  17,32},
};
extern VTBL_ENTRY _ZTI8S20443C1[];
extern  VTBL_ENTRY _ZTV8S20443C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20443C1[];
Class_Descriptor cd_S20443C1 = {  "S20443C1", // class name
  bases_S20443C1, 4,
  &(vtc_S20443C1[0]), // expected_vtbl_contents
  &(vtt_S20443C1[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S20443C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20443C1),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20443C1),5, //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  S7696C6  {
  virtual void  v5(); // _ZN7S7696C62v5Ev
  virtual void  v6(); // _ZN7S7696C62v6Ev
  virtual void  v7(); // _ZN7S7696C62v7Ev
  virtual void  v8(); // _ZN7S7696C62v8Ev
  virtual void  v9(); // _ZN7S7696C62v9Ev
  ~S7696C6(); // tgen
  S7696C6(); // tgen
};
//SIG(-1 S7696C6) C1{ v1 v2 v3 v4 v5}


void  S7696C6 ::v5(){vfunc_called(this, "_ZN7S7696C62v5Ev");}
void  S7696C6 ::v6(){vfunc_called(this, "_ZN7S7696C62v6Ev");}
void  S7696C6 ::v7(){vfunc_called(this, "_ZN7S7696C62v7Ev");}
void  S7696C6 ::v8(){vfunc_called(this, "_ZN7S7696C62v8Ev");}
void  S7696C6 ::v9(){vfunc_called(this, "_ZN7S7696C62v9Ev");}
S7696C6 ::~S7696C6(){ note_dtor("S7696C6", this);} // tgen
S7696C6 ::S7696C6(){ note_ctor("S7696C6", this);} // tgen

static void Test_S7696C6()
{
  extern Class_Descriptor cd_S7696C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7696C6, buf);
    S7696C6 *dp, &lv = *(dp=new (buf) S7696C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7696C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C6)");
    test_class_info(&lv, &cd_S7696C6);
    dp->~S7696C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C6(Test_S7696C6, "S7696C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7696C6C1Ev();
extern void _ZN7S7696C6D1Ev();
Name_Map name_map_S7696C6[] = {
  NSPAIR(_ZN7S7696C6C1Ev),
  NSPAIR(_ZN7S7696C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7696C6[];
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
static  VTBL_ENTRY vtc_S7696C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C6[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
};
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
Class_Descriptor cd_S7696C6 = {  "S7696C6", // class name
  0,0,//no base classes
  &(vtc_S7696C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7696C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7696C6),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  S7696C5  : S7696C6 {
  ::S7696C6 s7696c5f0;
  virtual void  v10(); // _ZN7S7696C53v10Ev
  virtual void  v11(); // _ZN7S7696C53v11Ev
  virtual void  v12(); // _ZN7S7696C53v12Ev
  virtual void  v13(); // _ZN7S7696C53v13Ev
  ~S7696C5(); // tgen
  S7696C5(); // tgen
};
//SIG(-1 S7696C5) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S7696C5 ::v10(){vfunc_called(this, "_ZN7S7696C53v10Ev");}
void  S7696C5 ::v11(){vfunc_called(this, "_ZN7S7696C53v11Ev");}
void  S7696C5 ::v12(){vfunc_called(this, "_ZN7S7696C53v12Ev");}
void  S7696C5 ::v13(){vfunc_called(this, "_ZN7S7696C53v13Ev");}
S7696C5 ::~S7696C5(){ note_dtor("S7696C5", this);} // tgen
S7696C5 ::S7696C5(){ note_ctor("S7696C5", this);} // tgen

static void Test_S7696C5()
{
  extern Class_Descriptor cd_S7696C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7696C5, buf);
    S7696C5 *dp, &lv = *(dp=new (buf) S7696C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7696C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C5)");
    check_base_class_offset(lv, (S7696C6*), 0, "S7696C5");
    check_field_offset(lv, s7696c5f0, ABISELECT(8,4), "S7696C5.s7696c5f0");
    test_class_info(&lv, &cd_S7696C5);
    dp->~S7696C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C5(Test_S7696C5, "S7696C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7696C5C1Ev();
extern void _ZN7S7696C5D1Ev();
Name_Map name_map_S7696C5[] = {
  NSPAIR(_ZN7S7696C5C1Ev),
  NSPAIR(_ZN7S7696C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7696C6;
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
static Base_Class bases_S7696C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7696C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7696C5[];
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
static  VTBL_ENTRY vtc_S7696C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C5[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S7696C5[];
extern  VTBL_ENTRY _ZTV7S7696C5[];
Class_Descriptor cd_S7696C5 = {  "S7696C5", // class name
  bases_S7696C5, 1,
  &(vtc_S7696C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7696C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7696C5),11, //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  S7696C4  : S7696C5 {
  virtual void  v14(); // _ZN7S7696C43v14Ev
  virtual void  v15(); // _ZN7S7696C43v15Ev
  virtual void  v16(); // _ZN7S7696C43v16Ev
  virtual void  v17(); // _ZN7S7696C43v17Ev
  virtual void  v18(); // _ZN7S7696C43v18Ev
  virtual void  v19(); // _ZN7S7696C43v19Ev
  ~S7696C4(); // tgen
  S7696C4(); // tgen
};
//SIG(-1 S7696C4) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S7696C4 ::v14(){vfunc_called(this, "_ZN7S7696C43v14Ev");}
void  S7696C4 ::v15(){vfunc_called(this, "_ZN7S7696C43v15Ev");}
void  S7696C4 ::v16(){vfunc_called(this, "_ZN7S7696C43v16Ev");}
void  S7696C4 ::v17(){vfunc_called(this, "_ZN7S7696C43v17Ev");}
void  S7696C4 ::v18(){vfunc_called(this, "_ZN7S7696C43v18Ev");}
void  S7696C4 ::v19(){vfunc_called(this, "_ZN7S7696C43v19Ev");}
S7696C4 ::~S7696C4(){ note_dtor("S7696C4", this);} // tgen
S7696C4 ::S7696C4(){ note_ctor("S7696C4", this);} // tgen

static void Test_S7696C4()
{
  extern Class_Descriptor cd_S7696C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7696C4, buf);
    S7696C4 *dp, &lv = *(dp=new (buf) S7696C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7696C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C4)");
    check_base_class_offset(lv, (S7696C6*)(S7696C5*), 0, "S7696C4");
    check_base_class_offset(lv, (S7696C5*), 0, "S7696C4");
    test_class_info(&lv, &cd_S7696C4);
    dp->~S7696C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C4(Test_S7696C4, "S7696C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7696C4C1Ev();
extern void _ZN7S7696C4D1Ev();
Name_Map name_map_S7696C4[] = {
  NSPAIR(_ZN7S7696C4C1Ev),
  NSPAIR(_ZN7S7696C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7696C6;
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
extern Class_Descriptor cd_S7696C5;
extern VTBL_ENTRY _ZTI7S7696C5[];
extern  VTBL_ENTRY _ZTV7S7696C5[];
static Base_Class bases_S7696C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7696C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S7696C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S7696C4[];
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY vtc_S7696C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C4[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
extern VTBL_ENTRY _ZTI7S7696C4[];
extern  VTBL_ENTRY _ZTV7S7696C4[];
Class_Descriptor cd_S7696C4 = {  "S7696C4", // class name
  bases_S7696C4, 2,
  &(vtc_S7696C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7696C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7696C4),17, //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  S7696C3  : virtual S7696C4 {
  virtual void  v20(); // _ZN7S7696C33v20Ev
  virtual void  v21(); // _ZN7S7696C33v21Ev
  virtual void  v22(); // _ZN7S7696C33v22Ev
  ~S7696C3(); // tgen
  S7696C3(); // tgen
};
//SIG(-1 S7696C3) C1{ VBC2{ BC3{ BC4{ v4 v5 v6 v7 v8} v9 v10 v11 v12 FC4} v13 v14 v15 v16 v17 v18} v1 v2 v3}


void  S7696C3 ::v20(){vfunc_called(this, "_ZN7S7696C33v20Ev");}
void  S7696C3 ::v21(){vfunc_called(this, "_ZN7S7696C33v21Ev");}
void  S7696C3 ::v22(){vfunc_called(this, "_ZN7S7696C33v22Ev");}
S7696C3 ::~S7696C3(){ note_dtor("S7696C3", this);} // tgen
S7696C3 ::S7696C3(){ note_ctor("S7696C3", this);} // tgen

static void Test_S7696C3()
{
  extern Class_Descriptor cd_S7696C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7696C3, buf);
    S7696C3 *dp, &lv = *(dp=new (buf) S7696C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7696C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C3)");
    check_base_class_offset(lv, (S7696C6*)(S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C3");
    check_base_class_offset(lv, (S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C3");
    check_base_class_offset(lv, (S7696C4*), ABISELECT(8,4), "S7696C3");
    test_class_info(&lv, &cd_S7696C3);
    dp->~S7696C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C3(Test_S7696C3, "S7696C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7696C3C1Ev();
extern void _ZN7S7696C3D1Ev();
Name_Map name_map_S7696C3[] = {
  NSPAIR(_ZN7S7696C3C1Ev),
  NSPAIR(_ZN7S7696C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7696C6;
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
extern Class_Descriptor cd_S7696C5;
extern VTBL_ENTRY _ZTI7S7696C5[];
extern  VTBL_ENTRY _ZTV7S7696C5[];
extern Class_Descriptor cd_S7696C4;
extern VTBL_ENTRY _ZTI7S7696C4[];
extern  VTBL_ENTRY _ZTV7S7696C4[];
static Base_Class bases_S7696C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7696C6,    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_S7696C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7696C4,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S7696C3[];
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY vtc_S7696C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
extern VTBL_ENTRY _ZTV7S7696C3[];
static  VTT_ENTRY vtt_S7696C3[] = {
  {&(_ZTV7S7696C3[3]),  3,38},
  {&(_ZTV7S7696C3[23]),  23,38},
};
extern VTBL_ENTRY _ZTI7S7696C3[];
extern  VTBL_ENTRY _ZTV7S7696C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C3[];
Class_Descriptor cd_S7696C3 = {  "S7696C3", // class name
  bases_S7696C3, 3,
  &(vtc_S7696C3[0]), // expected_vtbl_contents
  &(vtt_S7696C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7696C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7696C3),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7696C3),2, //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  S7696C2  : virtual S7696C3 {
  virtual  ~S7696C2(); // _ZN7S7696C2D2Ev
  virtual void  v23(); // _ZN7S7696C23v23Ev
  virtual void  v24(); // _ZN7S7696C23v24Ev
  virtual void  v25(); // _ZN7S7696C23v25Ev
  virtual void  v26(); // _ZN7S7696C23v26Ev
  S7696C2(); // tgen
};
//SIG(-1 S7696C2) C1{ VBC2{ VBC3{ BC4{ BC5{ v5 v6 v7 v8 v9} v10 v11 v12 v13 FC5} v14 v15 v16 v17 v18 v19} v20 v21 v22} vd v1 v2 v3 v4}


 S7696C2 ::~S7696C2(){ note_dtor("S7696C2", this);}
void  S7696C2 ::v23(){vfunc_called(this, "_ZN7S7696C23v23Ev");}
void  S7696C2 ::v24(){vfunc_called(this, "_ZN7S7696C23v24Ev");}
void  S7696C2 ::v25(){vfunc_called(this, "_ZN7S7696C23v25Ev");}
void  S7696C2 ::v26(){vfunc_called(this, "_ZN7S7696C23v26Ev");}
S7696C2 ::S7696C2(){ note_ctor("S7696C2", this);} // tgen

static void Test_S7696C2()
{
  extern Class_Descriptor cd_S7696C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7696C2, buf);
    S7696C2 *dp, &lv = *(dp=new (buf) S7696C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7696C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C2)");
    check_base_class_offset(lv, (S7696C6*)(S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C2");
    check_base_class_offset(lv, (S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C2");
    check_base_class_offset(lv, (S7696C4*)(S7696C3*), ABISELECT(8,4), "S7696C2");
    check_base_class_offset(lv, (S7696C3*), 0, "S7696C2");
    test_class_info(&lv, &cd_S7696C2);
    dp->~S7696C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C2(Test_S7696C2, "S7696C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7696C2C1Ev();
extern void _ZN7S7696C2D2Ev();
Name_Map name_map_S7696C2[] = {
  NSPAIR(_ZN7S7696C2C1Ev),
  NSPAIR(_ZN7S7696C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7696C6;
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
extern Class_Descriptor cd_S7696C5;
extern VTBL_ENTRY _ZTI7S7696C5[];
extern  VTBL_ENTRY _ZTV7S7696C5[];
extern Class_Descriptor cd_S7696C4;
extern VTBL_ENTRY _ZTI7S7696C4[];
extern  VTBL_ENTRY _ZTV7S7696C4[];
extern Class_Descriptor cd_S7696C3;
extern VTBL_ENTRY _ZTI7S7696C3[];
extern  VTBL_ENTRY _ZTV7S7696C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C3[];
static Base_Class bases_S7696C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7696C6,    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_S7696C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7696C4,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    17, //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
    3, //immediately_derived
  0, 1},
  {&cd_S7696C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7696C2[];
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
extern void _ZN7S7696C2D1Ev();
extern void _ZN7S7696C2D0Ev();
extern void _ZN7S7696C23v23Ev();
extern void _ZN7S7696C23v24Ev();
extern void _ZN7S7696C23v25Ev();
extern void _ZN7S7696C23v26Ev();
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY vtc_S7696C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C2[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7696C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7696C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v26Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C2[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
extern VTBL_ENTRY _ZTV7S7696C2[];
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C3__7S7696C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
};
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C4__7S7696C3__7S7696C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
static  VTT_ENTRY vtt_S7696C2[] = {
  {&(_ZTV7S7696C2[7]),  7,48},
  {&(_ZTV7S7696C2[7]),  7,48},
  {&(_ZTV7S7696C2[33]),  33,48},
  {&(_tg__ZTV7S7696C3__7S7696C2[3]),  3,6},
  {&(_tg__ZTV7S7696C4__7S7696C3__7S7696C2[17]),  17,32},
};
extern VTBL_ENTRY _ZTI7S7696C2[];
extern  VTBL_ENTRY _ZTV7S7696C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C2[];
Class_Descriptor cd_S7696C2 = {  "S7696C2", // class name
  bases_S7696C2, 4,
  &(vtc_S7696C2[0]), // expected_vtbl_contents
  &(vtt_S7696C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7696C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7696C2),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7696C2),5, //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  S7696C1  : S7696C2 {
  virtual  ~S7696C1(); // _ZN7S7696C1D2Ev
  virtual void  v1(); // _ZN7S7696C12v1Ev
  virtual void  v2(); // _ZN7S7696C12v2Ev
  virtual void  v3(); // _ZN7S7696C12v3Ev
  virtual void  v4(); // _ZN7S7696C12v4Ev
  S7696C1(); // tgen
};
//SIG(1 S7696C1) C1{ BC2{ VBC3{ VBC4{ BC5{ BC6{ v5 v6 v7 v8 v9} v10 v11 v12 v13 FC6} v14 v15 v16 v17 v18 v19} v20 v21 v22} vd v23 v24 v25 v26} vd v1 v2 v3 v4}


 S7696C1 ::~S7696C1(){ note_dtor("S7696C1", this);}
void  S7696C1 ::v1(){vfunc_called(this, "_ZN7S7696C12v1Ev");}
void  S7696C1 ::v2(){vfunc_called(this, "_ZN7S7696C12v2Ev");}
void  S7696C1 ::v3(){vfunc_called(this, "_ZN7S7696C12v3Ev");}
void  S7696C1 ::v4(){vfunc_called(this, "_ZN7S7696C12v4Ev");}
S7696C1 ::S7696C1(){ note_ctor("S7696C1", this);} // tgen

static void Test_S7696C1()
{
  extern Class_Descriptor cd_S7696C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7696C1, buf);
    S7696C1 *dp, &lv = *(dp=new (buf) S7696C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7696C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7696C1)");
    check_base_class_offset(lv, (S7696C6*)(S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C1");
    check_base_class_offset(lv, (S7696C5*)(S7696C4*), ABISELECT(8,4), "S7696C1");
    check_base_class_offset(lv, (S7696C4*)(S7696C3*), ABISELECT(8,4), "S7696C1");
    check_base_class_offset(lv, (S7696C3*)(S7696C2*), 0, "S7696C1");
    check_base_class_offset(lv, (S7696C2*), 0, "S7696C1");
    test_class_info(&lv, &cd_S7696C1);
    dp->~S7696C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7696C1(Test_S7696C1, "S7696C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7696C1C1Ev();
extern void _ZN7S7696C1D2Ev();
Name_Map name_map_S7696C1[] = {
  NSPAIR(_ZN7S7696C1C1Ev),
  NSPAIR(_ZN7S7696C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7696C6;
extern VTBL_ENTRY _ZTI7S7696C6[];
extern  VTBL_ENTRY _ZTV7S7696C6[];
extern Class_Descriptor cd_S7696C5;
extern VTBL_ENTRY _ZTI7S7696C5[];
extern  VTBL_ENTRY _ZTV7S7696C5[];
extern Class_Descriptor cd_S7696C4;
extern VTBL_ENTRY _ZTI7S7696C4[];
extern  VTBL_ENTRY _ZTV7S7696C4[];
extern Class_Descriptor cd_S7696C3;
extern VTBL_ENTRY _ZTI7S7696C3[];
extern  VTBL_ENTRY _ZTV7S7696C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C3[];
extern Class_Descriptor cd_S7696C2;
extern VTBL_ENTRY _ZTI7S7696C2[];
extern  VTBL_ENTRY _ZTV7S7696C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C2[];
static Base_Class bases_S7696C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7696C6,    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_S7696C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7696C4,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    17, //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_S7696C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7696C2,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7696C1[];
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
extern void _ZN7S7696C1D1Ev();
extern void _ZN7S7696C1D0Ev();
extern void _ZN7S7696C23v23Ev();
extern void _ZN7S7696C23v24Ev();
extern void _ZN7S7696C23v25Ev();
extern void _ZN7S7696C23v26Ev();
extern void _ZN7S7696C12v1Ev();
extern void _ZN7S7696C12v2Ev();
extern void _ZN7S7696C12v3Ev();
extern void _ZN7S7696C12v4Ev();
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY vtc_S7696C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C1[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7696C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7696C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7696C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7696C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7696C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7696C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C1[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
extern VTBL_ENTRY _ZTV7S7696C1[];
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
extern void _ZN7S7696C2D1Ev();
extern void _ZN7S7696C2D0Ev();
extern void _ZN7S7696C23v23Ev();
extern void _ZN7S7696C23v24Ev();
extern void _ZN7S7696C23v25Ev();
extern void _ZN7S7696C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C2__7S7696C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C2[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7696C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7696C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v23Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7696C23v26Ev,
};
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C4__7S7696C2__7S7696C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C2[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
extern void _ZN7S7696C33v20Ev();
extern void _ZN7S7696C33v21Ev();
extern void _ZN7S7696C33v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C3__7S7696C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7696C33v22Ev,
};
extern void _ZN7S7696C62v5Ev();
extern void _ZN7S7696C62v6Ev();
extern void _ZN7S7696C62v7Ev();
extern void _ZN7S7696C62v8Ev();
extern void _ZN7S7696C62v9Ev();
extern void _ZN7S7696C53v10Ev();
extern void _ZN7S7696C53v11Ev();
extern void _ZN7S7696C53v12Ev();
extern void _ZN7S7696C53v13Ev();
extern void _ZN7S7696C43v14Ev();
extern void _ZN7S7696C43v15Ev();
extern void _ZN7S7696C43v16Ev();
extern void _ZN7S7696C43v17Ev();
extern void _ZN7S7696C43v18Ev();
extern void _ZN7S7696C43v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7696C4__7S7696C3__7S7696C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7696C3[0]),
  (VTBL_ENTRY)&_ZN7S7696C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7696C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v10Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v11Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7696C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7696C43v19Ev,
};
static  VTT_ENTRY vtt_S7696C1[] = {
  {&(_ZTV7S7696C1[7]),  7,52},
  {&(_tg__ZTV7S7696C2__7S7696C1[7]),  7,16},
  {&(_tg__ZTV7S7696C2__7S7696C1[7]),  7,16},
  {&(_tg__ZTV7S7696C4__7S7696C2__7S7696C1[17]),  17,32},
  {&(_ZTV7S7696C1[7]),  7,52},
  {&(_ZTV7S7696C1[37]),  37,52},
  {&(_tg__ZTV7S7696C3__7S7696C1[3]),  3,6},
  {&(_tg__ZTV7S7696C4__7S7696C3__7S7696C1[17]),  17,32},
};
extern VTBL_ENTRY _ZTI7S7696C1[];
extern  VTBL_ENTRY _ZTV7S7696C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7696C1[];
Class_Descriptor cd_S7696C1 = {  "S7696C1", // class name
  bases_S7696C1, 5,
  &(vtc_S7696C1[0]), // expected_vtbl_contents
  &(vtt_S7696C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7696C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7696C1),52, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7696C1),8, //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  S6950C2  {
  virtual void  v5(); // _ZN7S6950C22v5Ev
  virtual void  v6(); // _ZN7S6950C22v6Ev
  virtual void  v7(); // _ZN7S6950C22v7Ev
  ~S6950C2(); // tgen
  S6950C2(); // tgen
};
//SIG(-1 S6950C2) C1{ v1 v2 v3}


void  S6950C2 ::v5(){vfunc_called(this, "_ZN7S6950C22v5Ev");}
void  S6950C2 ::v6(){vfunc_called(this, "_ZN7S6950C22v6Ev");}
void  S6950C2 ::v7(){vfunc_called(this, "_ZN7S6950C22v7Ev");}
S6950C2 ::~S6950C2(){ note_dtor("S6950C2", this);} // tgen
S6950C2 ::S6950C2(){ note_ctor("S6950C2", this);} // tgen

static void Test_S6950C2()
{
  extern Class_Descriptor cd_S6950C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6950C2, buf);
    S6950C2 *dp, &lv = *(dp=new (buf) S6950C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6950C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C2)");
    test_class_info(&lv, &cd_S6950C2);
    dp->~S6950C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C2(Test_S6950C2, "S6950C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6950C2C1Ev();
extern void _ZN7S6950C2D1Ev();
Name_Map name_map_S6950C2[] = {
  NSPAIR(_ZN7S6950C2C1Ev),
  NSPAIR(_ZN7S6950C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6950C2[];
extern void _ZN7S6950C22v5Ev();
extern void _ZN7S6950C22v6Ev();
extern void _ZN7S6950C22v7Ev();
static  VTBL_ENTRY vtc_S6950C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C2[0]),
  (VTBL_ENTRY)&_ZN7S6950C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S6950C2[];
extern  VTBL_ENTRY _ZTV7S6950C2[];
Class_Descriptor cd_S6950C2 = {  "S6950C2", // class name
  0,0,//no base classes
  &(vtc_S6950C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6950C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6950C2),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  S6950C3  {
  __tsi64 s6950c3f0;
  char s6950c3f1;
  virtual void  v8(); // _ZN7S6950C32v8Ev
  virtual void  v9(); // _ZN7S6950C32v9Ev
  virtual void  v10(); // _ZN7S6950C33v10Ev
  virtual void  v11(); // _ZN7S6950C33v11Ev
  virtual void  v12(); // _ZN7S6950C33v12Ev
  virtual void  v13(); // _ZN7S6950C33v13Ev
  virtual void  v14(); // _ZN7S6950C33v14Ev
  ~S6950C3(); // tgen
  S6950C3(); // tgen
};
//SIG(-1 S6950C3) C1{ v1 v2 v3 v4 v5 v6 v7 FL Fc}


void  S6950C3 ::v8(){vfunc_called(this, "_ZN7S6950C32v8Ev");}
void  S6950C3 ::v9(){vfunc_called(this, "_ZN7S6950C32v9Ev");}
void  S6950C3 ::v10(){vfunc_called(this, "_ZN7S6950C33v10Ev");}
void  S6950C3 ::v11(){vfunc_called(this, "_ZN7S6950C33v11Ev");}
void  S6950C3 ::v12(){vfunc_called(this, "_ZN7S6950C33v12Ev");}
void  S6950C3 ::v13(){vfunc_called(this, "_ZN7S6950C33v13Ev");}
void  S6950C3 ::v14(){vfunc_called(this, "_ZN7S6950C33v14Ev");}
S6950C3 ::~S6950C3(){ note_dtor("S6950C3", this);} // tgen
S6950C3 ::S6950C3(){ note_ctor("S6950C3", this);} // tgen

static void Test_S6950C3()
{
  extern Class_Descriptor cd_S6950C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6950C3, buf);
    S6950C3 *dp, &lv = *(dp=new (buf) S6950C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6950C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C3)");
    check_field_offset(lv, s6950c3f0, ABISELECT(8,4), "S6950C3.s6950c3f0");
    check_field_offset(lv, s6950c3f1, ABISELECT(16,12), "S6950C3.s6950c3f1");
    test_class_info(&lv, &cd_S6950C3);
    dp->~S6950C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C3(Test_S6950C3, "S6950C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6950C3C1Ev();
extern void _ZN7S6950C3D1Ev();
Name_Map name_map_S6950C3[] = {
  NSPAIR(_ZN7S6950C3C1Ev),
  NSPAIR(_ZN7S6950C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6950C3[];
extern void _ZN7S6950C32v8Ev();
extern void _ZN7S6950C32v9Ev();
extern void _ZN7S6950C33v10Ev();
extern void _ZN7S6950C33v11Ev();
extern void _ZN7S6950C33v12Ev();
extern void _ZN7S6950C33v13Ev();
extern void _ZN7S6950C33v14Ev();
static  VTBL_ENTRY vtc_S6950C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C3[0]),
  (VTBL_ENTRY)&_ZN7S6950C32v8Ev,
  (VTBL_ENTRY)&_ZN7S6950C32v9Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v10Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S6950C3[];
extern  VTBL_ENTRY _ZTV7S6950C3[];
Class_Descriptor cd_S6950C3 = {  "S6950C3", // class name
  0,0,//no base classes
  &(vtc_S6950C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6950C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6950C3),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  S6950C5  {
  virtual  ~S6950C5(); // _ZN7S6950C5D1Ev
  virtual void  v17(); // _ZN7S6950C53v17Ev
  virtual void  v18(); // _ZN7S6950C53v18Ev
  virtual void  v19(); // _ZN7S6950C53v19Ev
  virtual void  v20(); // _ZN7S6950C53v20Ev
  S6950C5(); // tgen
};
//SIG(-1 S6950C5) C1{ vd v1 v2 v3 v4}


 S6950C5 ::~S6950C5(){ note_dtor("S6950C5", this);}
void  S6950C5 ::v17(){vfunc_called(this, "_ZN7S6950C53v17Ev");}
void  S6950C5 ::v18(){vfunc_called(this, "_ZN7S6950C53v18Ev");}
void  S6950C5 ::v19(){vfunc_called(this, "_ZN7S6950C53v19Ev");}
void  S6950C5 ::v20(){vfunc_called(this, "_ZN7S6950C53v20Ev");}
S6950C5 ::S6950C5(){ note_ctor("S6950C5", this);} // tgen

static void Test_S6950C5()
{
  extern Class_Descriptor cd_S6950C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6950C5, buf);
    S6950C5 *dp, &lv = *(dp=new (buf) S6950C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6950C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C5)");
    test_class_info(&lv, &cd_S6950C5);
    dp->~S6950C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C5(Test_S6950C5, "S6950C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6950C5C1Ev();
extern void _ZN7S6950C5D1Ev();
Name_Map name_map_S6950C5[] = {
  NSPAIR(_ZN7S6950C5C1Ev),
  NSPAIR(_ZN7S6950C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6950C5[];
extern void _ZN7S6950C5D1Ev();
extern void _ZN7S6950C5D0Ev();
extern void _ZN7S6950C53v17Ev();
extern void _ZN7S6950C53v18Ev();
extern void _ZN7S6950C53v19Ev();
extern void _ZN7S6950C53v20Ev();
static  VTBL_ENTRY vtc_S6950C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C5[0]),
  (VTBL_ENTRY)&_ZN7S6950C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6950C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v20Ev,
};
extern VTBL_ENTRY _ZTI7S6950C5[];
extern  VTBL_ENTRY _ZTV7S6950C5[];
Class_Descriptor cd_S6950C5 = {  "S6950C5", // class name
  0,0,//no base classes
  &(vtc_S6950C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6950C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6950C5),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  S6950C6  : S6950C2 {
  ::S6950C2 s6950c6f0;
  virtual void  v21(); // _ZN7S6950C63v21Ev
  virtual void  v22(); // _ZN7S6950C63v22Ev
  virtual void  v23(); // _ZN7S6950C63v23Ev
  ~S6950C6(); // tgen
  S6950C6(); // tgen
};
//SIG(-1 S6950C6) C1{ BC2{ v4 v5 v6} v1 v2 v3 FC2}


void  S6950C6 ::v21(){vfunc_called(this, "_ZN7S6950C63v21Ev");}
void  S6950C6 ::v22(){vfunc_called(this, "_ZN7S6950C63v22Ev");}
void  S6950C6 ::v23(){vfunc_called(this, "_ZN7S6950C63v23Ev");}
S6950C6 ::~S6950C6(){ note_dtor("S6950C6", this);} // tgen
S6950C6 ::S6950C6(){ note_ctor("S6950C6", this);} // tgen

static void Test_S6950C6()
{
  extern Class_Descriptor cd_S6950C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6950C6, buf);
    S6950C6 *dp, &lv = *(dp=new (buf) S6950C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6950C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C6)");
    check_base_class_offset(lv, (S6950C2*), 0, "S6950C6");
    check_field_offset(lv, s6950c6f0, ABISELECT(8,4), "S6950C6.s6950c6f0");
    test_class_info(&lv, &cd_S6950C6);
    dp->~S6950C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C6(Test_S6950C6, "S6950C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6950C6C1Ev();
extern void _ZN7S6950C6D1Ev();
Name_Map name_map_S6950C6[] = {
  NSPAIR(_ZN7S6950C6C1Ev),
  NSPAIR(_ZN7S6950C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6950C2;
extern VTBL_ENTRY _ZTI7S6950C2[];
extern  VTBL_ENTRY _ZTV7S6950C2[];
static Base_Class bases_S6950C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6950C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6950C6[];
extern void _ZN7S6950C22v5Ev();
extern void _ZN7S6950C22v6Ev();
extern void _ZN7S6950C22v7Ev();
extern void _ZN7S6950C63v21Ev();
extern void _ZN7S6950C63v22Ev();
extern void _ZN7S6950C63v23Ev();
static  VTBL_ENTRY vtc_S6950C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C6[0]),
  (VTBL_ENTRY)&_ZN7S6950C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v21Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v22Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v23Ev,
};
extern VTBL_ENTRY _ZTI7S6950C6[];
extern  VTBL_ENTRY _ZTV7S6950C6[];
Class_Descriptor cd_S6950C6 = {  "S6950C6", // class name
  bases_S6950C6, 1,
  &(vtc_S6950C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6950C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6950C6),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6950C4  : S6950C5 , virtual S6950C6 {
  virtual  ~S6950C4(); // _ZN7S6950C4D2Ev
  virtual void  v15(); // _ZN7S6950C43v15Ev
  virtual void  v16(); // _ZN7S6950C43v16Ev
  S6950C4(); // tgen
};
//SIG(-1 S6950C4) C1{ BC2{ vd v3 v4 v5 v6} VBC3{ BC4{ v7 v8 v9} v10 v11 v12 FC4} vd v1 v2}


 S6950C4 ::~S6950C4(){ note_dtor("S6950C4", this);}
void  S6950C4 ::v15(){vfunc_called(this, "_ZN7S6950C43v15Ev");}
void  S6950C4 ::v16(){vfunc_called(this, "_ZN7S6950C43v16Ev");}
S6950C4 ::S6950C4(){ note_ctor("S6950C4", this);} // tgen

static void Test_S6950C4()
{
  extern Class_Descriptor cd_S6950C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6950C4, buf);
    S6950C4 *dp, &lv = *(dp=new (buf) S6950C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6950C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C4)");
    check_base_class_offset(lv, (S6950C5*), 0, "S6950C4");
    check_base_class_offset(lv, (S6950C2*)(S6950C6*), ABISELECT(8,4), "S6950C4");
    check_base_class_offset(lv, (S6950C6*), ABISELECT(8,4), "S6950C4");
    test_class_info(&lv, &cd_S6950C4);
    dp->~S6950C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C4(Test_S6950C4, "S6950C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6950C4C1Ev();
extern void _ZN7S6950C4D2Ev();
Name_Map name_map_S6950C4[] = {
  NSPAIR(_ZN7S6950C4C1Ev),
  NSPAIR(_ZN7S6950C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6950C5;
extern VTBL_ENTRY _ZTI7S6950C5[];
extern  VTBL_ENTRY _ZTV7S6950C5[];
extern Class_Descriptor cd_S6950C2;
extern VTBL_ENTRY _ZTI7S6950C2[];
extern  VTBL_ENTRY _ZTV7S6950C2[];
extern Class_Descriptor cd_S6950C6;
extern VTBL_ENTRY _ZTI7S6950C6[];
extern  VTBL_ENTRY _ZTV7S6950C6[];
static Base_Class bases_S6950C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6950C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6950C2,    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_S6950C6,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //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 _ZTI7S6950C4[];
extern void _ZN7S6950C4D1Ev();
extern void _ZN7S6950C4D0Ev();
extern void _ZN7S6950C53v17Ev();
extern void _ZN7S6950C53v18Ev();
extern void _ZN7S6950C53v19Ev();
extern void _ZN7S6950C53v20Ev();
extern void _ZN7S6950C43v15Ev();
extern void _ZN7S6950C43v16Ev();
extern void _ZN7S6950C22v5Ev();
extern void _ZN7S6950C22v6Ev();
extern void _ZN7S6950C22v7Ev();
extern void _ZN7S6950C63v21Ev();
extern void _ZN7S6950C63v22Ev();
extern void _ZN7S6950C63v23Ev();
static  VTBL_ENTRY vtc_S6950C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C4[0]),
  (VTBL_ENTRY)&_ZN7S6950C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6950C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6950C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6950C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6950C43v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6950C4[0]),
  (VTBL_ENTRY)&_ZN7S6950C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v21Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v22Ev,
  (VTBL_ENTRY)&_ZN7S6950C63v23Ev,
};
extern VTBL_ENTRY _ZTV7S6950C4[];
static  VTT_ENTRY vtt_S6950C4[] = {
  {&(_ZTV7S6950C4[3]),  3,25},
  {&(_ZTV7S6950C4[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S6950C4[];
extern  VTBL_ENTRY _ZTV7S6950C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6950C4[];
Class_Descriptor cd_S6950C4 = {  "S6950C4", // class name
  bases_S6950C4, 3,
  &(vtc_S6950C4[0]), // expected_vtbl_contents
  &(vtt_S6950C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6950C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6950C4),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6950C4),2, //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  S6950C1  : S6950C2 , S6950C3 {
  ::S6950C4 s6950c1f0;
  virtual void  v1(); // _ZN7S6950C12v1Ev
  virtual void  v2(); // _ZN7S6950C12v2Ev
  virtual void  v3(); // _ZN7S6950C12v3Ev
  virtual void  v4(); // _ZN7S6950C12v4Ev
  ~S6950C1(); // tgen
  S6950C1(); // tgen
};
//SIG(1 S6950C1) C1{ BC2{ v5 v6 v7} BC3{ v8 v9 v10 v11 v12 v13 v14 FL Fc} v1 v2 v3 v4 FC4{ BC5{ vd v17 v18 v19 v20} VBC6{ BC2 v21 v22 v23 FC2} vd v15 v16}}


void  S6950C1 ::v1(){vfunc_called(this, "_ZN7S6950C12v1Ev");}
void  S6950C1 ::v2(){vfunc_called(this, "_ZN7S6950C12v2Ev");}
void  S6950C1 ::v3(){vfunc_called(this, "_ZN7S6950C12v3Ev");}
void  S6950C1 ::v4(){vfunc_called(this, "_ZN7S6950C12v4Ev");}
S6950C1 ::~S6950C1(){ note_dtor("S6950C1", this);} // tgen
S6950C1 ::S6950C1(){ note_ctor("S6950C1", this);} // tgen

static void Test_S6950C1()
{
  extern Class_Descriptor cd_S6950C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S6950C1, buf);
    S6950C1 *dp, &lv = *(dp=new (buf) S6950C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S6950C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6950C1)");
    check_base_class_offset(lv, (S6950C2*), 0, "S6950C1");
    check_base_class_offset(lv, (S6950C3*), ABISELECT(8,4), "S6950C1");
    check_field_offset(lv, s6950c1f0, ABISELECT(32,20), "S6950C1.s6950c1f0");
    test_class_info(&lv, &cd_S6950C1);
    dp->~S6950C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6950C1(Test_S6950C1, "S6950C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S6950C1C1Ev();
extern void _ZN7S6950C1D1Ev();
Name_Map name_map_S6950C1[] = {
  NSPAIR(_ZN7S6950C1C1Ev),
  NSPAIR(_ZN7S6950C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6950C2;
extern VTBL_ENTRY _ZTI7S6950C2[];
extern  VTBL_ENTRY _ZTV7S6950C2[];
extern Class_Descriptor cd_S6950C3;
extern VTBL_ENTRY _ZTI7S6950C3[];
extern  VTBL_ENTRY _ZTV7S6950C3[];
static Base_Class bases_S6950C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6950C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6950C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_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 _ZTI7S6950C1[];
extern void _ZN7S6950C22v5Ev();
extern void _ZN7S6950C22v6Ev();
extern void _ZN7S6950C22v7Ev();
extern void _ZN7S6950C12v1Ev();
extern void _ZN7S6950C12v2Ev();
extern void _ZN7S6950C12v3Ev();
extern void _ZN7S6950C12v4Ev();
extern void _ZN7S6950C32v8Ev();
extern void _ZN7S6950C32v9Ev();
extern void _ZN7S6950C33v10Ev();
extern void _ZN7S6950C33v11Ev();
extern void _ZN7S6950C33v12Ev();
extern void _ZN7S6950C33v13Ev();
extern void _ZN7S6950C33v14Ev();
static  VTBL_ENTRY vtc_S6950C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6950C1[0]),
  (VTBL_ENTRY)&_ZN7S6950C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6950C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6950C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6950C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6950C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6950C12v4Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6950C1[0]),
  (VTBL_ENTRY)&_ZN7S6950C32v8Ev,
  (VTBL_ENTRY)&_ZN7S6950C32v9Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v10Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6950C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S6950C1[];
extern  VTBL_ENTRY _ZTV7S6950C1[];
Class_Descriptor cd_S6950C1 = {  "S6950C1", // class name
  bases_S6950C1, 2,
  &(vtc_S6950C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S6950C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6950C1),18, //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  S1363C4  {
  void *s1363c4f0;
  virtual void  v3(); // _ZN7S1363C42v3Ev
  virtual void  v4(); // _ZN7S1363C42v4Ev
  virtual void  v5(); // _ZN7S1363C42v5Ev
  virtual void  v6(); // _ZN7S1363C42v6Ev
  ~S1363C4(); // tgen
  S1363C4(); // tgen
};
//SIG(-1 S1363C4) C1{ v1 v2 v3 v4 Fp}


void  S1363C4 ::v3(){vfunc_called(this, "_ZN7S1363C42v3Ev");}
void  S1363C4 ::v4(){vfunc_called(this, "_ZN7S1363C42v4Ev");}
void  S1363C4 ::v5(){vfunc_called(this, "_ZN7S1363C42v5Ev");}
void  S1363C4 ::v6(){vfunc_called(this, "_ZN7S1363C42v6Ev");}
S1363C4 ::~S1363C4(){ note_dtor("S1363C4", this);} // tgen
S1363C4 ::S1363C4(){ note_ctor("S1363C4", this);} // tgen

static void Test_S1363C4()
{
  extern Class_Descriptor cd_S1363C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1363C4, buf);
    S1363C4 *dp, &lv = *(dp=new (buf) S1363C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1363C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1363C4)");
    check_field_offset(lv, s1363c4f0, ABISELECT(8,4), "S1363C4.s1363c4f0");
    test_class_info(&lv, &cd_S1363C4);
    dp->~S1363C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1363C4(Test_S1363C4, "S1363C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1363C4C1Ev();
extern void _ZN7S1363C4D1Ev();
Name_Map name_map_S1363C4[] = {
  NSPAIR(_ZN7S1363C4C1Ev),
  NSPAIR(_ZN7S1363C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1363C4[];
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
static  VTBL_ENTRY vtc_S1363C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1363C4[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
Class_Descriptor cd_S1363C4 = {  "S1363C4", // class name
  0,0,//no base classes
  &(vtc_S1363C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1363C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1363C4),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  S1363C3  : S1363C4 {
  void *s1363c3f0;
  __tsi64 s1363c3f1;
  virtual void  v7(); // _ZN7S1363C32v7Ev
  virtual void  v8(); // _ZN7S1363C32v8Ev
  ~S1363C3(); // tgen
  S1363C3(); // tgen
};
//SIG(-1 S1363C3) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S1363C3 ::v7(){vfunc_called(this, "_ZN7S1363C32v7Ev");}
void  S1363C3 ::v8(){vfunc_called(this, "_ZN7S1363C32v8Ev");}
S1363C3 ::~S1363C3(){ note_dtor("S1363C3", this);} // tgen
S1363C3 ::S1363C3(){ note_ctor("S1363C3", this);} // tgen

static void Test_S1363C3()
{
  extern Class_Descriptor cd_S1363C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1363C3, buf);
    S1363C3 *dp, &lv = *(dp=new (buf) S1363C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1363C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1363C3)");
    check_base_class_offset(lv, (S1363C4*), 0, "S1363C3");
    check_field_offset(lv, s1363c3f0, ABISELECT(16,8), "S1363C3.s1363c3f0");
    check_field_offset(lv, s1363c3f1, ABISELECT(24,12), "S1363C3.s1363c3f1");
    test_class_info(&lv, &cd_S1363C3);
    dp->~S1363C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1363C3(Test_S1363C3, "S1363C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1363C3C1Ev();
extern void _ZN7S1363C3D1Ev();
Name_Map name_map_S1363C3[] = {
  NSPAIR(_ZN7S1363C3C1Ev),
  NSPAIR(_ZN7S1363C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
static Base_Class bases_S1363C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1363C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1363C3[];
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C32v7Ev();
extern void _ZN7S1363C32v8Ev();
static  VTBL_ENTRY vtc_S1363C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1363C3[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S1363C3[];
extern  VTBL_ENTRY _ZTV7S1363C3[];
Class_Descriptor cd_S1363C3 = {  "S1363C3", // class name
  bases_S1363C3, 1,
  &(vtc_S1363C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1363C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1363C3),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  S1363C5  : S1363C4 {
  virtual void  v9(); // _ZN7S1363C52v9Ev
  virtual void  v10(); // _ZN7S1363C53v10Ev
  virtual void  v11(); // _ZN7S1363C53v11Ev
  virtual void  v12(); // _ZN7S1363C53v12Ev
  virtual void  v13(); // _ZN7S1363C53v13Ev
  virtual void  v14(); // _ZN7S1363C53v14Ev
  ~S1363C5(); // tgen
  S1363C5(); // tgen
};
//SIG(-1 S1363C5) C1{ BC2{ v7 v8 v9 v10 Fp} v1 v2 v3 v4 v5 v6}


void  S1363C5 ::v9(){vfunc_called(this, "_ZN7S1363C52v9Ev");}
void  S1363C5 ::v10(){vfunc_called(this, "_ZN7S1363C53v10Ev");}
void  S1363C5 ::v11(){vfunc_called(this, "_ZN7S1363C53v11Ev");}
void  S1363C5 ::v12(){vfunc_called(this, "_ZN7S1363C53v12Ev");}
void  S1363C5 ::v13(){vfunc_called(this, "_ZN7S1363C53v13Ev");}
void  S1363C5 ::v14(){vfunc_called(this, "_ZN7S1363C53v14Ev");}
S1363C5 ::~S1363C5(){ note_dtor("S1363C5", this);} // tgen
S1363C5 ::S1363C5(){ note_ctor("S1363C5", this);} // tgen

static void Test_S1363C5()
{
  extern Class_Descriptor cd_S1363C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1363C5, buf);
    S1363C5 *dp, &lv = *(dp=new (buf) S1363C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1363C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1363C5)");
    check_base_class_offset(lv, (S1363C4*), 0, "S1363C5");
    test_class_info(&lv, &cd_S1363C5);
    dp->~S1363C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1363C5(Test_S1363C5, "S1363C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1363C5C1Ev();
extern void _ZN7S1363C5D1Ev();
Name_Map name_map_S1363C5[] = {
  NSPAIR(_ZN7S1363C5C1Ev),
  NSPAIR(_ZN7S1363C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
static Base_Class bases_S1363C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1363C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1363C5[];
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C52v9Ev();
extern void _ZN7S1363C53v10Ev();
extern void _ZN7S1363C53v11Ev();
extern void _ZN7S1363C53v12Ev();
extern void _ZN7S1363C53v13Ev();
extern void _ZN7S1363C53v14Ev();
static  VTBL_ENTRY vtc_S1363C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1363C5[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v14Ev,
};
extern VTBL_ENTRY _ZTI7S1363C5[];
extern  VTBL_ENTRY _ZTV7S1363C5[];
Class_Descriptor cd_S1363C5 = {  "S1363C5", // class name
  bases_S1363C5, 1,
  &(vtc_S1363C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1363C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1363C5),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  S1363C2  : S1363C3 , S1363C5 {
  char s1363c2f0[8];
  long double s1363c2f1;
  virtual  ~S1363C2(); // _ZN7S1363C2D1Ev
  virtual void  v15(); // _ZN7S1363C23v15Ev
  virtual void  v16(); // _ZN7S1363C23v16Ev
  virtual void  v17(); // _ZN7S1363C23v17Ev
  virtual void  v18(); // _ZN7S1363C23v18Ev
  virtual void  v19(); // _ZN7S1363C23v19Ev
  virtual void  v20(); // _ZN7S1363C23v20Ev
  virtual void  v21(); // _ZN7S1363C23v21Ev
  virtual void  v22(); // _ZN7S1363C23v22Ev
  S1363C2(); // tgen
};
//SIG(-1 S1363C2) C1{ BC2{ BC3{ v9 v10 v11 v12 Fp} v13 v14 Fp FL} BC4{ BC3 v15 v16 v17 v18 v19 v20} vd v1 v2 v3 v4 v5 v6 v7 v8 Fc[8] FD}


 S1363C2 ::~S1363C2(){ note_dtor("S1363C2", this);}
void  S1363C2 ::v15(){vfunc_called(this, "_ZN7S1363C23v15Ev");}
void  S1363C2 ::v16(){vfunc_called(this, "_ZN7S1363C23v16Ev");}
void  S1363C2 ::v17(){vfunc_called(this, "_ZN7S1363C23v17Ev");}
void  S1363C2 ::v18(){vfunc_called(this, "_ZN7S1363C23v18Ev");}
void  S1363C2 ::v19(){vfunc_called(this, "_ZN7S1363C23v19Ev");}
void  S1363C2 ::v20(){vfunc_called(this, "_ZN7S1363C23v20Ev");}
void  S1363C2 ::v21(){vfunc_called(this, "_ZN7S1363C23v21Ev");}
void  S1363C2 ::v22(){vfunc_called(this, "_ZN7S1363C23v22Ev");}
S1363C2 ::S1363C2(){ note_ctor("S1363C2", this);} // tgen

static void Test_S1363C2()
{
  extern Class_Descriptor cd_S1363C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,13)];
    init_test(&cd_S1363C2, buf);
    S1363C2 *dp, &lv = *(dp=new (buf) S1363C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S1363C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1363C2)");
    check_base_class_offset(lv, (S1363C4*)(S1363C3*), 0, "S1363C2");
    check_base_class_offset(lv, (S1363C3*), 0, "S1363C2");
    check_base_class_offset(lv, (S1363C4*)(S1363C5*), ABISELECT(32,20), "S1363C2");
    check_base_class_offset(lv, (S1363C5*), ABISELECT(32,20), "S1363C2");
    check_field_offset(lv, s1363c2f0, ABISELECT(48,28), "S1363C2.s1363c2f0");
    check_field_offset(lv, s1363c2f1, ABISELECT(64,36), "S1363C2.s1363c2f1");
    test_class_info(&lv, &cd_S1363C2);
    dp->~S1363C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1363C2(Test_S1363C2, "S1363C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S1363C2C1Ev();
extern void _ZN7S1363C2D1Ev();
Name_Map name_map_S1363C2[] = {
  NSPAIR(_ZN7S1363C2C1Ev),
  NSPAIR(_ZN7S1363C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
extern Class_Descriptor cd_S1363C3;
extern VTBL_ENTRY _ZTI7S1363C3[];
extern  VTBL_ENTRY _ZTV7S1363C3[];
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
extern Class_Descriptor cd_S1363C5;
extern VTBL_ENTRY _ZTI7S1363C5[];
extern  VTBL_ENTRY _ZTV7S1363C5[];
static Base_Class bases_S1363C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1363C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S1363C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1363C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1363C5,    ABISELECT(32,20), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1363C2[];
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C32v7Ev();
extern void _ZN7S1363C32v8Ev();
extern void _ZN7S1363C2D1Ev();
extern void _ZN7S1363C2D0Ev();
extern void _ZN7S1363C23v15Ev();
extern void _ZN7S1363C23v16Ev();
extern void _ZN7S1363C23v17Ev();
extern void _ZN7S1363C23v18Ev();
extern void _ZN7S1363C23v19Ev();
extern void _ZN7S1363C23v20Ev();
extern void _ZN7S1363C23v21Ev();
extern void _ZN7S1363C23v22Ev();
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C52v9Ev();
extern void _ZN7S1363C53v10Ev();
extern void _ZN7S1363C53v11Ev();
extern void _ZN7S1363C53v12Ev();
extern void _ZN7S1363C53v13Ev();
extern void _ZN7S1363C53v14Ev();
static  VTBL_ENTRY vtc_S1363C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1363C2[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1363C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1363C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v22Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1363C2[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v14Ev,
};
extern VTBL_ENTRY _ZTI7S1363C2[];
extern  VTBL_ENTRY _ZTV7S1363C2[];
Class_Descriptor cd_S1363C2 = {  "S1363C2", // class name
  bases_S1363C2, 4,
  &(vtc_S1363C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S1363C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1363C2),30, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1363C1  : S1363C2 {
  short s1363c1f0;
  virtual void  v1(); // _ZN7S1363C12v1Ev
  virtual void  v2(); // _ZN7S1363C12v2Ev
  ~S1363C1(); // tgen
  S1363C1(); // tgen
};
//SIG(1 S1363C1) C1{ BC2{ BC3{ BC4{ v3 v4 v5 v6 Fp} v7 v8 Fp FL} BC5{ BC4 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 Fc[8] FD} v1 v2 Fs}


void  S1363C1 ::v1(){vfunc_called(this, "_ZN7S1363C12v1Ev");}
void  S1363C1 ::v2(){vfunc_called(this, "_ZN7S1363C12v2Ev");}
S1363C1 ::~S1363C1(){ note_dtor("S1363C1", this);} // tgen
S1363C1 ::S1363C1(){ note_ctor("S1363C1", this);} // tgen

static void Test_S1363C1()
{
  extern Class_Descriptor cd_S1363C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S1363C1, buf);
    S1363C1 *dp, &lv = *(dp=new (buf) S1363C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S1363C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1363C1)");
    check_base_class_offset(lv, (S1363C4*)(S1363C3*)(S1363C2*), 0, "S1363C1");
    check_base_class_offset(lv, (S1363C3*)(S1363C2*), 0, "S1363C1");
    check_base_class_offset(lv, (S1363C4*)(S1363C5*)(S1363C2*), ABISELECT(32,20), "S1363C1");
    check_base_class_offset(lv, (S1363C5*)(S1363C2*), ABISELECT(32,20), "S1363C1");
    check_base_class_offset(lv, (S1363C2*), 0, "S1363C1");
    check_field_offset(lv, s1363c1f0, ABISELECT(80,48), "S1363C1.s1363c1f0");
    test_class_info(&lv, &cd_S1363C1);
    dp->~S1363C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1363C1(Test_S1363C1, "S1363C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S1363C1C1Ev();
extern void _ZN7S1363C1D1Ev();
Name_Map name_map_S1363C1[] = {
  NSPAIR(_ZN7S1363C1C1Ev),
  NSPAIR(_ZN7S1363C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
extern Class_Descriptor cd_S1363C3;
extern VTBL_ENTRY _ZTI7S1363C3[];
extern  VTBL_ENTRY _ZTV7S1363C3[];
extern Class_Descriptor cd_S1363C4;
extern VTBL_ENTRY _ZTI7S1363C4[];
extern  VTBL_ENTRY _ZTV7S1363C4[];
extern Class_Descriptor cd_S1363C5;
extern VTBL_ENTRY _ZTI7S1363C5[];
extern  VTBL_ENTRY _ZTV7S1363C5[];
extern Class_Descriptor cd_S1363C2;
extern VTBL_ENTRY _ZTI7S1363C2[];
extern  VTBL_ENTRY _ZTV7S1363C2[];
static Base_Class bases_S1363C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1363C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S1363C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1363C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1363C5,    ABISELECT(32,20), //bcp->offset
    20, //bcp->virtual_function_table_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_S1363C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1363C1[];
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C32v7Ev();
extern void _ZN7S1363C32v8Ev();
extern void _ZN7S1363C1D1Ev();
extern void _ZN7S1363C1D0Ev();
extern void _ZN7S1363C23v15Ev();
extern void _ZN7S1363C23v16Ev();
extern void _ZN7S1363C23v17Ev();
extern void _ZN7S1363C23v18Ev();
extern void _ZN7S1363C23v19Ev();
extern void _ZN7S1363C23v20Ev();
extern void _ZN7S1363C23v21Ev();
extern void _ZN7S1363C23v22Ev();
extern void _ZN7S1363C12v1Ev();
extern void _ZN7S1363C12v2Ev();
extern void _ZN7S1363C42v3Ev();
extern void _ZN7S1363C42v4Ev();
extern void _ZN7S1363C42v5Ev();
extern void _ZN7S1363C42v6Ev();
extern void _ZN7S1363C52v9Ev();
extern void _ZN7S1363C53v10Ev();
extern void _ZN7S1363C53v11Ev();
extern void _ZN7S1363C53v12Ev();
extern void _ZN7S1363C53v13Ev();
extern void _ZN7S1363C53v14Ev();
static  VTBL_ENTRY vtc_S1363C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1363C1[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1363C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1363C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1363C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1363C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1363C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1363C12v2Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1363C1[0]),
  (VTBL_ENTRY)&_ZN7S1363C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1363C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1363C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v13Ev,
  (VTBL_ENTRY)&_ZN7S1363C53v14Ev,
};
extern VTBL_ENTRY _ZTI7S1363C1[];
extern  VTBL_ENTRY _ZTV7S1363C1[];
Class_Descriptor cd_S1363C1 = {  "S1363C1", // class name
  bases_S1363C1, 5,
  &(vtc_S1363C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S1363C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1363C1),32, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7157C2  {
  virtual void  v8(); // _ZN7S7157C22v8Ev
  virtual void  v9(); // _ZN7S7157C22v9Ev
  virtual void  v10(); // _ZN7S7157C23v10Ev
  ~S7157C2(); // tgen
  S7157C2(); // tgen
};
//SIG(-1 S7157C2) C1{ v1 v2 v3}


void  S7157C2 ::v8(){vfunc_called(this, "_ZN7S7157C22v8Ev");}
void  S7157C2 ::v9(){vfunc_called(this, "_ZN7S7157C22v9Ev");}
void  S7157C2 ::v10(){vfunc_called(this, "_ZN7S7157C23v10Ev");}
S7157C2 ::~S7157C2(){ note_dtor("S7157C2", this);} // tgen
S7157C2 ::S7157C2(){ note_ctor("S7157C2", this);} // tgen

static void Test_S7157C2()
{
  extern Class_Descriptor cd_S7157C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7157C2, buf);
    S7157C2 *dp, &lv = *(dp=new (buf) S7157C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7157C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7157C2)");
    test_class_info(&lv, &cd_S7157C2);
    dp->~S7157C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7157C2(Test_S7157C2, "S7157C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7157C2C1Ev();
extern void _ZN7S7157C2D1Ev();
Name_Map name_map_S7157C2[] = {
  NSPAIR(_ZN7S7157C2C1Ev),
  NSPAIR(_ZN7S7157C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7157C2[];
extern void _ZN7S7157C22v8Ev();
extern void _ZN7S7157C22v9Ev();
extern void _ZN7S7157C23v10Ev();
static  VTBL_ENTRY vtc_S7157C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C2[0]),
  (VTBL_ENTRY)&_ZN7S7157C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7157C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7157C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7157C2[];
extern  VTBL_ENTRY _ZTV7S7157C2[];
Class_Descriptor cd_S7157C2 = {  "S7157C2", // class name
  0,0,//no base classes
  &(vtc_S7157C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7157C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7157C2),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  S7157C4  {
  virtual void  v11(); // _ZN7S7157C43v11Ev
  virtual void  v12(); // _ZN7S7157C43v12Ev
  virtual void  v13(); // _ZN7S7157C43v13Ev
  virtual void  v14(); // _ZN7S7157C43v14Ev
  ~S7157C4(); // tgen
  S7157C4(); // tgen
};
//SIG(-1 S7157C4) C1{ v1 v2 v3 v4}


void  S7157C4 ::v11(){vfunc_called(this, "_ZN7S7157C43v11Ev");}
void  S7157C4 ::v12(){vfunc_called(this, "_ZN7S7157C43v12Ev");}
void  S7157C4 ::v13(){vfunc_called(this, "_ZN7S7157C43v13Ev");}
void  S7157C4 ::v14(){vfunc_called(this, "_ZN7S7157C43v14Ev");}
S7157C4 ::~S7157C4(){ note_dtor("S7157C4", this);} // tgen
S7157C4 ::S7157C4(){ note_ctor("S7157C4", this);} // tgen

static void Test_S7157C4()
{
  extern Class_Descriptor cd_S7157C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7157C4, buf);
    S7157C4 *dp, &lv = *(dp=new (buf) S7157C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7157C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7157C4)");
    test_class_info(&lv, &cd_S7157C4);
    dp->~S7157C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7157C4(Test_S7157C4, "S7157C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7157C4C1Ev();
extern void _ZN7S7157C4D1Ev();
Name_Map name_map_S7157C4[] = {
  NSPAIR(_ZN7S7157C4C1Ev),
  NSPAIR(_ZN7S7157C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7157C4[];
extern void _ZN7S7157C43v11Ev();
extern void _ZN7S7157C43v12Ev();
extern void _ZN7S7157C43v13Ev();
extern void _ZN7S7157C43v14Ev();
static  VTBL_ENTRY vtc_S7157C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C4[0]),
  (VTBL_ENTRY)&_ZN7S7157C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v14Ev,
};
extern VTBL_ENTRY _ZTI7S7157C4[];
extern  VTBL_ENTRY _ZTV7S7157C4[];
Class_Descriptor cd_S7157C4 = {  "S7157C4", // class name
  0,0,//no base classes
  &(vtc_S7157C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7157C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7157C4),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  S7157C5  {
  void *s7157c5f0;
  virtual void  v15(); // _ZN7S7157C53v15Ev
  virtual void  v16(); // _ZN7S7157C53v16Ev
  virtual void  v17(); // _ZN7S7157C53v17Ev
  virtual void  v18(); // _ZN7S7157C53v18Ev
  ~S7157C5(); // tgen
  S7157C5(); // tgen
};
//SIG(-1 S7157C5) C1{ v1 v2 v3 v4 Fp}


void  S7157C5 ::v15(){vfunc_called(this, "_ZN7S7157C53v15Ev");}
void  S7157C5 ::v16(){vfunc_called(this, "_ZN7S7157C53v16Ev");}
void  S7157C5 ::v17(){vfunc_called(this, "_ZN7S7157C53v17Ev");}
void  S7157C5 ::v18(){vfunc_called(this, "_ZN7S7157C53v18Ev");}
S7157C5 ::~S7157C5(){ note_dtor("S7157C5", this);} // tgen
S7157C5 ::S7157C5(){ note_ctor("S7157C5", this);} // tgen

static void Test_S7157C5()
{
  extern Class_Descriptor cd_S7157C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7157C5, buf);
    S7157C5 *dp, &lv = *(dp=new (buf) S7157C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7157C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7157C5)");
    check_field_offset(lv, s7157c5f0, ABISELECT(8,4), "S7157C5.s7157c5f0");
    test_class_info(&lv, &cd_S7157C5);
    dp->~S7157C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7157C5(Test_S7157C5, "S7157C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7157C5C1Ev();
extern void _ZN7S7157C5D1Ev();
Name_Map name_map_S7157C5[] = {
  NSPAIR(_ZN7S7157C5C1Ev),
  NSPAIR(_ZN7S7157C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7157C5[];
extern void _ZN7S7157C53v15Ev();
extern void _ZN7S7157C53v16Ev();
extern void _ZN7S7157C53v17Ev();
extern void _ZN7S7157C53v18Ev();
static  VTBL_ENTRY vtc_S7157C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C5[0]),
  (VTBL_ENTRY)&_ZN7S7157C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v18Ev,
};
extern VTBL_ENTRY _ZTI7S7157C5[];
extern  VTBL_ENTRY _ZTV7S7157C5[];
Class_Descriptor cd_S7157C5 = {  "S7157C5", // class name
  0,0,//no base classes
  &(vtc_S7157C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7157C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7157C5),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  S7157C3  : virtual S7157C4 , virtual S7157C5 {
  long s7157c3f0[2];
  int s7157c3f1;
  virtual void  v19(); // _ZN7S7157C33v19Ev
  virtual void  v20(); // _ZN7S7157C33v20Ev
  virtual void  v21(); // _ZN7S7157C33v21Ev
  virtual void  v22(); // _ZN7S7157C33v22Ev
  virtual void  v23(); // _ZN7S7157C33v23Ev
  ~S7157C3(); // tgen
  S7157C3(); // tgen
};
//SIG(-1 S7157C3) C1{ VBC2{ v6 v7 v8 v9} VBC3{ v10 v11 v12 v13 Fp} v1 v2 v3 v4 v5 Fl[2] Fi}


void  S7157C3 ::v19(){vfunc_called(this, "_ZN7S7157C33v19Ev");}
void  S7157C3 ::v20(){vfunc_called(this, "_ZN7S7157C33v20Ev");}
void  S7157C3 ::v21(){vfunc_called(this, "_ZN7S7157C33v21Ev");}
void  S7157C3 ::v22(){vfunc_called(this, "_ZN7S7157C33v22Ev");}
void  S7157C3 ::v23(){vfunc_called(this, "_ZN7S7157C33v23Ev");}
S7157C3 ::~S7157C3(){ note_dtor("S7157C3", this);} // tgen
S7157C3 ::S7157C3(){ note_ctor("S7157C3", this);} // tgen

static void Test_S7157C3()
{
  extern Class_Descriptor cd_S7157C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7157C3, buf);
    S7157C3 *dp, &lv = *(dp=new (buf) S7157C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7157C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7157C3)");
    check_base_class_offset(lv, (S7157C4*), 0, "S7157C3");
    check_base_class_offset(lv, (S7157C5*), ABISELECT(32,16), "S7157C3");
    check_field_offset(lv, s7157c3f0, ABISELECT(8,4), "S7157C3.s7157c3f0");
    check_field_offset(lv, s7157c3f1, ABISELECT(24,12), "S7157C3.s7157c3f1");
    test_class_info(&lv, &cd_S7157C3);
    dp->~S7157C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7157C3(Test_S7157C3, "S7157C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7157C3C1Ev();
extern void _ZN7S7157C3D1Ev();
Name_Map name_map_S7157C3[] = {
  NSPAIR(_ZN7S7157C3C1Ev),
  NSPAIR(_ZN7S7157C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7157C4;
extern VTBL_ENTRY _ZTI7S7157C4[];
extern  VTBL_ENTRY _ZTV7S7157C4[];
extern Class_Descriptor cd_S7157C5;
extern VTBL_ENTRY _ZTI7S7157C5[];
extern  VTBL_ENTRY _ZTV7S7157C5[];
static Base_Class bases_S7157C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7157C4,    0, //bcp->offset
    -1, //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_S7157C5,    ABISELECT(32,16), //bcp->offset
    17, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7157C3[];
extern void _ZN7S7157C43v11Ev();
extern void _ZN7S7157C43v12Ev();
extern void _ZN7S7157C43v13Ev();
extern void _ZN7S7157C43v14Ev();
extern void _ZN7S7157C33v19Ev();
extern void _ZN7S7157C33v20Ev();
extern void _ZN7S7157C33v21Ev();
extern void _ZN7S7157C33v22Ev();
extern void _ZN7S7157C33v23Ev();
extern void _ZN7S7157C53v15Ev();
extern void _ZN7S7157C53v16Ev();
extern void _ZN7S7157C53v17Ev();
extern void _ZN7S7157C53v18Ev();
static  VTBL_ENTRY vtc_S7157C3[] = {
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C3[0]),
  (VTBL_ENTRY)&_ZN7S7157C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7157C3[0]),
  (VTBL_ENTRY)&_ZN7S7157C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v18Ev,
};
extern VTBL_ENTRY _ZTV7S7157C3[];
static  VTT_ENTRY vtt_S7157C3[] = {
  {&(_ZTV7S7157C3[8]),  8,27},
  {&(_ZTV7S7157C3[8]),  8,27},
  {&(_ZTV7S7157C3[23]),  23,27},
};
extern VTBL_ENTRY _ZTI7S7157C3[];
extern  VTBL_ENTRY _ZTV7S7157C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7157C3[];
Class_Descriptor cd_S7157C3 = {  "S7157C3", // class name
  bases_S7157C3, 2,
  &(vtc_S7157C3[0]), // expected_vtbl_contents
  &(vtt_S7157C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7157C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7157C3),27, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7157C3),3, //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  S7157C1  : S7157C2 , virtual S7157C3 {
  int s7157c1f0;
  __tsi64 s7157c1f1:33;
  virtual void  v1(); // _ZN7S7157C12v1Ev
  virtual void  v2(); // _ZN7S7157C12v2Ev
  virtual void  v3(); // _ZN7S7157C12v3Ev
  virtual void  v4(); // _ZN7S7157C12v4Ev
  virtual void  v5(); // _ZN7S7157C12v5Ev
  virtual void  v6(); // _ZN7S7157C12v6Ev
  virtual void  v7(); // _ZN7S7157C12v7Ev
  ~S7157C1(); // tgen
  S7157C1(); // tgen
};
//SIG(1 S7157C1) C1{ BC2{ v8 v9 v10} VBC3{ VBC4{ v11 v12 v13 v14} VBC5{ v15 v16 v17 v18 Fp} v19 v20 v21 v22 v23 Fl[2] Fi} v1 v2 v3 v4 v5 v6 v7 Fi FL:33}


void  S7157C1 ::v1(){vfunc_called(this, "_ZN7S7157C12v1Ev");}
void  S7157C1 ::v2(){vfunc_called(this, "_ZN7S7157C12v2Ev");}
void  S7157C1 ::v3(){vfunc_called(this, "_ZN7S7157C12v3Ev");}
void  S7157C1 ::v4(){vfunc_called(this, "_ZN7S7157C12v4Ev");}
void  S7157C1 ::v5(){vfunc_called(this, "_ZN7S7157C12v5Ev");}
void  S7157C1 ::v6(){vfunc_called(this, "_ZN7S7157C12v6Ev");}
void  S7157C1 ::v7(){vfunc_called(this, "_ZN7S7157C12v7Ev");}
S7157C1 ::~S7157C1(){ note_dtor("S7157C1", this);} // tgen
S7157C1 ::S7157C1(){ note_ctor("S7157C1", this);} // tgen

static void Test_S7157C1()
{
  extern Class_Descriptor cd_S7157C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7157C1, buf);
    S7157C1 *dp, &lv = *(dp=new (buf) S7157C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7157C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7157C1)");
    check_base_class_offset(lv, (S7157C2*), 0, "S7157C1");
    check_base_class_offset(lv, (S7157C4*)(S7157C3*), ABISELECT(24,16), "S7157C1");
    check_base_class_offset(lv, (S7157C5*)(S7157C3*), ABISELECT(56,32), "S7157C1");
    check_base_class_offset(lv, (S7157C3*), ABISELECT(24,16), "S7157C1");
    check_field_offset(lv, s7157c1f0, ABISELECT(8,4), "S7157C1.s7157c1f0");
    set_bf_and_test(lv, s7157c1f1, ABISELECT(16,8), 0, 33, 1, "S7157C1");
    set_bf_and_test(lv, s7157c1f1, ABISELECT(16,8), 0, 33, hide_sll(1LL<<32), "S7157C1");
    test_class_info(&lv, &cd_S7157C1);
    dp->~S7157C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7157C1(Test_S7157C1, "S7157C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7157C1C1Ev();
extern void _ZN7S7157C1D1Ev();
Name_Map name_map_S7157C1[] = {
  NSPAIR(_ZN7S7157C1C1Ev),
  NSPAIR(_ZN7S7157C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7157C2;
extern VTBL_ENTRY _ZTI7S7157C2[];
extern  VTBL_ENTRY _ZTV7S7157C2[];
extern Class_Descriptor cd_S7157C4;
extern VTBL_ENTRY _ZTI7S7157C4[];
extern  VTBL_ENTRY _ZTV7S7157C4[];
extern Class_Descriptor cd_S7157C5;
extern VTBL_ENTRY _ZTI7S7157C5[];
extern  VTBL_ENTRY _ZTV7S7157C5[];
extern Class_Descriptor cd_S7157C3;
extern VTBL_ENTRY _ZTI7S7157C3[];
extern  VTBL_ENTRY _ZTV7S7157C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7157C3[];
static Base_Class bases_S7157C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7157C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7157C4,    ABISELECT(24,16), //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7157C5,    ABISELECT(56,32), //bcp->offset
    37, //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
    3, //immediately_derived
  0, 1},
  {&cd_S7157C3,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI7S7157C1[];
extern void _ZN7S7157C22v8Ev();
extern void _ZN7S7157C22v9Ev();
extern void _ZN7S7157C23v10Ev();
extern void _ZN7S7157C12v1Ev();
extern void _ZN7S7157C12v2Ev();
extern void _ZN7S7157C12v3Ev();
extern void _ZN7S7157C12v4Ev();
extern void _ZN7S7157C12v5Ev();
extern void _ZN7S7157C12v6Ev();
extern void _ZN7S7157C12v7Ev();
extern void _ZN7S7157C43v11Ev();
extern void _ZN7S7157C43v12Ev();
extern void _ZN7S7157C43v13Ev();
extern void _ZN7S7157C43v14Ev();
extern void _ZN7S7157C33v19Ev();
extern void _ZN7S7157C33v20Ev();
extern void _ZN7S7157C33v21Ev();
extern void _ZN7S7157C33v22Ev();
extern void _ZN7S7157C33v23Ev();
extern void _ZN7S7157C53v15Ev();
extern void _ZN7S7157C53v16Ev();
extern void _ZN7S7157C53v17Ev();
extern void _ZN7S7157C53v18Ev();
static  VTBL_ENTRY vtc_S7157C1[] = {
  ABISELECT(56,32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C1[0]),
  (VTBL_ENTRY)&_ZN7S7157C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7157C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7157C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7157C12v7Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7157C1[0]),
  (VTBL_ENTRY)&_ZN7S7157C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7157C1[0]),
  (VTBL_ENTRY)&_ZN7S7157C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v18Ev,
};
extern VTBL_ENTRY _ZTV7S7157C1[];
extern void _ZN7S7157C43v11Ev();
extern void _ZN7S7157C43v12Ev();
extern void _ZN7S7157C43v13Ev();
extern void _ZN7S7157C43v14Ev();
extern void _ZN7S7157C33v19Ev();
extern void _ZN7S7157C33v20Ev();
extern void _ZN7S7157C33v21Ev();
extern void _ZN7S7157C33v22Ev();
extern void _ZN7S7157C33v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7157C3__7S7157C1[] = {
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7157C3[0]),
  (VTBL_ENTRY)&_ZN7S7157C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7157C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v21Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v22Ev,
  (VTBL_ENTRY)&_ZN7S7157C33v23Ev,
};
extern void _ZN7S7157C53v15Ev();
extern void _ZN7S7157C53v16Ev();
extern void _ZN7S7157C53v17Ev();
extern void _ZN7S7157C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7157C5__7S7157C3__7S7157C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7157C3[0]),
  (VTBL_ENTRY)&_ZN7S7157C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v17Ev,
  (VTBL_ENTRY)&_ZN7S7157C53v18Ev,
};
static  VTT_ENTRY vtt_S7157C1[] = {
  {&(_ZTV7S7157C1[5]),  5,47},
  {&(_ZTV7S7157C1[28]),  28,47},
  {&(_ZTV7S7157C1[28]),  28,47},
  {&(_ZTV7S7157C1[43]),  43,47},
  {&(_tg__ZTV7S7157C3__7S7157C1[8]),  8,17},
  {&(_tg__ZTV7S7157C3__7S7157C1[8]),  8,17},
  {&(_tg__ZTV7S7157C5__7S7157C3__7S7157C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S7157C1[];
extern  VTBL_ENTRY _ZTV7S7157C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7157C1[];
Class_Descriptor cd_S7157C1 = {  "S7157C1", // class name
  bases_S7157C1, 4,
  &(vtc_S7157C1[0]), // expected_vtbl_contents
  &(vtt_S7157C1[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7157C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7157C1),47, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7157C1),7, //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  S21088C4  {
  virtual void  v6(); // _ZN8S21088C42v6Ev
  virtual void  v7(); // _ZN8S21088C42v7Ev
  virtual void  v8(); // _ZN8S21088C42v8Ev
  ~S21088C4(); // tgen
  S21088C4(); // tgen
};
//SIG(-1 S21088C4) C1{ v1 v2 v3}


void  S21088C4 ::v6(){vfunc_called(this, "_ZN8S21088C42v6Ev");}
void  S21088C4 ::v7(){vfunc_called(this, "_ZN8S21088C42v7Ev");}
void  S21088C4 ::v8(){vfunc_called(this, "_ZN8S21088C42v8Ev");}
S21088C4 ::~S21088C4(){ note_dtor("S21088C4", this);} // tgen
S21088C4 ::S21088C4(){ note_ctor("S21088C4", this);} // tgen

static void Test_S21088C4()
{
  extern Class_Descriptor cd_S21088C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21088C4, buf);
    S21088C4 *dp, &lv = *(dp=new (buf) S21088C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21088C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21088C4)");
    test_class_info(&lv, &cd_S21088C4);
    dp->~S21088C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21088C4(Test_S21088C4, "S21088C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21088C4C1Ev();
extern void _ZN8S21088C4D1Ev();
Name_Map name_map_S21088C4[] = {
  NSPAIR(_ZN8S21088C4C1Ev),
  NSPAIR(_ZN8S21088C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21088C4[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
static  VTBL_ENTRY vtc_S21088C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21088C4[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S21088C4[];
extern  VTBL_ENTRY _ZTV8S21088C4[];
Class_Descriptor cd_S21088C4 = {  "S21088C4", // class name
  0,0,//no base classes
  &(vtc_S21088C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21088C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21088C4),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  S21088C3_nt  : virtual S21088C4 {
  virtual void  v9(); // _ZN11S21088C3_nt2v9Ev
  ~S21088C3_nt(); // tgen
  S21088C3_nt(); // tgen
};
//SIG(-1 S21088C3_nt) C1{ VBC2{ v2 v3 v4} v1}


void  S21088C3_nt ::v9(){vfunc_called(this, "_ZN11S21088C3_nt2v9Ev");}
S21088C3_nt ::~S21088C3_nt(){ note_dtor("S21088C3_nt", this);} // tgen
S21088C3_nt ::S21088C3_nt(){ note_ctor("S21088C3_nt", this);} // tgen

//skip512 S21088C3_nt

#else // __cplusplus

extern void _ZN11S21088C3_ntC1Ev();
extern void _ZN11S21088C3_ntD1Ev();
Name_Map name_map_S21088C3_nt[] = {
  NSPAIR(_ZN11S21088C3_ntC1Ev),
  NSPAIR(_ZN11S21088C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21088C4;
extern VTBL_ENTRY _ZTI8S21088C4[];
extern  VTBL_ENTRY _ZTV8S21088C4[];
static Base_Class bases_S21088C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21088C4,    0, //bcp->offset
    -1, //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 _ZTI11S21088C3_nt[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
static  VTBL_ENTRY vtc_S21088C3_nt[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV11S21088C3_nt[];
static  VTT_ENTRY vtt_S21088C3_nt[] = {
  {&(_ZTV11S21088C3_nt[6]),  6,10},
  {&(_ZTV11S21088C3_nt[6]),  6,10},
};
extern VTBL_ENTRY _ZTI11S21088C3_nt[];
VTBL_ENTRY *P__ZTI11S21088C3_nt = _ZTI11S21088C3_nt; 
extern  VTBL_ENTRY _ZTV11S21088C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C3_nt[];
Class_Descriptor cd_S21088C3_nt = {  "S21088C3_nt", // class name
  bases_S21088C3_nt, 1,
  &(vtc_S21088C3_nt[0]), // expected_vtbl_contents
  &(vtt_S21088C3_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S21088C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S21088C3_nt),10, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S21088C3_nt),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  S21088C2_nt  : virtual S21088C3_nt {
  void *s21088c2f0;
  virtual void  v10(); // _ZN11S21088C2_nt3v10Ev
  virtual void  v11(); // _ZN11S21088C2_nt3v11Ev
  ~S21088C2_nt(); // tgen
  S21088C2_nt(); // tgen
};
//SIG(-1 S21088C2_nt) C1{ VBC2{ VBC3{ v3 v4 v5} v6} v1 v2 Fp}


void  S21088C2_nt ::v10(){vfunc_called(this, "_ZN11S21088C2_nt3v10Ev");}
void  S21088C2_nt ::v11(){vfunc_called(this, "_ZN11S21088C2_nt3v11Ev");}
S21088C2_nt ::~S21088C2_nt(){ note_dtor("S21088C2_nt", this);} // tgen
S21088C2_nt ::S21088C2_nt(){ note_ctor("S21088C2_nt", this);} // tgen

//skip512 S21088C2_nt

#else // __cplusplus

extern void _ZN11S21088C2_ntC1Ev();
extern void _ZN11S21088C2_ntD1Ev();
Name_Map name_map_S21088C2_nt[] = {
  NSPAIR(_ZN11S21088C2_ntC1Ev),
  NSPAIR(_ZN11S21088C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21088C4;
extern VTBL_ENTRY _ZTI8S21088C4[];
extern  VTBL_ENTRY _ZTV8S21088C4[];
extern Class_Descriptor cd_S21088C3_nt;
extern VTBL_ENTRY _ZTI11S21088C3_nt[];
extern  VTBL_ENTRY _ZTV11S21088C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C3_nt[];
static Base_Class bases_S21088C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21088C4,    0, //bcp->offset
    -1, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21088C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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 _ZTI11S21088C2_nt[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
extern void _ZN11S21088C2_nt3v10Ev();
extern void _ZN11S21088C2_nt3v11Ev();
static  VTBL_ENTRY vtc_S21088C2_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v11Ev,
};
extern VTBL_ENTRY _ZTV11S21088C2_nt[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S21088C3_nt__11S21088C2_nt[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
};
static  VTT_ENTRY vtt_S21088C2_nt[] = {
  {&(_ZTV11S21088C2_nt[8]),  8,14},
  {&(_ZTV11S21088C2_nt[8]),  8,14},
  {&(_ZTV11S21088C2_nt[8]),  8,14},
  {&(_tg__ZTV11S21088C3_nt__11S21088C2_nt[6]),  6,10},
  {&(_tg__ZTV11S21088C3_nt__11S21088C2_nt[6]),  6,10},
};
extern VTBL_ENTRY _ZTI11S21088C2_nt[];
VTBL_ENTRY *P__ZTI11S21088C2_nt = _ZTI11S21088C2_nt; 
extern  VTBL_ENTRY _ZTV11S21088C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C2_nt[];
Class_Descriptor cd_S21088C2_nt = {  "S21088C2_nt", // class name
  bases_S21088C2_nt, 2,
  &(vtc_S21088C2_nt[0]), // expected_vtbl_contents
  &(vtt_S21088C2_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S21088C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S21088C2_nt),14, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S21088C2_nt),5, //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  S21088C5  : S21088C3_nt {
  ::S20092C8 s21088c5f0;
  void *s21088c5f1;
  virtual void  v12(); // _ZN8S21088C53v12Ev
  virtual void  v13(); // _ZN8S21088C53v13Ev
  virtual void  v14(); // _ZN8S21088C53v14Ev
  virtual void  v15(); // _ZN8S21088C53v15Ev
  ~S21088C5(); // tgen
  S21088C5(); // tgen
};
//SIG(-1 S21088C5) C1{ BC2{ VBC3{ v5 v6 v7} v8} v1 v2 v3 v4 FC4{ v9 v10 v11 v12 Fp} Fp}


void  S21088C5 ::v12(){vfunc_called(this, "_ZN8S21088C53v12Ev");}
void  S21088C5 ::v13(){vfunc_called(this, "_ZN8S21088C53v13Ev");}
void  S21088C5 ::v14(){vfunc_called(this, "_ZN8S21088C53v14Ev");}
void  S21088C5 ::v15(){vfunc_called(this, "_ZN8S21088C53v15Ev");}
S21088C5 ::~S21088C5(){ note_dtor("S21088C5", this);} // tgen
S21088C5 ::S21088C5(){ note_ctor("S21088C5", this);} // tgen

static void Test_S21088C5()
{
  extern Class_Descriptor cd_S21088C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21088C5, buf);
    S21088C5 *dp, &lv = *(dp=new (buf) S21088C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21088C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21088C5)");
    check_base_class_offset(lv, (S21088C4*)(S21088C3_nt*), 0, "S21088C5");
    check_base_class_offset(lv, (S21088C3_nt*), 0, "S21088C5");
    check_field_offset(lv, s21088c5f0, ABISELECT(8,4), "S21088C5.s21088c5f0");
    check_field_offset(lv, s21088c5f1, ABISELECT(24,12), "S21088C5.s21088c5f1");
    test_class_info(&lv, &cd_S21088C5);
    dp->~S21088C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21088C5(Test_S21088C5, "S21088C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21088C5C1Ev();
extern void _ZN8S21088C5D1Ev();
Name_Map name_map_S21088C5[] = {
  NSPAIR(_ZN8S21088C5C1Ev),
  NSPAIR(_ZN8S21088C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21088C4;
extern VTBL_ENTRY _ZTI8S21088C4[];
extern  VTBL_ENTRY _ZTV8S21088C4[];
extern Class_Descriptor cd_S21088C3_nt;
extern VTBL_ENTRY _ZTI11S21088C3_nt[];
extern  VTBL_ENTRY _ZTV11S21088C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C3_nt[];
static Base_Class bases_S21088C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21088C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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_S21088C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S21088C5[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
extern void _ZN8S21088C53v12Ev();
extern void _ZN8S21088C53v13Ev();
extern void _ZN8S21088C53v14Ev();
extern void _ZN8S21088C53v15Ev();
static  VTBL_ENTRY vtc_S21088C5[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21088C5[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S21088C53v12Ev,
  (VTBL_ENTRY)&_ZN8S21088C53v13Ev,
  (VTBL_ENTRY)&_ZN8S21088C53v14Ev,
  (VTBL_ENTRY)&_ZN8S21088C53v15Ev,
};
extern VTBL_ENTRY _ZTV8S21088C5[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S21088C3_nt__8S21088C5[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
};
static  VTT_ENTRY vtt_S21088C5[] = {
  {&(_ZTV8S21088C5[6]),  6,14},
  {&(_tg__ZTV11S21088C3_nt__8S21088C5[6]),  6,10},
  {&(_tg__ZTV11S21088C3_nt__8S21088C5[6]),  6,10},
  {&(_ZTV8S21088C5[6]),  6,14},
};
extern VTBL_ENTRY _ZTI8S21088C5[];
extern  VTBL_ENTRY _ZTV8S21088C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21088C5[];
Class_Descriptor cd_S21088C5 = {  "S21088C5", // class name
  bases_S21088C5, 2,
  &(vtc_S21088C5[0]), // expected_vtbl_contents
  &(vtt_S21088C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21088C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21088C5),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21088C5),4, //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  S21088C1  : virtual S21088C2_nt {
  char  :0;
  int s21088c1f1;
  void *s21088c1f2[2];
  long double s21088c1f3;
  ::S21088C5 s21088c1f4;
  virtual void  v1(); // _ZN8S21088C12v1Ev
  virtual void  v2(); // _ZN8S21088C12v2Ev
  virtual void  v3(); // _ZN8S21088C12v3Ev
  virtual void  v4(); // _ZN8S21088C12v4Ev
  virtual void  v5(); // _ZN8S21088C12v5Ev
  ~S21088C1(); // tgen
  S21088C1(); // tgen
};
//SIG(1 S21088C1) C1{ VBC2{ VBC3{ VBC4{ v6 v7 v8} v9} v10 v11 Fp} v1 v2 v3 v4 v5 Fc:0 Fi Fp[2] FD FC5{ BC3 v12 v13 v14 v15 FC6{ v16 v17 v18 v19 Fp} Fp}}


void  S21088C1 ::v1(){vfunc_called(this, "_ZN8S21088C12v1Ev");}
void  S21088C1 ::v2(){vfunc_called(this, "_ZN8S21088C12v2Ev");}
void  S21088C1 ::v3(){vfunc_called(this, "_ZN8S21088C12v3Ev");}
void  S21088C1 ::v4(){vfunc_called(this, "_ZN8S21088C12v4Ev");}
void  S21088C1 ::v5(){vfunc_called(this, "_ZN8S21088C12v5Ev");}
S21088C1 ::~S21088C1(){ note_dtor("S21088C1", this);} // tgen
S21088C1 ::S21088C1(){ note_ctor("S21088C1", this);} // tgen

static void Test_S21088C1()
{
  extern Class_Descriptor cd_S21088C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S21088C1, buf);
    S21088C1 *dp, &lv = *(dp=new (buf) S21088C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S21088C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21088C1)");
    check_base_class_offset(lv, (S21088C4*)(S21088C3_nt*), 0, "S21088C1");
    check_base_class_offset(lv, (S21088C3_nt*)(S21088C2_nt*), 0, "S21088C1");
    check_base_class_offset(lv, (S21088C2_nt*), ABISELECT(80,44), "S21088C1");
    check_field_offset(lv, s21088c1f1, ABISELECT(8,4), "S21088C1.s21088c1f1");
    check_field_offset(lv, s21088c1f2, ABISELECT(16,8), "S21088C1.s21088c1f2");
    check_field_offset(lv, s21088c1f3, ABISELECT(32,16), "S21088C1.s21088c1f3");
    check_field_offset(lv, s21088c1f4, ABISELECT(48,28), "S21088C1.s21088c1f4");
    test_class_info(&lv, &cd_S21088C1);
    dp->~S21088C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21088C1(Test_S21088C1, "S21088C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S21088C1C1Ev();
extern void _ZN8S21088C1D1Ev();
Name_Map name_map_S21088C1[] = {
  NSPAIR(_ZN8S21088C1C1Ev),
  NSPAIR(_ZN8S21088C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21088C4;
extern VTBL_ENTRY _ZTI8S21088C4[];
extern  VTBL_ENTRY _ZTV8S21088C4[];
extern Class_Descriptor cd_S21088C3_nt;
extern VTBL_ENTRY _ZTI11S21088C3_nt[];
extern  VTBL_ENTRY _ZTV11S21088C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C3_nt[];
extern Class_Descriptor cd_S21088C2_nt;
extern VTBL_ENTRY _ZTI11S21088C2_nt[];
extern  VTBL_ENTRY _ZTV11S21088C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21088C2_nt[];
static Base_Class bases_S21088C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21088C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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_S21088C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21088C2_nt,    ABISELECT(80,44), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI8S21088C1[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
extern void _ZN8S21088C12v1Ev();
extern void _ZN8S21088C12v2Ev();
extern void _ZN8S21088C12v3Ev();
extern void _ZN8S21088C12v4Ev();
extern void _ZN8S21088C12v5Ev();
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
extern void _ZN11S21088C2_nt3v10Ev();
extern void _ZN11S21088C2_nt3v11Ev();
static  VTBL_ENTRY vtc_S21088C1[] = {
  0,
  ABISELECT(80,44),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21088C1[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S21088C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21088C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21088C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21088C12v4Ev,
  (VTBL_ENTRY)&_ZN8S21088C12v5Ev,
  0,
  0,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21088C1[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v11Ev,
};
extern VTBL_ENTRY _ZTV8S21088C1[];
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
extern void _ZN11S21088C2_nt3v10Ev();
extern void _ZN11S21088C2_nt3v11Ev();
static  VTBL_ENTRY _tg__ZTV11S21088C2_nt__8S21088C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S21088C2_nt3v11Ev,
};
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S21088C3_nt__11S21088C2_nt__8S21088C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI11S21088C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
};
extern void _ZN8S21088C42v6Ev();
extern void _ZN8S21088C42v7Ev();
extern void _ZN8S21088C42v8Ev();
extern void _ZN11S21088C3_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S21088C3_nt__8S21088C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21088C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21088C42v6Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v7Ev,
  (VTBL_ENTRY)&_ZN8S21088C42v8Ev,
  (VTBL_ENTRY)&_ZN11S21088C3_nt2v9Ev,
};
static  VTT_ENTRY vtt_S21088C1[] = {
  {&(_ZTV8S21088C1[9]),  9,34},
  {&(_ZTV8S21088C1[28]),  28,34},
  {&(_ZTV8S21088C1[9]),  9,34},
  {&(_ZTV8S21088C1[9]),  9,34},
  {&(_tg__ZTV11S21088C2_nt__8S21088C1[8]),  8,14},
  {&(_tg__ZTV11S21088C3_nt__11S21088C2_nt__8S21088C1[7]),  7,11},
  {&(_tg__ZTV11S21088C3_nt__11S21088C2_nt__8S21088C1[7]),  7,11},
  {&(_tg__ZTV11S21088C3_nt__8S21088C1[6]),  6,10},
  {&(_tg__ZTV11S21088C3_nt__8S21088C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S21088C1[];
extern  VTBL_ENTRY _ZTV8S21088C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21088C1[];
Class_Descriptor cd_S21088C1 = {  "S21088C1", // class name
  bases_S21088C1, 3,
  &(vtc_S21088C1[0]), // expected_vtbl_contents
  &(vtt_S21088C1[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S21088C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21088C1),34, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21088C1),9, //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  S20246C2  {
  void *s20246c2f0;
  virtual void  v5(); // _ZN8S20246C22v5Ev
  virtual void  v6(); // _ZN8S20246C22v6Ev
  virtual void  v7(); // _ZN8S20246C22v7Ev
  virtual void  v8(); // _ZN8S20246C22v8Ev
  ~S20246C2(); // tgen
  S20246C2(); // tgen
};
//SIG(-1 S20246C2) C1{ v1 v2 v3 v4 Fp}


void  S20246C2 ::v5(){vfunc_called(this, "_ZN8S20246C22v5Ev");}
void  S20246C2 ::v6(){vfunc_called(this, "_ZN8S20246C22v6Ev");}
void  S20246C2 ::v7(){vfunc_called(this, "_ZN8S20246C22v7Ev");}
void  S20246C2 ::v8(){vfunc_called(this, "_ZN8S20246C22v8Ev");}
S20246C2 ::~S20246C2(){ note_dtor("S20246C2", this);} // tgen
S20246C2 ::S20246C2(){ note_ctor("S20246C2", this);} // tgen

static void Test_S20246C2()
{
  extern Class_Descriptor cd_S20246C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20246C2, buf);
    S20246C2 *dp, &lv = *(dp=new (buf) S20246C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20246C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20246C2)");
    check_field_offset(lv, s20246c2f0, ABISELECT(8,4), "S20246C2.s20246c2f0");
    test_class_info(&lv, &cd_S20246C2);
    dp->~S20246C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20246C2(Test_S20246C2, "S20246C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20246C2C1Ev();
extern void _ZN8S20246C2D1Ev();
Name_Map name_map_S20246C2[] = {
  NSPAIR(_ZN8S20246C2C1Ev),
  NSPAIR(_ZN8S20246C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20246C2[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
static  VTBL_ENTRY vtc_S20246C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C2[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
};
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
Class_Descriptor cd_S20246C2 = {  "S20246C2", // class name
  0,0,//no base classes
  &(vtc_S20246C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20246C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20246C2),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  S20246C4  : S20246C2 {
  void *s20246c4f0;
  __tsi64 s20246c4f1;
  virtual void  v9(); // _ZN8S20246C42v9Ev
  virtual void  v10(); // _ZN8S20246C43v10Ev
  ~S20246C4(); // tgen
  S20246C4(); // tgen
};
//SIG(-1 S20246C4) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S20246C4 ::v9(){vfunc_called(this, "_ZN8S20246C42v9Ev");}
void  S20246C4 ::v10(){vfunc_called(this, "_ZN8S20246C43v10Ev");}
S20246C4 ::~S20246C4(){ note_dtor("S20246C4", this);} // tgen
S20246C4 ::S20246C4(){ note_ctor("S20246C4", this);} // tgen

static void Test_S20246C4()
{
  extern Class_Descriptor cd_S20246C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20246C4, buf);
    S20246C4 *dp, &lv = *(dp=new (buf) S20246C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20246C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20246C4)");
    check_base_class_offset(lv, (S20246C2*), 0, "S20246C4");
    check_field_offset(lv, s20246c4f0, ABISELECT(16,8), "S20246C4.s20246c4f0");
    check_field_offset(lv, s20246c4f1, ABISELECT(24,12), "S20246C4.s20246c4f1");
    test_class_info(&lv, &cd_S20246C4);
    dp->~S20246C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20246C4(Test_S20246C4, "S20246C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20246C4C1Ev();
extern void _ZN8S20246C4D1Ev();
Name_Map name_map_S20246C4[] = {
  NSPAIR(_ZN8S20246C4C1Ev),
  NSPAIR(_ZN8S20246C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
static Base_Class bases_S20246C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20246C4[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C42v9Ev();
extern void _ZN8S20246C43v10Ev();
static  VTBL_ENTRY vtc_S20246C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C4[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20246C43v10Ev,
};
extern VTBL_ENTRY _ZTI8S20246C4[];
extern  VTBL_ENTRY _ZTV8S20246C4[];
Class_Descriptor cd_S20246C4 = {  "S20246C4", // class name
  bases_S20246C4, 1,
  &(vtc_S20246C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20246C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20246C4),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  S20246C5  : S20246C2 {
  int s20246c5f0;
  virtual  ~S20246C5(); // _ZN8S20246C5D1Ev
  virtual void  v11(); // _ZN8S20246C53v11Ev
  virtual void  v12(); // _ZN8S20246C53v12Ev
  virtual void  v13(); // _ZN8S20246C53v13Ev
  virtual void  v14(); // _ZN8S20246C53v14Ev
  S20246C5(); // tgen
};
//SIG(-1 S20246C5) C1{ BC2{ v5 v6 v7 v8 Fp} vd v1 v2 v3 v4 Fi}


 S20246C5 ::~S20246C5(){ note_dtor("S20246C5", this);}
void  S20246C5 ::v11(){vfunc_called(this, "_ZN8S20246C53v11Ev");}
void  S20246C5 ::v12(){vfunc_called(this, "_ZN8S20246C53v12Ev");}
void  S20246C5 ::v13(){vfunc_called(this, "_ZN8S20246C53v13Ev");}
void  S20246C5 ::v14(){vfunc_called(this, "_ZN8S20246C53v14Ev");}
S20246C5 ::S20246C5(){ note_ctor("S20246C5", this);} // tgen

static void Test_S20246C5()
{
  extern Class_Descriptor cd_S20246C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20246C5, buf);
    S20246C5 *dp, &lv = *(dp=new (buf) S20246C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20246C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20246C5)");
    check_base_class_offset(lv, (S20246C2*), 0, "S20246C5");
    check_field_offset(lv, s20246c5f0, ABISELECT(16,8), "S20246C5.s20246c5f0");
    test_class_info(&lv, &cd_S20246C5);
    dp->~S20246C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20246C5(Test_S20246C5, "S20246C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20246C5C1Ev();
extern void _ZN8S20246C5D1Ev();
Name_Map name_map_S20246C5[] = {
  NSPAIR(_ZN8S20246C5C1Ev),
  NSPAIR(_ZN8S20246C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
static Base_Class bases_S20246C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20246C5[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C5D1Ev();
extern void _ZN8S20246C5D0Ev();
extern void _ZN8S20246C53v11Ev();
extern void _ZN8S20246C53v12Ev();
extern void _ZN8S20246C53v13Ev();
extern void _ZN8S20246C53v14Ev();
static  VTBL_ENTRY vtc_S20246C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C5[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20246C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v14Ev,
};
extern VTBL_ENTRY _ZTI8S20246C5[];
extern  VTBL_ENTRY _ZTV8S20246C5[];
Class_Descriptor cd_S20246C5 = {  "S20246C5", // class name
  bases_S20246C5, 1,
  &(vtc_S20246C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20246C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20246C5),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  S20246C3  : virtual S20246C4 , S20246C5 {
  char s20246c3f0[7];
  virtual  ~S20246C3(); // _ZN8S20246C3D2Ev
  virtual void  v15(); // _ZN8S20246C33v15Ev
  virtual void  v16(); // _ZN8S20246C33v16Ev
  virtual void  v17(); // _ZN8S20246C33v17Ev
  virtual void  v18(); // _ZN8S20246C33v18Ev
  virtual void  v19(); // _ZN8S20246C33v19Ev
  S20246C3(); // tgen
};
//SIG(-1 S20246C3) C1{ VBC2{ BC3{ v6 v7 v8 v9 Fp} v10 v11 Fp FL} BC4{ BC3 vd v12 v13 v14 v15 Fi} vd v1 v2 v3 v4 v5 Fc[7]}


 S20246C3 ::~S20246C3(){ note_dtor("S20246C3", this);}
void  S20246C3 ::v15(){vfunc_called(this, "_ZN8S20246C33v15Ev");}
void  S20246C3 ::v16(){vfunc_called(this, "_ZN8S20246C33v16Ev");}
void  S20246C3 ::v17(){vfunc_called(this, "_ZN8S20246C33v17Ev");}
void  S20246C3 ::v18(){vfunc_called(this, "_ZN8S20246C33v18Ev");}
void  S20246C3 ::v19(){vfunc_called(this, "_ZN8S20246C33v19Ev");}
S20246C3 ::S20246C3(){ note_ctor("S20246C3", this);} // tgen

static void Test_S20246C3()
{
  extern Class_Descriptor cd_S20246C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20246C3, buf);
    S20246C3 *dp, &lv = *(dp=new (buf) S20246C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20246C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20246C3)");
    check_base_class_offset(lv, (S20246C2*)(S20246C4*), ABISELECT(32,20), "S20246C3");
    check_base_class_offset(lv, (S20246C4*), ABISELECT(32,20), "S20246C3");
    check_base_class_offset(lv, (S20246C2*)(S20246C5*), 0, "S20246C3");
    check_base_class_offset(lv, (S20246C5*), 0, "S20246C3");
    check_field_offset(lv, s20246c3f0, ABISELECT(20,12), "S20246C3.s20246c3f0");
    test_class_info(&lv, &cd_S20246C3);
    dp->~S20246C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20246C3(Test_S20246C3, "S20246C3", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20246C3C1Ev();
extern void _ZN8S20246C3D2Ev();
Name_Map name_map_S20246C3[] = {
  NSPAIR(_ZN8S20246C3C1Ev),
  NSPAIR(_ZN8S20246C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
extern Class_Descriptor cd_S20246C4;
extern VTBL_ENTRY _ZTI8S20246C4[];
extern  VTBL_ENTRY _ZTV8S20246C4[];
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
extern Class_Descriptor cd_S20246C5;
extern VTBL_ENTRY _ZTI8S20246C5[];
extern  VTBL_ENTRY _ZTV8S20246C5[];
static Base_Class bases_S20246C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20246C2,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20246C4,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //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_S20246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20246C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20246C3[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C3D1Ev();
extern void _ZN8S20246C3D0Ev();
extern void _ZN8S20246C53v11Ev();
extern void _ZN8S20246C53v12Ev();
extern void _ZN8S20246C53v13Ev();
extern void _ZN8S20246C53v14Ev();
extern void _ZN8S20246C33v15Ev();
extern void _ZN8S20246C33v16Ev();
extern void _ZN8S20246C33v17Ev();
extern void _ZN8S20246C33v18Ev();
extern void _ZN8S20246C33v19Ev();
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C42v9Ev();
extern void _ZN8S20246C43v10Ev();
static  VTBL_ENTRY vtc_S20246C3[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C3[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20246C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20246C3[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20246C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S20246C3[];
static  VTT_ENTRY vtt_S20246C3[] = {
  {&(_ZTV8S20246C3[3]),  3,32},
  {&(_ZTV8S20246C3[26]),  26,32},
};
extern VTBL_ENTRY _ZTI8S20246C3[];
extern  VTBL_ENTRY _ZTV8S20246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20246C3[];
Class_Descriptor cd_S20246C3 = {  "S20246C3", // class name
  bases_S20246C3, 4,
  &(vtc_S20246C3[0]), // expected_vtbl_contents
  &(vtt_S20246C3[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20246C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20246C3),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20246C3),2, //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  S20246C1  : virtual S20246C2 , S20246C3 {
  virtual  ~S20246C1(); // _ZN8S20246C1D2Ev
  virtual void  v1(); // _ZN8S20246C12v1Ev
  virtual void  v2(); // _ZN8S20246C12v2Ev
  virtual void  v3(); // _ZN8S20246C12v3Ev
  virtual void  v4(); // _ZN8S20246C12v4Ev
  S20246C1(); // tgen
};
//SIG(1 S20246C1) C1{ VBC2{ v5 v6 v7 v8 Fp} BC3{ VBC4{ BC2 v9 v10 Fp FL} BC5{ BC2 vd v11 v12 v13 v14 Fi} vd v15 v16 v17 v18 v19 Fc[7]} vd v1 v2 v3 v4}


 S20246C1 ::~S20246C1(){ note_dtor("S20246C1", this);}
void  S20246C1 ::v1(){vfunc_called(this, "_ZN8S20246C12v1Ev");}
void  S20246C1 ::v2(){vfunc_called(this, "_ZN8S20246C12v2Ev");}
void  S20246C1 ::v3(){vfunc_called(this, "_ZN8S20246C12v3Ev");}
void  S20246C1 ::v4(){vfunc_called(this, "_ZN8S20246C12v4Ev");}
S20246C1 ::S20246C1(){ note_ctor("S20246C1", this);} // tgen

static void Test_S20246C1()
{
  extern Class_Descriptor cd_S20246C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20246C1, buf);
    S20246C1 *dp, &lv = *(dp=new (buf) S20246C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20246C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20246C1)");
    /*is_ambiguous_... S20246C1::S20246C2 */ AMB_check_base_class_offset(lv, (S20246C2*), ABISELECT(32,20), "S20246C1");
    check_base_class_offset(lv, (S20246C2*)(S20246C4*), ABISELECT(48,28), "S20246C1");
    check_base_class_offset(lv, (S20246C4*)(S20246C3*), ABISELECT(48,28), "S20246C1");
    check_base_class_offset(lv, (S20246C2*)(S20246C5*)(S20246C3*), 0, "S20246C1");
    check_base_class_offset(lv, (S20246C5*)(S20246C3*), 0, "S20246C1");
    check_base_class_offset(lv, (S20246C3*), 0, "S20246C1");
    test_class_info(&lv, &cd_S20246C1);
    dp->~S20246C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20246C1(Test_S20246C1, "S20246C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S20246C1C1Ev();
extern void _ZN8S20246C1D2Ev();
Name_Map name_map_S20246C1[] = {
  NSPAIR(_ZN8S20246C1C1Ev),
  NSPAIR(_ZN8S20246C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
extern Class_Descriptor cd_S20246C4;
extern VTBL_ENTRY _ZTI8S20246C4[];
extern  VTBL_ENTRY _ZTV8S20246C4[];
extern Class_Descriptor cd_S20246C2;
extern VTBL_ENTRY _ZTI8S20246C2[];
extern  VTBL_ENTRY _ZTV8S20246C2[];
extern Class_Descriptor cd_S20246C5;
extern VTBL_ENTRY _ZTI8S20246C5[];
extern  VTBL_ENTRY _ZTV8S20246C5[];
extern Class_Descriptor cd_S20246C3;
extern VTBL_ENTRY _ZTI8S20246C3[];
extern  VTBL_ENTRY _ZTV8S20246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20246C3[];
static Base_Class bases_S20246C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20246C2,    ABISELECT(32,20), //bcp->offset
    23, //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_S20246C2,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20246C4,    ABISELECT(48,28), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20246C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20246C3,    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 _ZTI8S20246C1[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C1D1Ev();
extern void _ZN8S20246C1D0Ev();
extern void _ZN8S20246C53v11Ev();
extern void _ZN8S20246C53v12Ev();
extern void _ZN8S20246C53v13Ev();
extern void _ZN8S20246C53v14Ev();
extern void _ZN8S20246C33v15Ev();
extern void _ZN8S20246C33v16Ev();
extern void _ZN8S20246C33v17Ev();
extern void _ZN8S20246C33v18Ev();
extern void _ZN8S20246C33v19Ev();
extern void _ZN8S20246C12v1Ev();
extern void _ZN8S20246C12v2Ev();
extern void _ZN8S20246C12v3Ev();
extern void _ZN8S20246C12v4Ev();
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C42v9Ev();
extern void _ZN8S20246C43v10Ev();
static  VTBL_ENTRY vtc_S20246C1[] = {
  ABISELECT(32,20),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C1[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20246C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v19Ev,
  (VTBL_ENTRY)&_ZN8S20246C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20246C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20246C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20246C12v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20246C1[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20246C1[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20246C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S20246C1[];
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C3D1Ev();
extern void _ZN8S20246C3D0Ev();
extern void _ZN8S20246C53v11Ev();
extern void _ZN8S20246C53v12Ev();
extern void _ZN8S20246C53v13Ev();
extern void _ZN8S20246C53v14Ev();
extern void _ZN8S20246C33v15Ev();
extern void _ZN8S20246C33v16Ev();
extern void _ZN8S20246C33v17Ev();
extern void _ZN8S20246C33v18Ev();
extern void _ZN8S20246C33v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20246C3__8S20246C1[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20246C3[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20246C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20246C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v16Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v17Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v18Ev,
  (VTBL_ENTRY)&_ZN8S20246C33v19Ev,
};
extern void _ZN8S20246C22v5Ev();
extern void _ZN8S20246C22v6Ev();
extern void _ZN8S20246C22v7Ev();
extern void _ZN8S20246C22v8Ev();
extern void _ZN8S20246C42v9Ev();
extern void _ZN8S20246C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20246C4__8S20246C3__8S20246C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20246C3[0]),
  (VTBL_ENTRY)&_ZN8S20246C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20246C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20246C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20246C43v10Ev,
};
static  VTT_ENTRY vtt_S20246C1[] = {
  {&(_ZTV8S20246C1[4]),  4,47},
  {&(_tg__ZTV8S20246C3__8S20246C1[3]),  3,18},
  {&(_tg__ZTV8S20246C4__8S20246C3__8S20246C1[8]),  8,14},
  {&(_ZTV8S20246C1[29]),  29,47},
  {&(_ZTV8S20246C1[41]),  41,47},
};
extern VTBL_ENTRY _ZTI8S20246C1[];
extern  VTBL_ENTRY _ZTV8S20246C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20246C1[];
Class_Descriptor cd_S20246C1 = {  "S20246C1", // class name
  bases_S20246C1, 6,
  &(vtc_S20246C1[0]), // expected_vtbl_contents
  &(vtt_S20246C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S20246C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20246C1),47, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20246C1),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20549C4  {
  void *s20549c4f0;
  virtual void  v5(); // _ZN8S20549C42v5Ev
  virtual void  v6(); // _ZN8S20549C42v6Ev
  virtual void  v7(); // _ZN8S20549C42v7Ev
  virtual void  v8(); // _ZN8S20549C42v8Ev
  ~S20549C4(); // tgen
  S20549C4(); // tgen
};
//SIG(-1 S20549C4) C1{ v1 v2 v3 v4 Fp}


void  S20549C4 ::v5(){vfunc_called(this, "_ZN8S20549C42v5Ev");}
void  S20549C4 ::v6(){vfunc_called(this, "_ZN8S20549C42v6Ev");}
void  S20549C4 ::v7(){vfunc_called(this, "_ZN8S20549C42v7Ev");}
void  S20549C4 ::v8(){vfunc_called(this, "_ZN8S20549C42v8Ev");}
S20549C4 ::~S20549C4(){ note_dtor("S20549C4", this);} // tgen
S20549C4 ::S20549C4(){ note_ctor("S20549C4", this);} // tgen

static void Test_S20549C4()
{
  extern Class_Descriptor cd_S20549C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20549C4, buf);
    S20549C4 *dp, &lv = *(dp=new (buf) S20549C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20549C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20549C4)");
    check_field_offset(lv, s20549c4f0, ABISELECT(8,4), "S20549C4.s20549c4f0");
    test_class_info(&lv, &cd_S20549C4);
    dp->~S20549C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20549C4(Test_S20549C4, "S20549C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20549C4C1Ev();
extern void _ZN8S20549C4D1Ev();
Name_Map name_map_S20549C4[] = {
  NSPAIR(_ZN8S20549C4C1Ev),
  NSPAIR(_ZN8S20549C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20549C4[];
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
static  VTBL_ENTRY vtc_S20549C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C4[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
Class_Descriptor cd_S20549C4 = {  "S20549C4", // class name
  0,0,//no base classes
  &(vtc_S20549C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20549C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20549C4),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  S20549C3  : S20549C4 {
  void *s20549c3f0;
  __tsi64 s20549c3f1;
  virtual void  v9(); // _ZN8S20549C32v9Ev
  virtual void  v10(); // _ZN8S20549C33v10Ev
  ~S20549C3(); // tgen
  S20549C3(); // tgen
};
//SIG(-1 S20549C3) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S20549C3 ::v9(){vfunc_called(this, "_ZN8S20549C32v9Ev");}
void  S20549C3 ::v10(){vfunc_called(this, "_ZN8S20549C33v10Ev");}
S20549C3 ::~S20549C3(){ note_dtor("S20549C3", this);} // tgen
S20549C3 ::S20549C3(){ note_ctor("S20549C3", this);} // tgen

static void Test_S20549C3()
{
  extern Class_Descriptor cd_S20549C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20549C3, buf);
    S20549C3 *dp, &lv = *(dp=new (buf) S20549C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20549C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20549C3)");
    check_base_class_offset(lv, (S20549C4*), 0, "S20549C3");
    check_field_offset(lv, s20549c3f0, ABISELECT(16,8), "S20549C3.s20549c3f0");
    check_field_offset(lv, s20549c3f1, ABISELECT(24,12), "S20549C3.s20549c3f1");
    test_class_info(&lv, &cd_S20549C3);
    dp->~S20549C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20549C3(Test_S20549C3, "S20549C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20549C3C1Ev();
extern void _ZN8S20549C3D1Ev();
Name_Map name_map_S20549C3[] = {
  NSPAIR(_ZN8S20549C3C1Ev),
  NSPAIR(_ZN8S20549C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
static Base_Class bases_S20549C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20549C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20549C3[];
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C32v9Ev();
extern void _ZN8S20549C33v10Ev();
static  VTBL_ENTRY vtc_S20549C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C3[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20549C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S20549C3[];
extern  VTBL_ENTRY _ZTV8S20549C3[];
Class_Descriptor cd_S20549C3 = {  "S20549C3", // class name
  bases_S20549C3, 1,
  &(vtc_S20549C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20549C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20549C3),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  S20549C5  : S20549C4 {
  int s20549c5f0;
  virtual  ~S20549C5(); // _ZN8S20549C5D1Ev
  virtual void  v11(); // _ZN8S20549C53v11Ev
  virtual void  v12(); // _ZN8S20549C53v12Ev
  virtual void  v13(); // _ZN8S20549C53v13Ev
  virtual void  v14(); // _ZN8S20549C53v14Ev
  S20549C5(); // tgen
};
//SIG(-1 S20549C5) C1{ BC2{ v5 v6 v7 v8 Fp} vd v1 v2 v3 v4 Fi}


 S20549C5 ::~S20549C5(){ note_dtor("S20549C5", this);}
void  S20549C5 ::v11(){vfunc_called(this, "_ZN8S20549C53v11Ev");}
void  S20549C5 ::v12(){vfunc_called(this, "_ZN8S20549C53v12Ev");}
void  S20549C5 ::v13(){vfunc_called(this, "_ZN8S20549C53v13Ev");}
void  S20549C5 ::v14(){vfunc_called(this, "_ZN8S20549C53v14Ev");}
S20549C5 ::S20549C5(){ note_ctor("S20549C5", this);} // tgen

static void Test_S20549C5()
{
  extern Class_Descriptor cd_S20549C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20549C5, buf);
    S20549C5 *dp, &lv = *(dp=new (buf) S20549C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20549C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20549C5)");
    check_base_class_offset(lv, (S20549C4*), 0, "S20549C5");
    check_field_offset(lv, s20549c5f0, ABISELECT(16,8), "S20549C5.s20549c5f0");
    test_class_info(&lv, &cd_S20549C5);
    dp->~S20549C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20549C5(Test_S20549C5, "S20549C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20549C5C1Ev();
extern void _ZN8S20549C5D1Ev();
Name_Map name_map_S20549C5[] = {
  NSPAIR(_ZN8S20549C5C1Ev),
  NSPAIR(_ZN8S20549C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
static Base_Class bases_S20549C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20549C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20549C5[];
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C5D1Ev();
extern void _ZN8S20549C5D0Ev();
extern void _ZN8S20549C53v11Ev();
extern void _ZN8S20549C53v12Ev();
extern void _ZN8S20549C53v13Ev();
extern void _ZN8S20549C53v14Ev();
static  VTBL_ENTRY vtc_S20549C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C5[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20549C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v14Ev,
};
extern VTBL_ENTRY _ZTI8S20549C5[];
extern  VTBL_ENTRY _ZTV8S20549C5[];
Class_Descriptor cd_S20549C5 = {  "S20549C5", // class name
  bases_S20549C5, 1,
  &(vtc_S20549C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20549C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20549C5),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  S20549C2  : virtual S20549C3 , S20549C5 {
  char s20549c2f0[7];
  virtual  ~S20549C2(); // _ZN8S20549C2D2Ev
  virtual void  v15(); // _ZN8S20549C23v15Ev
  virtual void  v16(); // _ZN8S20549C23v16Ev
  virtual void  v17(); // _ZN8S20549C23v17Ev
  virtual void  v18(); // _ZN8S20549C23v18Ev
  virtual void  v19(); // _ZN8S20549C23v19Ev
  S20549C2(); // tgen
};
//SIG(-1 S20549C2) C1{ VBC2{ BC3{ v6 v7 v8 v9 Fp} v10 v11 Fp FL} BC4{ BC3 vd v12 v13 v14 v15 Fi} vd v1 v2 v3 v4 v5 Fc[7]}


 S20549C2 ::~S20549C2(){ note_dtor("S20549C2", this);}
void  S20549C2 ::v15(){vfunc_called(this, "_ZN8S20549C23v15Ev");}
void  S20549C2 ::v16(){vfunc_called(this, "_ZN8S20549C23v16Ev");}
void  S20549C2 ::v17(){vfunc_called(this, "_ZN8S20549C23v17Ev");}
void  S20549C2 ::v18(){vfunc_called(this, "_ZN8S20549C23v18Ev");}
void  S20549C2 ::v19(){vfunc_called(this, "_ZN8S20549C23v19Ev");}
S20549C2 ::S20549C2(){ note_ctor("S20549C2", this);} // tgen

static void Test_S20549C2()
{
  extern Class_Descriptor cd_S20549C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20549C2, buf);
    S20549C2 *dp, &lv = *(dp=new (buf) S20549C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20549C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20549C2)");
    check_base_class_offset(lv, (S20549C4*)(S20549C3*), ABISELECT(32,20), "S20549C2");
    check_base_class_offset(lv, (S20549C3*), ABISELECT(32,20), "S20549C2");
    check_base_class_offset(lv, (S20549C4*)(S20549C5*), 0, "S20549C2");
    check_base_class_offset(lv, (S20549C5*), 0, "S20549C2");
    check_field_offset(lv, s20549c2f0, ABISELECT(20,12), "S20549C2.s20549c2f0");
    test_class_info(&lv, &cd_S20549C2);
    dp->~S20549C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20549C2(Test_S20549C2, "S20549C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20549C2C1Ev();
extern void _ZN8S20549C2D2Ev();
Name_Map name_map_S20549C2[] = {
  NSPAIR(_ZN8S20549C2C1Ev),
  NSPAIR(_ZN8S20549C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
extern Class_Descriptor cd_S20549C3;
extern VTBL_ENTRY _ZTI8S20549C3[];
extern  VTBL_ENTRY _ZTV8S20549C3[];
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
extern Class_Descriptor cd_S20549C5;
extern VTBL_ENTRY _ZTI8S20549C5[];
extern  VTBL_ENTRY _ZTV8S20549C5[];
static Base_Class bases_S20549C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20549C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20549C3,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //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_S20549C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20549C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20549C2[];
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C2D1Ev();
extern void _ZN8S20549C2D0Ev();
extern void _ZN8S20549C53v11Ev();
extern void _ZN8S20549C53v12Ev();
extern void _ZN8S20549C53v13Ev();
extern void _ZN8S20549C53v14Ev();
extern void _ZN8S20549C23v15Ev();
extern void _ZN8S20549C23v16Ev();
extern void _ZN8S20549C23v17Ev();
extern void _ZN8S20549C23v18Ev();
extern void _ZN8S20549C23v19Ev();
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C32v9Ev();
extern void _ZN8S20549C33v10Ev();
static  VTBL_ENTRY vtc_S20549C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C2[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20549C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20549C2[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20549C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S20549C2[];
static  VTT_ENTRY vtt_S20549C2[] = {
  {&(_ZTV8S20549C2[3]),  3,32},
  {&(_ZTV8S20549C2[26]),  26,32},
};
extern VTBL_ENTRY _ZTI8S20549C2[];
extern  VTBL_ENTRY _ZTV8S20549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20549C2[];
Class_Descriptor cd_S20549C2 = {  "S20549C2", // class name
  bases_S20549C2, 4,
  &(vtc_S20549C2[0]), // expected_vtbl_contents
  &(vtt_S20549C2[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20549C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20549C2),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20549C2),2, //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  S20549C1  : virtual S20549C2 {
  long double s20549c1f0;
  virtual  ~S20549C1(); // _ZN8S20549C1D2Ev
  virtual void  v1(); // _ZN8S20549C12v1Ev
  virtual void  v2(); // _ZN8S20549C12v2Ev
  virtual void  v3(); // _ZN8S20549C12v3Ev
  virtual void  v4(); // _ZN8S20549C12v4Ev
  S20549C1(); // tgen
};
//SIG(1 S20549C1) C1{ VBC2{ VBC3{ BC4{ v5 v6 v7 v8 Fp} v9 v10 Fp FL} BC5{ BC4 vd v11 v12 v13 v14 Fi} vd v15 v16 v17 v18 v19 Fc[7]} vd v1 v2 v3 v4 FD}


 S20549C1 ::~S20549C1(){ note_dtor("S20549C1", this);}
void  S20549C1 ::v1(){vfunc_called(this, "_ZN8S20549C12v1Ev");}
void  S20549C1 ::v2(){vfunc_called(this, "_ZN8S20549C12v2Ev");}
void  S20549C1 ::v3(){vfunc_called(this, "_ZN8S20549C12v3Ev");}
void  S20549C1 ::v4(){vfunc_called(this, "_ZN8S20549C12v4Ev");}
S20549C1 ::S20549C1(){ note_ctor("S20549C1", this);} // tgen

static void Test_S20549C1()
{
  extern Class_Descriptor cd_S20549C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,15)];
    init_test(&cd_S20549C1, buf);
    S20549C1 *dp, &lv = *(dp=new (buf) S20549C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S20549C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20549C1)");
    check_base_class_offset(lv, (S20549C4*)(S20549C3*), ABISELECT(64,36), "S20549C1");
    check_base_class_offset(lv, (S20549C3*)(S20549C2*), ABISELECT(64,36), "S20549C1");
    check_base_class_offset(lv, (S20549C4*)(S20549C5*)(S20549C2*), ABISELECT(32,16), "S20549C1");
    check_base_class_offset(lv, (S20549C5*)(S20549C2*), ABISELECT(32,16), "S20549C1");
    check_base_class_offset(lv, (S20549C2*), ABISELECT(32,16), "S20549C1");
    check_field_offset(lv, s20549c1f0, ABISELECT(16,4), "S20549C1.s20549c1f0");
    test_class_info(&lv, &cd_S20549C1);
    dp->~S20549C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20549C1(Test_S20549C1, "S20549C1", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN8S20549C1C1Ev();
extern void _ZN8S20549C1D2Ev();
Name_Map name_map_S20549C1[] = {
  NSPAIR(_ZN8S20549C1C1Ev),
  NSPAIR(_ZN8S20549C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
extern Class_Descriptor cd_S20549C3;
extern VTBL_ENTRY _ZTI8S20549C3[];
extern  VTBL_ENTRY _ZTV8S20549C3[];
extern Class_Descriptor cd_S20549C4;
extern VTBL_ENTRY _ZTI8S20549C4[];
extern  VTBL_ENTRY _ZTV8S20549C4[];
extern Class_Descriptor cd_S20549C5;
extern VTBL_ENTRY _ZTI8S20549C5[];
extern  VTBL_ENTRY _ZTV8S20549C5[];
extern Class_Descriptor cd_S20549C2;
extern VTBL_ENTRY _ZTI8S20549C2[];
extern  VTBL_ENTRY _ZTV8S20549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20549C2[];
static Base_Class bases_S20549C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20549C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20549C3,    ABISELECT(64,36), //bcp->offset
    42, //bcp->virtual_function_table_offset
    8, //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_S20549C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20549C5,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20549C2,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20549C1[];
extern void _ZN8S20549C1D1Ev();
extern void _ZN8S20549C1D0Ev();
extern void _ZN8S20549C12v1Ev();
extern void _ZN8S20549C12v2Ev();
extern void _ZN8S20549C12v3Ev();
extern void _ZN8S20549C12v4Ev();
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void ABISELECT(_ZTv0_n64_N8S20549C1D1Ev,_ZTv0_n32_N8S20549C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20549C1D1Ev,_ZThn16_N8S20549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20549C1D0Ev,_ZTv0_n32_N8S20549C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20549C1D0Ev,_ZThn16_N8S20549C1D0Ev)() __attribute__((weak));
extern void _ZN8S20549C53v11Ev();
extern void _ZN8S20549C53v12Ev();
extern void _ZN8S20549C53v13Ev();
extern void _ZN8S20549C53v14Ev();
extern void _ZN8S20549C23v15Ev();
extern void _ZN8S20549C23v16Ev();
extern void _ZN8S20549C23v17Ev();
extern void _ZN8S20549C23v18Ev();
extern void _ZN8S20549C23v19Ev();
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C32v9Ev();
extern void _ZN8S20549C33v10Ev();
static  VTBL_ENTRY vtc_S20549C1[] = {
  ABISELECT(64,36),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C1[0]),
  (VTBL_ENTRY)&_ZN8S20549C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20549C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20549C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20549C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20549C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20549C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20549C1[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20549C1D1Ev,_ZTv0_n32_N8S20549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20549C1D0Ev,_ZTv0_n32_N8S20549C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20549C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20549C1[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20549C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S20549C1[];
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C2D1Ev();
extern void _ZN8S20549C2D0Ev();
extern void _ZN8S20549C53v11Ev();
extern void _ZN8S20549C53v12Ev();
extern void _ZN8S20549C53v13Ev();
extern void _ZN8S20549C53v14Ev();
extern void _ZN8S20549C23v15Ev();
extern void _ZN8S20549C23v16Ev();
extern void _ZN8S20549C23v17Ev();
extern void _ZN8S20549C23v18Ev();
extern void _ZN8S20549C23v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20549C2__8S20549C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20549C2[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20549C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20549C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20549C23v19Ev,
};
extern void _ZN8S20549C42v5Ev();
extern void _ZN8S20549C42v6Ev();
extern void _ZN8S20549C42v7Ev();
extern void _ZN8S20549C42v8Ev();
extern void _ZN8S20549C32v9Ev();
extern void _ZN8S20549C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20549C3__8S20549C2__8S20549C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20549C2[0]),
  (VTBL_ENTRY)&_ZN8S20549C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20549C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20549C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20549C33v10Ev,
};
static  VTT_ENTRY vtt_S20549C1[] = {
  {&(_ZTV8S20549C1[4]),  4,56},
  {&(_ZTV8S20549C1[27]),  27,56},
  {&(_ZTV8S20549C1[50]),  50,56},
  {&(_tg__ZTV8S20549C2__8S20549C1[3]),  3,18},
  {&(_tg__ZTV8S20549C3__8S20549C2__8S20549C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20549C1[];
extern  VTBL_ENTRY _ZTV8S20549C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20549C1[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20549C1D0Ev,_ZTv0_n32_N8S20549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20549C1D0Ev,_ZThn16_N8S20549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20549C1D1Ev,_ZTv0_n32_N8S20549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20549C1D1Ev,_ZThn16_N8S20549C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20549C1 = {  "S20549C1", // class name
  bases_S20549C1, 5,
  &(vtc_S20549C1[0]), // expected_vtbl_contents
  &(vtt_S20549C1[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI8S20549C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20549C1),56, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20549C1),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20216C2  {
  void *s20216c2f0[11];
  ::S20092C6 s20216c2f1;
  long double s20216c2f2[3];
  virtual  ~S20216C2(); // _ZN8S20216C2D1Ev
  virtual void  v4(); // _ZN8S20216C22v4Ev
  virtual void  v5(); // _ZN8S20216C22v5Ev
  virtual void  v6(); // _ZN8S20216C22v6Ev
  S20216C2(); // tgen
};
//SIG(-1 S20216C2) C1{ vd v1 v2 v3 Fp[11] FC2{ VBC3{ v9 v10 v11 v12} VBC4{ v13 v14 v15 v16 Fp} v4 v5 v6 v7 v8 Fl[2] Fi} FD[3]}


 S20216C2 ::~S20216C2(){ note_dtor("S20216C2", this);}
void  S20216C2 ::v4(){vfunc_called(this, "_ZN8S20216C22v4Ev");}
void  S20216C2 ::v5(){vfunc_called(this, "_ZN8S20216C22v5Ev");}
void  S20216C2 ::v6(){vfunc_called(this, "_ZN8S20216C22v6Ev");}
S20216C2 ::S20216C2(){ note_ctor("S20216C2", this);} // tgen

static void Test_S20216C2()
{
  extern Class_Descriptor cd_S20216C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,28)];
    init_test(&cd_S20216C2, buf);
    S20216C2 *dp, &lv = *(dp=new (buf) S20216C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,108), "sizeof(S20216C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20216C2)");
    check_field_offset(lv, s20216c2f0, ABISELECT(8,4), "S20216C2.s20216c2f0");
    check_field_offset(lv, s20216c2f1, ABISELECT(96,48), "S20216C2.s20216c2f1");
    check_field_offset(lv, s20216c2f2, ABISELECT(144,72), "S20216C2.s20216c2f2");
    test_class_info(&lv, &cd_S20216C2);
    dp->~S20216C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20216C2(Test_S20216C2, "S20216C2", ABISELECT(192,108));

#else // __cplusplus

extern void _ZN8S20216C2C1Ev();
extern void _ZN8S20216C2D1Ev();
Name_Map name_map_S20216C2[] = {
  NSPAIR(_ZN8S20216C2C1Ev),
  NSPAIR(_ZN8S20216C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20216C2[];
extern void _ZN8S20216C2D1Ev();
extern void _ZN8S20216C2D0Ev();
extern void _ZN8S20216C22v4Ev();
extern void _ZN8S20216C22v5Ev();
extern void _ZN8S20216C22v6Ev();
static  VTBL_ENTRY vtc_S20216C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20216C2[0]),
  (VTBL_ENTRY)&_ZN8S20216C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20216C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20216C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20216C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20216C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20216C2[];
extern  VTBL_ENTRY _ZTV8S20216C2[];
Class_Descriptor cd_S20216C2 = {  "S20216C2", // class name
  0,0,//no base classes
  &(vtc_S20216C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,108), // object size
  NSPAIRA(_ZTI8S20216C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20216C2),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  S20216C1  : virtual S20216C2 {
  __tsi64 s20216c1f0;
  virtual void  v1(); // _ZN8S20216C12v1Ev
  virtual void  v2(); // _ZN8S20216C12v2Ev
  virtual void  v3(); // _ZN8S20216C12v3Ev
  ~S20216C1(); // tgen
  S20216C1(); // tgen
};
//SIG(1 S20216C1) C1{ VBC2{ vd v4 v5 v6 Fp[11] FC3{ VBC4{ v12 v13 v14 v15} VBC5{ v16 v17 v18 v19 Fp} v7 v8 v9 v10 v11 Fl[2] Fi} FD[3]} v1 v2 v3 FL}


void  S20216C1 ::v1(){vfunc_called(this, "_ZN8S20216C12v1Ev");}
void  S20216C1 ::v2(){vfunc_called(this, "_ZN8S20216C12v2Ev");}
void  S20216C1 ::v3(){vfunc_called(this, "_ZN8S20216C12v3Ev");}
S20216C1 ::~S20216C1(){ note_dtor("S20216C1", this);} // tgen
S20216C1 ::S20216C1(){ note_ctor("S20216C1", this);} // tgen

static void Test_S20216C1()
{
  extern Class_Descriptor cd_S20216C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,31)];
    init_test(&cd_S20216C1, buf);
    S20216C1 *dp, &lv = *(dp=new (buf) S20216C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,120), "sizeof(S20216C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20216C1)");
    check_base_class_offset(lv, (S20216C2*), ABISELECT(16,12), "S20216C1");
    check_field_offset(lv, s20216c1f0, ABISELECT(8,4), "S20216C1.s20216c1f0");
    test_class_info(&lv, &cd_S20216C1);
    dp->~S20216C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20216C1(Test_S20216C1, "S20216C1", ABISELECT(208,120));

#else // __cplusplus

extern void _ZN8S20216C1C1Ev();
extern void _ZN8S20216C1D1Ev();
Name_Map name_map_S20216C1[] = {
  NSPAIR(_ZN8S20216C1C1Ev),
  NSPAIR(_ZN8S20216C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20216C2;
extern VTBL_ENTRY _ZTI8S20216C2[];
extern  VTBL_ENTRY _ZTV8S20216C2[];
static Base_Class bases_S20216C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20216C2,    ABISELECT(16,12), //bcp->offset
    8, //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 _ZTI8S20216C1[];
extern void _ZN8S20216C12v1Ev();
extern void _ZN8S20216C12v2Ev();
extern void _ZN8S20216C12v3Ev();
extern void _ZN8S20216C1D1Ev();
extern void _ZN8S20216C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20216C1D1Ev,_ZTv0_n12_N8S20216C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20216C1D1Ev,_ZThn12_N8S20216C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20216C1D0Ev,_ZTv0_n12_N8S20216C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20216C1D0Ev,_ZThn12_N8S20216C1D0Ev)() __attribute__((weak));
extern void _ZN8S20216C22v4Ev();
extern void _ZN8S20216C22v5Ev();
extern void _ZN8S20216C22v6Ev();
static  VTBL_ENTRY vtc_S20216C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20216C1[0]),
  (VTBL_ENTRY)&_ZN8S20216C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20216C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20216C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20216C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20216C1D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20216C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20216C1D1Ev,_ZTv0_n12_N8S20216C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20216C1D0Ev,_ZTv0_n12_N8S20216C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20216C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20216C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20216C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20216C1[];
static  VTT_ENTRY vtt_S20216C1[] = {
  {&(_ZTV8S20216C1[3]),  3,19},
  {&(_ZTV8S20216C1[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S20216C1[];
extern  VTBL_ENTRY _ZTV8S20216C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20216C1[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20216C1D0Ev,_ZTv0_n12_N8S20216C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20216C1D0Ev,_ZThn12_N8S20216C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20216C1D1Ev,_ZTv0_n12_N8S20216C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20216C1D1Ev,_ZThn12_N8S20216C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20216C1 = {  "S20216C1", // class name
  bases_S20216C1, 1,
  &(vtc_S20216C1[0]), // expected_vtbl_contents
  &(vtt_S20216C1[0]), // expected_vtt_contents
  ABISELECT(208,120), // object size
  NSPAIRA(_ZTI8S20216C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20216C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20216C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20215C2  {
  void *s20215c2f0[11];
  ::S20092C6 s20215c2f1;
  long double s20215c2f2[3];
  virtual  ~S20215C2(); // _ZN8S20215C2D1Ev
  virtual void  v4(); // _ZN8S20215C22v4Ev
  virtual void  v5(); // _ZN8S20215C22v5Ev
  virtual void  v6(); // _ZN8S20215C22v6Ev
  S20215C2(); // tgen
};
//SIG(-1 S20215C2) C1{ vd v1 v2 v3 Fp[11] FC2{ VBC3{ v9 v10 v11 v12} VBC4{ v13 v14 v15 v16 Fp} v4 v5 v6 v7 v8 Fl[2] Fi} FD[3]}


 S20215C2 ::~S20215C2(){ note_dtor("S20215C2", this);}
void  S20215C2 ::v4(){vfunc_called(this, "_ZN8S20215C22v4Ev");}
void  S20215C2 ::v5(){vfunc_called(this, "_ZN8S20215C22v5Ev");}
void  S20215C2 ::v6(){vfunc_called(this, "_ZN8S20215C22v6Ev");}
S20215C2 ::S20215C2(){ note_ctor("S20215C2", this);} // tgen

static void Test_S20215C2()
{
  extern Class_Descriptor cd_S20215C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,28)];
    init_test(&cd_S20215C2, buf);
    S20215C2 *dp, &lv = *(dp=new (buf) S20215C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,108), "sizeof(S20215C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20215C2)");
    check_field_offset(lv, s20215c2f0, ABISELECT(8,4), "S20215C2.s20215c2f0");
    check_field_offset(lv, s20215c2f1, ABISELECT(96,48), "S20215C2.s20215c2f1");
    check_field_offset(lv, s20215c2f2, ABISELECT(144,72), "S20215C2.s20215c2f2");
    test_class_info(&lv, &cd_S20215C2);
    dp->~S20215C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20215C2(Test_S20215C2, "S20215C2", ABISELECT(192,108));

#else // __cplusplus

extern void _ZN8S20215C2C1Ev();
extern void _ZN8S20215C2D1Ev();
Name_Map name_map_S20215C2[] = {
  NSPAIR(_ZN8S20215C2C1Ev),
  NSPAIR(_ZN8S20215C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20215C2[];
extern void _ZN8S20215C2D1Ev();
extern void _ZN8S20215C2D0Ev();
extern void _ZN8S20215C22v4Ev();
extern void _ZN8S20215C22v5Ev();
extern void _ZN8S20215C22v6Ev();
static  VTBL_ENTRY vtc_S20215C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20215C2[0]),
  (VTBL_ENTRY)&_ZN8S20215C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20215C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20215C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20215C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20215C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20215C2[];
extern  VTBL_ENTRY _ZTV8S20215C2[];
Class_Descriptor cd_S20215C2 = {  "S20215C2", // class name
  0,0,//no base classes
  &(vtc_S20215C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,108), // object size
  NSPAIRA(_ZTI8S20215C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20215C2),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  S20215C1  : virtual S20215C2 {
  long s20215c1f0;
  virtual void  v1(); // _ZN8S20215C12v1Ev
  virtual void  v2(); // _ZN8S20215C12v2Ev
  virtual void  v3(); // _ZN8S20215C12v3Ev
  ~S20215C1(); // tgen
  S20215C1(); // tgen
};
//SIG(1 S20215C1) C1{ VBC2{ vd v4 v5 v6 Fp[11] FC3{ VBC4{ v12 v13 v14 v15} VBC5{ v16 v17 v18 v19 Fp} v7 v8 v9 v10 v11 Fl[2] Fi} FD[3]} v1 v2 v3 Fl}


void  S20215C1 ::v1(){vfunc_called(this, "_ZN8S20215C12v1Ev");}
void  S20215C1 ::v2(){vfunc_called(this, "_ZN8S20215C12v2Ev");}
void  S20215C1 ::v3(){vfunc_called(this, "_ZN8S20215C12v3Ev");}
S20215C1 ::~S20215C1(){ note_dtor("S20215C1", this);} // tgen
S20215C1 ::S20215C1(){ note_ctor("S20215C1", this);} // tgen

static void Test_S20215C1()
{
  extern Class_Descriptor cd_S20215C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,30)];
    init_test(&cd_S20215C1, buf);
    S20215C1 *dp, &lv = *(dp=new (buf) S20215C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S20215C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20215C1)");
    check_base_class_offset(lv, (S20215C2*), ABISELECT(16,8), "S20215C1");
    check_field_offset(lv, s20215c1f0, ABISELECT(8,4), "S20215C1.s20215c1f0");
    test_class_info(&lv, &cd_S20215C1);
    dp->~S20215C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20215C1(Test_S20215C1, "S20215C1", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN8S20215C1C1Ev();
extern void _ZN8S20215C1D1Ev();
Name_Map name_map_S20215C1[] = {
  NSPAIR(_ZN8S20215C1C1Ev),
  NSPAIR(_ZN8S20215C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20215C2;
extern VTBL_ENTRY _ZTI8S20215C2[];
extern  VTBL_ENTRY _ZTV8S20215C2[];
static Base_Class bases_S20215C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20215C2,    ABISELECT(16,8), //bcp->offset
    8, //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 _ZTI8S20215C1[];
extern void _ZN8S20215C12v1Ev();
extern void _ZN8S20215C12v2Ev();
extern void _ZN8S20215C12v3Ev();
extern void _ZN8S20215C1D1Ev();
extern void _ZN8S20215C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20215C1D1Ev,_ZTv0_n12_N8S20215C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20215C1D1Ev,_ZThn8_N8S20215C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20215C1D0Ev,_ZTv0_n12_N8S20215C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20215C1D0Ev,_ZThn8_N8S20215C1D0Ev)() __attribute__((weak));
extern void _ZN8S20215C22v4Ev();
extern void _ZN8S20215C22v5Ev();
extern void _ZN8S20215C22v6Ev();
static  VTBL_ENTRY vtc_S20215C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20215C1[0]),
  (VTBL_ENTRY)&_ZN8S20215C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20215C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20215C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20215C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20215C1D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20215C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20215C1D1Ev,_ZTv0_n12_N8S20215C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20215C1D0Ev,_ZTv0_n12_N8S20215C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20215C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20215C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20215C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20215C1[];
static  VTT_ENTRY vtt_S20215C1[] = {
  {&(_ZTV8S20215C1[3]),  3,19},
  {&(_ZTV8S20215C1[14]),  14,19},
};
extern VTBL_ENTRY _ZTI8S20215C1[];
extern  VTBL_ENTRY _ZTV8S20215C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20215C1[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20215C1D0Ev,_ZTv0_n12_N8S20215C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20215C1D0Ev,_ZThn8_N8S20215C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20215C1D1Ev,_ZTv0_n12_N8S20215C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20215C1D1Ev,_ZThn8_N8S20215C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20215C1 = {  "S20215C1", // class name
  bases_S20215C1, 1,
  &(vtc_S20215C1[0]), // expected_vtbl_contents
  &(vtt_S20215C1[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI8S20215C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20215C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20215C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19078C4  {
  virtual void  v7(); // _ZN8S19078C42v7Ev
  virtual void  v8(); // _ZN8S19078C42v8Ev
  virtual void  v9(); // _ZN8S19078C42v9Ev
  virtual void  v10(); // _ZN8S19078C43v10Ev
  virtual void  v11(); // _ZN8S19078C43v11Ev
  ~S19078C4(); // tgen
  S19078C4(); // tgen
};
//SIG(-1 S19078C4) C1{ v1 v2 v3 v4 v5}


void  S19078C4 ::v7(){vfunc_called(this, "_ZN8S19078C42v7Ev");}
void  S19078C4 ::v8(){vfunc_called(this, "_ZN8S19078C42v8Ev");}
void  S19078C4 ::v9(){vfunc_called(this, "_ZN8S19078C42v9Ev");}
void  S19078C4 ::v10(){vfunc_called(this, "_ZN8S19078C43v10Ev");}
void  S19078C4 ::v11(){vfunc_called(this, "_ZN8S19078C43v11Ev");}
S19078C4 ::~S19078C4(){ note_dtor("S19078C4", this);} // tgen
S19078C4 ::S19078C4(){ note_ctor("S19078C4", this);} // tgen

static void Test_S19078C4()
{
  extern Class_Descriptor cd_S19078C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19078C4, buf);
    S19078C4 *dp, &lv = *(dp=new (buf) S19078C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19078C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19078C4)");
    test_class_info(&lv, &cd_S19078C4);
    dp->~S19078C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19078C4(Test_S19078C4, "S19078C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19078C4C1Ev();
extern void _ZN8S19078C4D1Ev();
Name_Map name_map_S19078C4[] = {
  NSPAIR(_ZN8S19078C4C1Ev),
  NSPAIR(_ZN8S19078C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19078C4[];
extern void _ZN8S19078C42v7Ev();
extern void _ZN8S19078C42v8Ev();
extern void _ZN8S19078C42v9Ev();
extern void _ZN8S19078C43v10Ev();
extern void _ZN8S19078C43v11Ev();
static  VTBL_ENTRY vtc_S19078C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19078C4[0]),
  (VTBL_ENTRY)&_ZN8S19078C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S19078C4[];
extern  VTBL_ENTRY _ZTV8S19078C4[];
Class_Descriptor cd_S19078C4 = {  "S19078C4", // class name
  0,0,//no base classes
  &(vtc_S19078C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19078C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19078C4),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  S19078C3  : S19078C4 {
  ::S19078C4 s19078c3f0;
  virtual void  v12(); // _ZN8S19078C33v12Ev
  virtual void  v13(); // _ZN8S19078C33v13Ev
  virtual void  v14(); // _ZN8S19078C33v14Ev
  virtual void  v15(); // _ZN8S19078C33v15Ev
  ~S19078C3(); // tgen
  S19078C3(); // tgen
};
//SIG(-1 S19078C3) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S19078C3 ::v12(){vfunc_called(this, "_ZN8S19078C33v12Ev");}
void  S19078C3 ::v13(){vfunc_called(this, "_ZN8S19078C33v13Ev");}
void  S19078C3 ::v14(){vfunc_called(this, "_ZN8S19078C33v14Ev");}
void  S19078C3 ::v15(){vfunc_called(this, "_ZN8S19078C33v15Ev");}
S19078C3 ::~S19078C3(){ note_dtor("S19078C3", this);} // tgen
S19078C3 ::S19078C3(){ note_ctor("S19078C3", this);} // tgen

static void Test_S19078C3()
{
  extern Class_Descriptor cd_S19078C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19078C3, buf);
    S19078C3 *dp, &lv = *(dp=new (buf) S19078C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19078C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19078C3)");
    check_base_class_offset(lv, (S19078C4*), 0, "S19078C3");
    check_field_offset(lv, s19078c3f0, ABISELECT(8,4), "S19078C3.s19078c3f0");
    test_class_info(&lv, &cd_S19078C3);
    dp->~S19078C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19078C3(Test_S19078C3, "S19078C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19078C3C1Ev();
extern void _ZN8S19078C3D1Ev();
Name_Map name_map_S19078C3[] = {
  NSPAIR(_ZN8S19078C3C1Ev),
  NSPAIR(_ZN8S19078C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19078C4;
extern VTBL_ENTRY _ZTI8S19078C4[];
extern  VTBL_ENTRY _ZTV8S19078C4[];
static Base_Class bases_S19078C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19078C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19078C3[];
extern void _ZN8S19078C42v7Ev();
extern void _ZN8S19078C42v8Ev();
extern void _ZN8S19078C42v9Ev();
extern void _ZN8S19078C43v10Ev();
extern void _ZN8S19078C43v11Ev();
extern void _ZN8S19078C33v12Ev();
extern void _ZN8S19078C33v13Ev();
extern void _ZN8S19078C33v14Ev();
extern void _ZN8S19078C33v15Ev();
static  VTBL_ENTRY vtc_S19078C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19078C3[0]),
  (VTBL_ENTRY)&_ZN8S19078C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v15Ev,
};
extern VTBL_ENTRY _ZTI8S19078C3[];
extern  VTBL_ENTRY _ZTV8S19078C3[];
Class_Descriptor cd_S19078C3 = {  "S19078C3", // class name
  bases_S19078C3, 1,
  &(vtc_S19078C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19078C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19078C3),11, //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  S19078C2  : S19078C3 {
  virtual void  v16(); // _ZN8S19078C23v16Ev
  virtual void  v17(); // _ZN8S19078C23v17Ev
  virtual void  v18(); // _ZN8S19078C23v18Ev
  virtual void  v19(); // _ZN8S19078C23v19Ev
  virtual void  v20(); // _ZN8S19078C23v20Ev
  virtual void  v21(); // _ZN8S19078C23v21Ev
  ~S19078C2(); // tgen
  S19078C2(); // tgen
};
//SIG(-1 S19078C2) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S19078C2 ::v16(){vfunc_called(this, "_ZN8S19078C23v16Ev");}
void  S19078C2 ::v17(){vfunc_called(this, "_ZN8S19078C23v17Ev");}
void  S19078C2 ::v18(){vfunc_called(this, "_ZN8S19078C23v18Ev");}
void  S19078C2 ::v19(){vfunc_called(this, "_ZN8S19078C23v19Ev");}
void  S19078C2 ::v20(){vfunc_called(this, "_ZN8S19078C23v20Ev");}
void  S19078C2 ::v21(){vfunc_called(this, "_ZN8S19078C23v21Ev");}
S19078C2 ::~S19078C2(){ note_dtor("S19078C2", this);} // tgen
S19078C2 ::S19078C2(){ note_ctor("S19078C2", this);} // tgen

static void Test_S19078C2()
{
  extern Class_Descriptor cd_S19078C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19078C2, buf);
    S19078C2 *dp, &lv = *(dp=new (buf) S19078C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19078C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19078C2)");
    check_base_class_offset(lv, (S19078C4*)(S19078C3*), 0, "S19078C2");
    check_base_class_offset(lv, (S19078C3*), 0, "S19078C2");
    test_class_info(&lv, &cd_S19078C2);
    dp->~S19078C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19078C2(Test_S19078C2, "S19078C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19078C2C1Ev();
extern void _ZN8S19078C2D1Ev();
Name_Map name_map_S19078C2[] = {
  NSPAIR(_ZN8S19078C2C1Ev),
  NSPAIR(_ZN8S19078C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19078C4;
extern VTBL_ENTRY _ZTI8S19078C4[];
extern  VTBL_ENTRY _ZTV8S19078C4[];
extern Class_Descriptor cd_S19078C3;
extern VTBL_ENTRY _ZTI8S19078C3[];
extern  VTBL_ENTRY _ZTV8S19078C3[];
static Base_Class bases_S19078C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19078C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S19078C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19078C2[];
extern void _ZN8S19078C42v7Ev();
extern void _ZN8S19078C42v8Ev();
extern void _ZN8S19078C42v9Ev();
extern void _ZN8S19078C43v10Ev();
extern void _ZN8S19078C43v11Ev();
extern void _ZN8S19078C33v12Ev();
extern void _ZN8S19078C33v13Ev();
extern void _ZN8S19078C33v14Ev();
extern void _ZN8S19078C33v15Ev();
extern void _ZN8S19078C23v16Ev();
extern void _ZN8S19078C23v17Ev();
extern void _ZN8S19078C23v18Ev();
extern void _ZN8S19078C23v19Ev();
extern void _ZN8S19078C23v20Ev();
extern void _ZN8S19078C23v21Ev();
static  VTBL_ENTRY vtc_S19078C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19078C2[0]),
  (VTBL_ENTRY)&_ZN8S19078C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S19078C2[];
extern  VTBL_ENTRY _ZTV8S19078C2[];
Class_Descriptor cd_S19078C2 = {  "S19078C2", // class name
  bases_S19078C2, 2,
  &(vtc_S19078C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19078C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19078C2),17, //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  S19078C5  {
  virtual void  v22(); // _ZN8S19078C53v22Ev
  ~S19078C5(); // tgen
  S19078C5(); // tgen
};
//SIG(-1 S19078C5) C1{ v1}


void  S19078C5 ::v22(){vfunc_called(this, "_ZN8S19078C53v22Ev");}
S19078C5 ::~S19078C5(){ note_dtor("S19078C5", this);} // tgen
S19078C5 ::S19078C5(){ note_ctor("S19078C5", this);} // tgen

static void Test_S19078C5()
{
  extern Class_Descriptor cd_S19078C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19078C5, buf);
    S19078C5 *dp, &lv = *(dp=new (buf) S19078C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19078C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19078C5)");
    test_class_info(&lv, &cd_S19078C5);
    dp->~S19078C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19078C5(Test_S19078C5, "S19078C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19078C5C1Ev();
extern void _ZN8S19078C5D1Ev();
Name_Map name_map_S19078C5[] = {
  NSPAIR(_ZN8S19078C5C1Ev),
  NSPAIR(_ZN8S19078C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19078C5[];
extern void _ZN8S19078C53v22Ev();
static  VTBL_ENTRY vtc_S19078C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19078C5[0]),
  (VTBL_ENTRY)&_ZN8S19078C53v22Ev,
};
extern VTBL_ENTRY _ZTI8S19078C5[];
extern  VTBL_ENTRY _ZTV8S19078C5[];
Class_Descriptor cd_S19078C5 = {  "S19078C5", // class name
  0,0,//no base classes
  &(vtc_S19078C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19078C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19078C5),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  S19078C1  : virtual S19078C2 , virtual S19078C5 {
  char s19078c1f0;
  int s19078c1f1;
  __tsi64 s19078c1f2;
  long double s19078c1f3[6];
  virtual void  v1(); // _ZN8S19078C12v1Ev
  virtual void  v2(); // _ZN8S19078C12v2Ev
  virtual void  v3(); // _ZN8S19078C12v3Ev
  virtual void  v4(); // _ZN8S19078C12v4Ev
  virtual void  v5(); // _ZN8S19078C12v5Ev
  virtual void  v6(); // _ZN8S19078C12v6Ev
  ~S19078C1(); // tgen
  S19078C1(); // tgen
};
//SIG(1 S19078C1) C1{ VBC2{ BC3{ BC4{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC4} v16 v17 v18 v19 v20 v21} VBC5{ v22} v1 v2 v3 v4 v5 v6 Fc Fi FL FD[6]}


void  S19078C1 ::v1(){vfunc_called(this, "_ZN8S19078C12v1Ev");}
void  S19078C1 ::v2(){vfunc_called(this, "_ZN8S19078C12v2Ev");}
void  S19078C1 ::v3(){vfunc_called(this, "_ZN8S19078C12v3Ev");}
void  S19078C1 ::v4(){vfunc_called(this, "_ZN8S19078C12v4Ev");}
void  S19078C1 ::v5(){vfunc_called(this, "_ZN8S19078C12v5Ev");}
void  S19078C1 ::v6(){vfunc_called(this, "_ZN8S19078C12v6Ev");}
S19078C1 ::~S19078C1(){ note_dtor("S19078C1", this);} // tgen
S19078C1 ::S19078C1(){ note_ctor("S19078C1", this);} // tgen

static void Test_S19078C1()
{
  extern Class_Descriptor cd_S19078C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S19078C1, buf);
    S19078C1 *dp, &lv = *(dp=new (buf) S19078C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S19078C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19078C1)");
    check_base_class_offset(lv, (S19078C4*)(S19078C3*)(S19078C2*), ABISELECT(128,92), "S19078C1");
    check_base_class_offset(lv, (S19078C3*)(S19078C2*), ABISELECT(128,92), "S19078C1");
    check_base_class_offset(lv, (S19078C2*), ABISELECT(128,92), "S19078C1");
    check_base_class_offset(lv, (S19078C5*), 0, "S19078C1");
    check_field_offset(lv, s19078c1f0, ABISELECT(8,4), "S19078C1.s19078c1f0");
    check_field_offset(lv, s19078c1f1, ABISELECT(12,8), "S19078C1.s19078c1f1");
    check_field_offset(lv, s19078c1f2, ABISELECT(16,12), "S19078C1.s19078c1f2");
    check_field_offset(lv, s19078c1f3, ABISELECT(32,20), "S19078C1.s19078c1f3");
    test_class_info(&lv, &cd_S19078C1);
    dp->~S19078C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19078C1(Test_S19078C1, "S19078C1", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S19078C1C1Ev();
extern void _ZN8S19078C1D1Ev();
Name_Map name_map_S19078C1[] = {
  NSPAIR(_ZN8S19078C1C1Ev),
  NSPAIR(_ZN8S19078C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19078C4;
extern VTBL_ENTRY _ZTI8S19078C4[];
extern  VTBL_ENTRY _ZTV8S19078C4[];
extern Class_Descriptor cd_S19078C3;
extern VTBL_ENTRY _ZTI8S19078C3[];
extern  VTBL_ENTRY _ZTV8S19078C3[];
extern Class_Descriptor cd_S19078C2;
extern VTBL_ENTRY _ZTI8S19078C2[];
extern  VTBL_ENTRY _ZTV8S19078C2[];
extern Class_Descriptor cd_S19078C5;
extern VTBL_ENTRY _ZTI8S19078C5[];
extern  VTBL_ENTRY _ZTV8S19078C5[];
static Base_Class bases_S19078C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19078C4,    ABISELECT(128,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
    1, //immediately_derived
  0, 0},
  {&cd_S19078C3,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19078C2,    ABISELECT(128,92), //bcp->offset
    12, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19078C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19078C1[];
extern void _ZN8S19078C53v22Ev();
extern void _ZN8S19078C12v1Ev();
extern void _ZN8S19078C12v2Ev();
extern void _ZN8S19078C12v3Ev();
extern void _ZN8S19078C12v4Ev();
extern void _ZN8S19078C12v5Ev();
extern void _ZN8S19078C12v6Ev();
extern void _ZN8S19078C42v7Ev();
extern void _ZN8S19078C42v8Ev();
extern void _ZN8S19078C42v9Ev();
extern void _ZN8S19078C43v10Ev();
extern void _ZN8S19078C43v11Ev();
extern void _ZN8S19078C33v12Ev();
extern void _ZN8S19078C33v13Ev();
extern void _ZN8S19078C33v14Ev();
extern void _ZN8S19078C33v15Ev();
extern void _ZN8S19078C23v16Ev();
extern void _ZN8S19078C23v17Ev();
extern void _ZN8S19078C23v18Ev();
extern void _ZN8S19078C23v19Ev();
extern void _ZN8S19078C23v20Ev();
extern void _ZN8S19078C23v21Ev();
static  VTBL_ENTRY vtc_S19078C1[] = {
  0,
  ABISELECT(128,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19078C1[0]),
  (VTBL_ENTRY)&_ZN8S19078C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19078C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S19078C1[0]),
  (VTBL_ENTRY)&_ZN8S19078C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19078C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19078C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19078C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19078C23v21Ev,
};
extern VTBL_ENTRY _ZTV8S19078C1[];
static  VTT_ENTRY vtt_S19078C1[] = {
  {&(_ZTV8S19078C1[5]),  5,44},
  {&(_ZTV8S19078C1[29]),  29,44},
  {&(_ZTV8S19078C1[5]),  5,44},
};
extern VTBL_ENTRY _ZTI8S19078C1[];
extern  VTBL_ENTRY _ZTV8S19078C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19078C1[];
Class_Descriptor cd_S19078C1 = {  "S19078C1", // class name
  bases_S19078C1, 4,
  &(vtc_S19078C1[0]), // expected_vtbl_contents
  &(vtt_S19078C1[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S19078C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19078C1),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19078C1),3, //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  S19077C4  {
  virtual void  v7(); // _ZN8S19077C42v7Ev
  virtual void  v8(); // _ZN8S19077C42v8Ev
  virtual void  v9(); // _ZN8S19077C42v9Ev
  virtual void  v10(); // _ZN8S19077C43v10Ev
  virtual void  v11(); // _ZN8S19077C43v11Ev
  ~S19077C4(); // tgen
  S19077C4(); // tgen
};
//SIG(-1 S19077C4) C1{ v1 v2 v3 v4 v5}


void  S19077C4 ::v7(){vfunc_called(this, "_ZN8S19077C42v7Ev");}
void  S19077C4 ::v8(){vfunc_called(this, "_ZN8S19077C42v8Ev");}
void  S19077C4 ::v9(){vfunc_called(this, "_ZN8S19077C42v9Ev");}
void  S19077C4 ::v10(){vfunc_called(this, "_ZN8S19077C43v10Ev");}
void  S19077C4 ::v11(){vfunc_called(this, "_ZN8S19077C43v11Ev");}
S19077C4 ::~S19077C4(){ note_dtor("S19077C4", this);} // tgen
S19077C4 ::S19077C4(){ note_ctor("S19077C4", this);} // tgen

static void Test_S19077C4()
{
  extern Class_Descriptor cd_S19077C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19077C4, buf);
    S19077C4 *dp, &lv = *(dp=new (buf) S19077C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19077C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19077C4)");
    test_class_info(&lv, &cd_S19077C4);
    dp->~S19077C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19077C4(Test_S19077C4, "S19077C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19077C4C1Ev();
extern void _ZN8S19077C4D1Ev();
Name_Map name_map_S19077C4[] = {
  NSPAIR(_ZN8S19077C4C1Ev),
  NSPAIR(_ZN8S19077C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19077C4[];
extern void _ZN8S19077C42v7Ev();
extern void _ZN8S19077C42v8Ev();
extern void _ZN8S19077C42v9Ev();
extern void _ZN8S19077C43v10Ev();
extern void _ZN8S19077C43v11Ev();
static  VTBL_ENTRY vtc_S19077C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19077C4[0]),
  (VTBL_ENTRY)&_ZN8S19077C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S19077C4[];
extern  VTBL_ENTRY _ZTV8S19077C4[];
Class_Descriptor cd_S19077C4 = {  "S19077C4", // class name
  0,0,//no base classes
  &(vtc_S19077C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19077C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19077C4),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  S19077C3  : S19077C4 {
  ::S19077C4 s19077c3f0;
  virtual void  v12(); // _ZN8S19077C33v12Ev
  virtual void  v13(); // _ZN8S19077C33v13Ev
  virtual void  v14(); // _ZN8S19077C33v14Ev
  virtual void  v15(); // _ZN8S19077C33v15Ev
  ~S19077C3(); // tgen
  S19077C3(); // tgen
};
//SIG(-1 S19077C3) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S19077C3 ::v12(){vfunc_called(this, "_ZN8S19077C33v12Ev");}
void  S19077C3 ::v13(){vfunc_called(this, "_ZN8S19077C33v13Ev");}
void  S19077C3 ::v14(){vfunc_called(this, "_ZN8S19077C33v14Ev");}
void  S19077C3 ::v15(){vfunc_called(this, "_ZN8S19077C33v15Ev");}
S19077C3 ::~S19077C3(){ note_dtor("S19077C3", this);} // tgen
S19077C3 ::S19077C3(){ note_ctor("S19077C3", this);} // tgen

static void Test_S19077C3()
{
  extern Class_Descriptor cd_S19077C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19077C3, buf);
    S19077C3 *dp, &lv = *(dp=new (buf) S19077C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19077C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19077C3)");
    check_base_class_offset(lv, (S19077C4*), 0, "S19077C3");
    check_field_offset(lv, s19077c3f0, ABISELECT(8,4), "S19077C3.s19077c3f0");
    test_class_info(&lv, &cd_S19077C3);
    dp->~S19077C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19077C3(Test_S19077C3, "S19077C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19077C3C1Ev();
extern void _ZN8S19077C3D1Ev();
Name_Map name_map_S19077C3[] = {
  NSPAIR(_ZN8S19077C3C1Ev),
  NSPAIR(_ZN8S19077C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19077C4;
extern VTBL_ENTRY _ZTI8S19077C4[];
extern  VTBL_ENTRY _ZTV8S19077C4[];
static Base_Class bases_S19077C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19077C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19077C3[];
extern void _ZN8S19077C42v7Ev();
extern void _ZN8S19077C42v8Ev();
extern void _ZN8S19077C42v9Ev();
extern void _ZN8S19077C43v10Ev();
extern void _ZN8S19077C43v11Ev();
extern void _ZN8S19077C33v12Ev();
extern void _ZN8S19077C33v13Ev();
extern void _ZN8S19077C33v14Ev();
extern void _ZN8S19077C33v15Ev();
static  VTBL_ENTRY vtc_S19077C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19077C3[0]),
  (VTBL_ENTRY)&_ZN8S19077C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v15Ev,
};
extern VTBL_ENTRY _ZTI8S19077C3[];
extern  VTBL_ENTRY _ZTV8S19077C3[];
Class_Descriptor cd_S19077C3 = {  "S19077C3", // class name
  bases_S19077C3, 1,
  &(vtc_S19077C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19077C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19077C3),11, //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  S19077C2  : S19077C3 {
  virtual void  v16(); // _ZN8S19077C23v16Ev
  virtual void  v17(); // _ZN8S19077C23v17Ev
  virtual void  v18(); // _ZN8S19077C23v18Ev
  virtual void  v19(); // _ZN8S19077C23v19Ev
  virtual void  v20(); // _ZN8S19077C23v20Ev
  virtual void  v21(); // _ZN8S19077C23v21Ev
  ~S19077C2(); // tgen
  S19077C2(); // tgen
};
//SIG(-1 S19077C2) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S19077C2 ::v16(){vfunc_called(this, "_ZN8S19077C23v16Ev");}
void  S19077C2 ::v17(){vfunc_called(this, "_ZN8S19077C23v17Ev");}
void  S19077C2 ::v18(){vfunc_called(this, "_ZN8S19077C23v18Ev");}
void  S19077C2 ::v19(){vfunc_called(this, "_ZN8S19077C23v19Ev");}
void  S19077C2 ::v20(){vfunc_called(this, "_ZN8S19077C23v20Ev");}
void  S19077C2 ::v21(){vfunc_called(this, "_ZN8S19077C23v21Ev");}
S19077C2 ::~S19077C2(){ note_dtor("S19077C2", this);} // tgen
S19077C2 ::S19077C2(){ note_ctor("S19077C2", this);} // tgen

static void Test_S19077C2()
{
  extern Class_Descriptor cd_S19077C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19077C2, buf);
    S19077C2 *dp, &lv = *(dp=new (buf) S19077C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19077C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19077C2)");
    check_base_class_offset(lv, (S19077C4*)(S19077C3*), 0, "S19077C2");
    check_base_class_offset(lv, (S19077C3*), 0, "S19077C2");
    test_class_info(&lv, &cd_S19077C2);
    dp->~S19077C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19077C2(Test_S19077C2, "S19077C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19077C2C1Ev();
extern void _ZN8S19077C2D1Ev();
Name_Map name_map_S19077C2[] = {
  NSPAIR(_ZN8S19077C2C1Ev),
  NSPAIR(_ZN8S19077C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19077C4;
extern VTBL_ENTRY _ZTI8S19077C4[];
extern  VTBL_ENTRY _ZTV8S19077C4[];
extern Class_Descriptor cd_S19077C3;
extern VTBL_ENTRY _ZTI8S19077C3[];
extern  VTBL_ENTRY _ZTV8S19077C3[];
static Base_Class bases_S19077C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19077C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S19077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19077C2[];
extern void _ZN8S19077C42v7Ev();
extern void _ZN8S19077C42v8Ev();
extern void _ZN8S19077C42v9Ev();
extern void _ZN8S19077C43v10Ev();
extern void _ZN8S19077C43v11Ev();
extern void _ZN8S19077C33v12Ev();
extern void _ZN8S19077C33v13Ev();
extern void _ZN8S19077C33v14Ev();
extern void _ZN8S19077C33v15Ev();
extern void _ZN8S19077C23v16Ev();
extern void _ZN8S19077C23v17Ev();
extern void _ZN8S19077C23v18Ev();
extern void _ZN8S19077C23v19Ev();
extern void _ZN8S19077C23v20Ev();
extern void _ZN8S19077C23v21Ev();
static  VTBL_ENTRY vtc_S19077C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19077C2[0]),
  (VTBL_ENTRY)&_ZN8S19077C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S19077C2[];
extern  VTBL_ENTRY _ZTV8S19077C2[];
Class_Descriptor cd_S19077C2 = {  "S19077C2", // class name
  bases_S19077C2, 2,
  &(vtc_S19077C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19077C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19077C2),17, //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  S19077C5  {
  virtual void  v22(); // _ZN8S19077C53v22Ev
  ~S19077C5(); // tgen
  S19077C5(); // tgen
};
//SIG(-1 S19077C5) C1{ v1}


void  S19077C5 ::v22(){vfunc_called(this, "_ZN8S19077C53v22Ev");}
S19077C5 ::~S19077C5(){ note_dtor("S19077C5", this);} // tgen
S19077C5 ::S19077C5(){ note_ctor("S19077C5", this);} // tgen

static void Test_S19077C5()
{
  extern Class_Descriptor cd_S19077C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19077C5, buf);
    S19077C5 *dp, &lv = *(dp=new (buf) S19077C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19077C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19077C5)");
    test_class_info(&lv, &cd_S19077C5);
    dp->~S19077C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19077C5(Test_S19077C5, "S19077C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19077C5C1Ev();
extern void _ZN8S19077C5D1Ev();
Name_Map name_map_S19077C5[] = {
  NSPAIR(_ZN8S19077C5C1Ev),
  NSPAIR(_ZN8S19077C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19077C5[];
extern void _ZN8S19077C53v22Ev();
static  VTBL_ENTRY vtc_S19077C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19077C5[0]),
  (VTBL_ENTRY)&_ZN8S19077C53v22Ev,
};
extern VTBL_ENTRY _ZTI8S19077C5[];
extern  VTBL_ENTRY _ZTV8S19077C5[];
Class_Descriptor cd_S19077C5 = {  "S19077C5", // class name
  0,0,//no base classes
  &(vtc_S19077C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19077C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19077C5),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  S19077C1  : virtual S19077C2 , virtual S19077C5 {
  char s19077c1f0;
  int s19077c1f1;
  long s19077c1f2;
  long double s19077c1f3[6];
  virtual void  v1(); // _ZN8S19077C12v1Ev
  virtual void  v2(); // _ZN8S19077C12v2Ev
  virtual void  v3(); // _ZN8S19077C12v3Ev
  virtual void  v4(); // _ZN8S19077C12v4Ev
  virtual void  v5(); // _ZN8S19077C12v5Ev
  virtual void  v6(); // _ZN8S19077C12v6Ev
  ~S19077C1(); // tgen
  S19077C1(); // tgen
};
//SIG(1 S19077C1) C1{ VBC2{ BC3{ BC4{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC4} v16 v17 v18 v19 v20 v21} VBC5{ v22} v1 v2 v3 v4 v5 v6 Fc Fi Fl FD[6]}


void  S19077C1 ::v1(){vfunc_called(this, "_ZN8S19077C12v1Ev");}
void  S19077C1 ::v2(){vfunc_called(this, "_ZN8S19077C12v2Ev");}
void  S19077C1 ::v3(){vfunc_called(this, "_ZN8S19077C12v3Ev");}
void  S19077C1 ::v4(){vfunc_called(this, "_ZN8S19077C12v4Ev");}
void  S19077C1 ::v5(){vfunc_called(this, "_ZN8S19077C12v5Ev");}
void  S19077C1 ::v6(){vfunc_called(this, "_ZN8S19077C12v6Ev");}
S19077C1 ::~S19077C1(){ note_dtor("S19077C1", this);} // tgen
S19077C1 ::S19077C1(){ note_ctor("S19077C1", this);} // tgen

static void Test_S19077C1()
{
  extern Class_Descriptor cd_S19077C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,25)];
    init_test(&cd_S19077C1, buf);
    S19077C1 *dp, &lv = *(dp=new (buf) S19077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19077C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19077C1)");
    check_base_class_offset(lv, (S19077C4*)(S19077C3*)(S19077C2*), ABISELECT(128,88), "S19077C1");
    check_base_class_offset(lv, (S19077C3*)(S19077C2*), ABISELECT(128,88), "S19077C1");
    check_base_class_offset(lv, (S19077C2*), ABISELECT(128,88), "S19077C1");
    check_base_class_offset(lv, (S19077C5*), 0, "S19077C1");
    check_field_offset(lv, s19077c1f0, ABISELECT(8,4), "S19077C1.s19077c1f0");
    check_field_offset(lv, s19077c1f1, ABISELECT(12,8), "S19077C1.s19077c1f1");
    check_field_offset(lv, s19077c1f2, ABISELECT(16,12), "S19077C1.s19077c1f2");
    check_field_offset(lv, s19077c1f3, ABISELECT(32,16), "S19077C1.s19077c1f3");
    test_class_info(&lv, &cd_S19077C1);
    dp->~S19077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19077C1(Test_S19077C1, "S19077C1", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19077C1C1Ev();
extern void _ZN8S19077C1D1Ev();
Name_Map name_map_S19077C1[] = {
  NSPAIR(_ZN8S19077C1C1Ev),
  NSPAIR(_ZN8S19077C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19077C4;
extern VTBL_ENTRY _ZTI8S19077C4[];
extern  VTBL_ENTRY _ZTV8S19077C4[];
extern Class_Descriptor cd_S19077C3;
extern VTBL_ENTRY _ZTI8S19077C3[];
extern  VTBL_ENTRY _ZTV8S19077C3[];
extern Class_Descriptor cd_S19077C2;
extern VTBL_ENTRY _ZTI8S19077C2[];
extern  VTBL_ENTRY _ZTV8S19077C2[];
extern Class_Descriptor cd_S19077C5;
extern VTBL_ENTRY _ZTI8S19077C5[];
extern  VTBL_ENTRY _ZTV8S19077C5[];
static Base_Class bases_S19077C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19077C4,    ABISELECT(128,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
    1, //immediately_derived
  0, 0},
  {&cd_S19077C3,    ABISELECT(128,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19077C2,    ABISELECT(128,88), //bcp->offset
    12, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19077C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19077C1[];
extern void _ZN8S19077C53v22Ev();
extern void _ZN8S19077C12v1Ev();
extern void _ZN8S19077C12v2Ev();
extern void _ZN8S19077C12v3Ev();
extern void _ZN8S19077C12v4Ev();
extern void _ZN8S19077C12v5Ev();
extern void _ZN8S19077C12v6Ev();
extern void _ZN8S19077C42v7Ev();
extern void _ZN8S19077C42v8Ev();
extern void _ZN8S19077C42v9Ev();
extern void _ZN8S19077C43v10Ev();
extern void _ZN8S19077C43v11Ev();
extern void _ZN8S19077C33v12Ev();
extern void _ZN8S19077C33v13Ev();
extern void _ZN8S19077C33v14Ev();
extern void _ZN8S19077C33v15Ev();
extern void _ZN8S19077C23v16Ev();
extern void _ZN8S19077C23v17Ev();
extern void _ZN8S19077C23v18Ev();
extern void _ZN8S19077C23v19Ev();
extern void _ZN8S19077C23v20Ev();
extern void _ZN8S19077C23v21Ev();
static  VTBL_ENTRY vtc_S19077C1[] = {
  0,
  ABISELECT(128,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19077C1[0]),
  (VTBL_ENTRY)&_ZN8S19077C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19077C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19077C1[0]),
  (VTBL_ENTRY)&_ZN8S19077C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19077C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19077C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19077C33v15Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19077C23v21Ev,
};
extern VTBL_ENTRY _ZTV8S19077C1[];
static  VTT_ENTRY vtt_S19077C1[] = {
  {&(_ZTV8S19077C1[5]),  5,44},
  {&(_ZTV8S19077C1[29]),  29,44},
  {&(_ZTV8S19077C1[5]),  5,44},
};
extern VTBL_ENTRY _ZTI8S19077C1[];
extern  VTBL_ENTRY _ZTV8S19077C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19077C1[];
Class_Descriptor cd_S19077C1 = {  "S19077C1", // class name
  bases_S19077C1, 4,
  &(vtc_S19077C1[0]), // expected_vtbl_contents
  &(vtt_S19077C1[0]), // expected_vtt_contents
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19077C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19077C1),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19077C1),3, //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  S1498C4  {
  virtual void  v6(); // _ZN7S1498C42v6Ev
  virtual void  v7(); // _ZN7S1498C42v7Ev
  virtual void  v8(); // _ZN7S1498C42v8Ev
  virtual void  v9(); // _ZN7S1498C42v9Ev
  virtual void  v10(); // _ZN7S1498C43v10Ev
  ~S1498C4(); // tgen
  S1498C4(); // tgen
};
//SIG(-1 S1498C4) C1{ v1 v2 v3 v4 v5}


void  S1498C4 ::v6(){vfunc_called(this, "_ZN7S1498C42v6Ev");}
void  S1498C4 ::v7(){vfunc_called(this, "_ZN7S1498C42v7Ev");}
void  S1498C4 ::v8(){vfunc_called(this, "_ZN7S1498C42v8Ev");}
void  S1498C4 ::v9(){vfunc_called(this, "_ZN7S1498C42v9Ev");}
void  S1498C4 ::v10(){vfunc_called(this, "_ZN7S1498C43v10Ev");}
S1498C4 ::~S1498C4(){ note_dtor("S1498C4", this);} // tgen
S1498C4 ::S1498C4(){ note_ctor("S1498C4", this);} // tgen

static void Test_S1498C4()
{
  extern Class_Descriptor cd_S1498C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1498C4, buf);
    S1498C4 *dp, &lv = *(dp=new (buf) S1498C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1498C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1498C4)");
    test_class_info(&lv, &cd_S1498C4);
    dp->~S1498C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1498C4(Test_S1498C4, "S1498C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1498C4C1Ev();
extern void _ZN7S1498C4D1Ev();
Name_Map name_map_S1498C4[] = {
  NSPAIR(_ZN7S1498C4C1Ev),
  NSPAIR(_ZN7S1498C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1498C4[];
extern void _ZN7S1498C42v6Ev();
extern void _ZN7S1498C42v7Ev();
extern void _ZN7S1498C42v8Ev();
extern void _ZN7S1498C42v9Ev();
extern void _ZN7S1498C43v10Ev();
static  VTBL_ENTRY vtc_S1498C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1498C4[0]),
  (VTBL_ENTRY)&_ZN7S1498C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1498C43v10Ev,
};
extern VTBL_ENTRY _ZTI7S1498C4[];
extern  VTBL_ENTRY _ZTV7S1498C4[];
Class_Descriptor cd_S1498C4 = {  "S1498C4", // class name
  0,0,//no base classes
  &(vtc_S1498C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1498C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1498C4),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  S1498C3  : S1498C4 {
  ::S1498C4 s1498c3f0;
  virtual void  v11(); // _ZN7S1498C33v11Ev
  virtual void  v12(); // _ZN7S1498C33v12Ev
  virtual void  v13(); // _ZN7S1498C33v13Ev
  virtual void  v14(); // _ZN7S1498C33v14Ev
  ~S1498C3(); // tgen
  S1498C3(); // tgen
};
//SIG(-1 S1498C3) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S1498C3 ::v11(){vfunc_called(this, "_ZN7S1498C33v11Ev");}
void  S1498C3 ::v12(){vfunc_called(this, "_ZN7S1498C33v12Ev");}
void  S1498C3 ::v13(){vfunc_called(this, "_ZN7S1498C33v13Ev");}
void  S1498C3 ::v14(){vfunc_called(this, "_ZN7S1498C33v14Ev");}
S1498C3 ::~S1498C3(){ note_dtor("S1498C3", this);} // tgen
S1498C3 ::S1498C3(){ note_ctor("S1498C3", this);} // tgen

static void Test_S1498C3()
{
  extern Class_Descriptor cd_S1498C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1498C3, buf);
    S1498C3 *dp, &lv = *(dp=new (buf) S1498C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1498C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1498C3)");
    check_base_class_offset(lv, (S1498C4*), 0, "S1498C3");
    check_field_offset(lv, s1498c3f0, ABISELECT(8,4), "S1498C3.s1498c3f0");
    test_class_info(&lv, &cd_S1498C3);
    dp->~S1498C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1498C3(Test_S1498C3, "S1498C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1498C3C1Ev();
extern void _ZN7S1498C3D1Ev();
Name_Map name_map_S1498C3[] = {
  NSPAIR(_ZN7S1498C3C1Ev),
  NSPAIR(_ZN7S1498C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1498C4;
extern VTBL_ENTRY _ZTI7S1498C4[];
extern  VTBL_ENTRY _ZTV7S1498C4[];
static Base_Class bases_S1498C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1498C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1498C3[];
extern void _ZN7S1498C42v6Ev();
extern void _ZN7S1498C42v7Ev();
extern void _ZN7S1498C42v8Ev();
extern void _ZN7S1498C42v9Ev();
extern void _ZN7S1498C43v10Ev();
extern void _ZN7S1498C33v11Ev();
extern void _ZN7S1498C33v12Ev();
extern void _ZN7S1498C33v13Ev();
extern void _ZN7S1498C33v14Ev();
static  VTBL_ENTRY vtc_S1498C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1498C3[0]),
  (VTBL_ENTRY)&_ZN7S1498C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1498C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1498C3[];
extern  VTBL_ENTRY _ZTV7S1498C3[];
Class_Descriptor cd_S1498C3 = {  "S1498C3", // class name
  bases_S1498C3, 1,
  &(vtc_S1498C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1498C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1498C3),11, //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  S1498C2  : S1498C3 {
  virtual void  v15(); // _ZN7S1498C23v15Ev
  virtual void  v16(); // _ZN7S1498C23v16Ev
  virtual void  v17(); // _ZN7S1498C23v17Ev
  virtual void  v18(); // _ZN7S1498C23v18Ev
  virtual void  v19(); // _ZN7S1498C23v19Ev
  virtual void  v20(); // _ZN7S1498C23v20Ev
  ~S1498C2(); // tgen
  S1498C2(); // tgen
};
//SIG(-1 S1498C2) C1{ BC2{ BC3{ v7 v8 v9 v10 v11} v12 v13 v14 v15 FC3} v1 v2 v3 v4 v5 v6}


void  S1498C2 ::v15(){vfunc_called(this, "_ZN7S1498C23v15Ev");}
void  S1498C2 ::v16(){vfunc_called(this, "_ZN7S1498C23v16Ev");}
void  S1498C2 ::v17(){vfunc_called(this, "_ZN7S1498C23v17Ev");}
void  S1498C2 ::v18(){vfunc_called(this, "_ZN7S1498C23v18Ev");}
void  S1498C2 ::v19(){vfunc_called(this, "_ZN7S1498C23v19Ev");}
void  S1498C2 ::v20(){vfunc_called(this, "_ZN7S1498C23v20Ev");}
S1498C2 ::~S1498C2(){ note_dtor("S1498C2", this);} // tgen
S1498C2 ::S1498C2(){ note_ctor("S1498C2", this);} // tgen

static void Test_S1498C2()
{
  extern Class_Descriptor cd_S1498C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1498C2, buf);
    S1498C2 *dp, &lv = *(dp=new (buf) S1498C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1498C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1498C2)");
    check_base_class_offset(lv, (S1498C4*)(S1498C3*), 0, "S1498C2");
    check_base_class_offset(lv, (S1498C3*), 0, "S1498C2");
    test_class_info(&lv, &cd_S1498C2);
    dp->~S1498C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1498C2(Test_S1498C2, "S1498C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1498C2C1Ev();
extern void _ZN7S1498C2D1Ev();
Name_Map name_map_S1498C2[] = {
  NSPAIR(_ZN7S1498C2C1Ev),
  NSPAIR(_ZN7S1498C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1498C4;
extern VTBL_ENTRY _ZTI7S1498C4[];
extern  VTBL_ENTRY _ZTV7S1498C4[];
extern Class_Descriptor cd_S1498C3;
extern VTBL_ENTRY _ZTI7S1498C3[];
extern  VTBL_ENTRY _ZTV7S1498C3[];
static Base_Class bases_S1498C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1498C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S1498C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1498C2[];
extern void _ZN7S1498C42v6Ev();
extern void _ZN7S1498C42v7Ev();
extern void _ZN7S1498C42v8Ev();
extern void _ZN7S1498C42v9Ev();
extern void _ZN7S1498C43v10Ev();
extern void _ZN7S1498C33v11Ev();
extern void _ZN7S1498C33v12Ev();
extern void _ZN7S1498C33v13Ev();
extern void _ZN7S1498C33v14Ev();
extern void _ZN7S1498C23v15Ev();
extern void _ZN7S1498C23v16Ev();
extern void _ZN7S1498C23v17Ev();
extern void _ZN7S1498C23v18Ev();
extern void _ZN7S1498C23v19Ev();
extern void _ZN7S1498C23v20Ev();
static  VTBL_ENTRY vtc_S1498C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1498C2[0]),
  (VTBL_ENTRY)&_ZN7S1498C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1498C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S1498C2[];
extern  VTBL_ENTRY _ZTV7S1498C2[];
Class_Descriptor cd_S1498C2 = {  "S1498C2", // class name
  bases_S1498C2, 2,
  &(vtc_S1498C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1498C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1498C2),17, //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  S1498C1  : S1498C2 {
  ::S20549C4 s1498c1f0;
  virtual void  v1(); // _ZN7S1498C12v1Ev
  virtual void  v2(); // _ZN7S1498C12v2Ev
  virtual void  v3(); // _ZN7S1498C12v3Ev
  virtual void  v4(); // _ZN7S1498C12v4Ev
  virtual void  v5(); // _ZN7S1498C12v5Ev
  ~S1498C1(); // tgen
  S1498C1(); // tgen
};
//SIG(1 S1498C1) C1{ BC2{ BC3{ BC4{ v6 v7 v8 v9 v10} v11 v12 v13 v14 FC4} v15 v16 v17 v18 v19 v20} v1 v2 v3 v4 v5 FC5{ v21 v22 v23 v24 Fp}}


void  S1498C1 ::v1(){vfunc_called(this, "_ZN7S1498C12v1Ev");}
void  S1498C1 ::v2(){vfunc_called(this, "_ZN7S1498C12v2Ev");}
void  S1498C1 ::v3(){vfunc_called(this, "_ZN7S1498C12v3Ev");}
void  S1498C1 ::v4(){vfunc_called(this, "_ZN7S1498C12v4Ev");}
void  S1498C1 ::v5(){vfunc_called(this, "_ZN7S1498C12v5Ev");}
S1498C1 ::~S1498C1(){ note_dtor("S1498C1", this);} // tgen
S1498C1 ::S1498C1(){ note_ctor("S1498C1", this);} // tgen

static void Test_S1498C1()
{
  extern Class_Descriptor cd_S1498C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1498C1, buf);
    S1498C1 *dp, &lv = *(dp=new (buf) S1498C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1498C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1498C1)");
    check_base_class_offset(lv, (S1498C4*)(S1498C3*)(S1498C2*), 0, "S1498C1");
    check_base_class_offset(lv, (S1498C3*)(S1498C2*), 0, "S1498C1");
    check_base_class_offset(lv, (S1498C2*), 0, "S1498C1");
    check_field_offset(lv, s1498c1f0, ABISELECT(16,8), "S1498C1.s1498c1f0");
    test_class_info(&lv, &cd_S1498C1);
    dp->~S1498C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1498C1(Test_S1498C1, "S1498C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1498C1C1Ev();
extern void _ZN7S1498C1D1Ev();
Name_Map name_map_S1498C1[] = {
  NSPAIR(_ZN7S1498C1C1Ev),
  NSPAIR(_ZN7S1498C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1498C4;
extern VTBL_ENTRY _ZTI7S1498C4[];
extern  VTBL_ENTRY _ZTV7S1498C4[];
extern Class_Descriptor cd_S1498C3;
extern VTBL_ENTRY _ZTI7S1498C3[];
extern  VTBL_ENTRY _ZTV7S1498C3[];
extern Class_Descriptor cd_S1498C2;
extern VTBL_ENTRY _ZTI7S1498C2[];
extern  VTBL_ENTRY _ZTV7S1498C2[];
static Base_Class bases_S1498C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1498C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S1498C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1498C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S1498C1[];
extern void _ZN7S1498C42v6Ev();
extern void _ZN7S1498C42v7Ev();
extern void _ZN7S1498C42v8Ev();
extern void _ZN7S1498C42v9Ev();
extern void _ZN7S1498C43v10Ev();
extern void _ZN7S1498C33v11Ev();
extern void _ZN7S1498C33v12Ev();
extern void _ZN7S1498C33v13Ev();
extern void _ZN7S1498C33v14Ev();
extern void _ZN7S1498C23v15Ev();
extern void _ZN7S1498C23v16Ev();
extern void _ZN7S1498C23v17Ev();
extern void _ZN7S1498C23v18Ev();
extern void _ZN7S1498C23v19Ev();
extern void _ZN7S1498C23v20Ev();
extern void _ZN7S1498C12v1Ev();
extern void _ZN7S1498C12v2Ev();
extern void _ZN7S1498C12v3Ev();
extern void _ZN7S1498C12v4Ev();
extern void _ZN7S1498C12v5Ev();
static  VTBL_ENTRY vtc_S1498C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1498C1[0]),
  (VTBL_ENTRY)&_ZN7S1498C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1498C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1498C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1498C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1498C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1498C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1498C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1498C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1498C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1498C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1498C1[];
extern  VTBL_ENTRY _ZTV7S1498C1[];
Class_Descriptor cd_S1498C1 = {  "S1498C1", // class name
  bases_S1498C1, 3,
  &(vtc_S1498C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1498C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1498C1),22, //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  S1398C4  {
  short s1398c4f0[6];
  virtual void  v4(); // _ZN7S1398C42v4Ev
  virtual void  v5(); // _ZN7S1398C42v5Ev
  ~S1398C4(); // tgen
  S1398C4(); // tgen
};
//SIG(-1 S1398C4) C1{ v1 v2 Fs[6]}


void  S1398C4 ::v4(){vfunc_called(this, "_ZN7S1398C42v4Ev");}
void  S1398C4 ::v5(){vfunc_called(this, "_ZN7S1398C42v5Ev");}
S1398C4 ::~S1398C4(){ note_dtor("S1398C4", this);} // tgen
S1398C4 ::S1398C4(){ note_ctor("S1398C4", this);} // tgen

static void Test_S1398C4()
{
  extern Class_Descriptor cd_S1398C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1398C4, buf);
    S1398C4 *dp, &lv = *(dp=new (buf) S1398C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1398C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1398C4)");
    check_field_offset(lv, s1398c4f0, ABISELECT(8,4), "S1398C4.s1398c4f0");
    test_class_info(&lv, &cd_S1398C4);
    dp->~S1398C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1398C4(Test_S1398C4, "S1398C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1398C4C1Ev();
extern void _ZN7S1398C4D1Ev();
Name_Map name_map_S1398C4[] = {
  NSPAIR(_ZN7S1398C4C1Ev),
  NSPAIR(_ZN7S1398C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1398C4[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
static  VTBL_ENTRY vtc_S1398C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C4[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
Class_Descriptor cd_S1398C4 = {  "S1398C4", // class name
  0,0,//no base classes
  &(vtc_S1398C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1398C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1398C4),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  S1398C3  : S1398C4 {
  void *s1398c3f0;
  virtual void  v6(); // _ZN7S1398C32v6Ev
  virtual void  v7(); // _ZN7S1398C32v7Ev
  ~S1398C3(); // tgen
  S1398C3(); // tgen
};
//SIG(-1 S1398C3) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S1398C3 ::v6(){vfunc_called(this, "_ZN7S1398C32v6Ev");}
void  S1398C3 ::v7(){vfunc_called(this, "_ZN7S1398C32v7Ev");}
S1398C3 ::~S1398C3(){ note_dtor("S1398C3", this);} // tgen
S1398C3 ::S1398C3(){ note_ctor("S1398C3", this);} // tgen

static void Test_S1398C3()
{
  extern Class_Descriptor cd_S1398C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1398C3, buf);
    S1398C3 *dp, &lv = *(dp=new (buf) S1398C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1398C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1398C3)");
    check_base_class_offset(lv, (S1398C4*), 0, "S1398C3");
    check_field_offset(lv, s1398c3f0, ABISELECT(24,16), "S1398C3.s1398c3f0");
    test_class_info(&lv, &cd_S1398C3);
    dp->~S1398C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1398C3(Test_S1398C3, "S1398C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1398C3C1Ev();
extern void _ZN7S1398C3D1Ev();
Name_Map name_map_S1398C3[] = {
  NSPAIR(_ZN7S1398C3C1Ev),
  NSPAIR(_ZN7S1398C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
static Base_Class bases_S1398C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1398C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1398C3[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C32v6Ev();
extern void _ZN7S1398C32v7Ev();
static  VTBL_ENTRY vtc_S1398C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C3[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S1398C3[];
extern  VTBL_ENTRY _ZTV7S1398C3[];
Class_Descriptor cd_S1398C3 = {  "S1398C3", // class name
  bases_S1398C3, 1,
  &(vtc_S1398C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1398C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1398C3),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  S1398C5  : S1398C4 {
  short s1398c5f0[9];
  __tsi64 s1398c5f1;
  virtual void  v8(); // _ZN7S1398C52v8Ev
  virtual void  v9(); // _ZN7S1398C52v9Ev
  virtual void  v10(); // _ZN7S1398C53v10Ev
  virtual void  v11(); // _ZN7S1398C53v11Ev
  virtual void  v12(); // _ZN7S1398C53v12Ev
  virtual void  v13(); // _ZN7S1398C53v13Ev
  ~S1398C5(); // tgen
  S1398C5(); // tgen
};
//SIG(-1 S1398C5) C1{ BC2{ v7 v8 Fs[6]} v1 v2 v3 v4 v5 v6 Fs[9] FL}


void  S1398C5 ::v8(){vfunc_called(this, "_ZN7S1398C52v8Ev");}
void  S1398C5 ::v9(){vfunc_called(this, "_ZN7S1398C52v9Ev");}
void  S1398C5 ::v10(){vfunc_called(this, "_ZN7S1398C53v10Ev");}
void  S1398C5 ::v11(){vfunc_called(this, "_ZN7S1398C53v11Ev");}
void  S1398C5 ::v12(){vfunc_called(this, "_ZN7S1398C53v12Ev");}
void  S1398C5 ::v13(){vfunc_called(this, "_ZN7S1398C53v13Ev");}
S1398C5 ::~S1398C5(){ note_dtor("S1398C5", this);} // tgen
S1398C5 ::S1398C5(){ note_ctor("S1398C5", this);} // tgen

static void Test_S1398C5()
{
  extern Class_Descriptor cd_S1398C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S1398C5, buf);
    S1398C5 *dp, &lv = *(dp=new (buf) S1398C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S1398C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1398C5)");
    check_base_class_offset(lv, (S1398C4*), 0, "S1398C5");
    check_field_offset(lv, s1398c5f0, ABISELECT(20,16), "S1398C5.s1398c5f0");
    check_field_offset(lv, s1398c5f1, ABISELECT(40,36), "S1398C5.s1398c5f1");
    test_class_info(&lv, &cd_S1398C5);
    dp->~S1398C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1398C5(Test_S1398C5, "S1398C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S1398C5C1Ev();
extern void _ZN7S1398C5D1Ev();
Name_Map name_map_S1398C5[] = {
  NSPAIR(_ZN7S1398C5C1Ev),
  NSPAIR(_ZN7S1398C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
static Base_Class bases_S1398C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1398C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S1398C5[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C52v8Ev();
extern void _ZN7S1398C52v9Ev();
extern void _ZN7S1398C53v10Ev();
extern void _ZN7S1398C53v11Ev();
extern void _ZN7S1398C53v12Ev();
extern void _ZN7S1398C53v13Ev();
static  VTBL_ENTRY vtc_S1398C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C5[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S1398C5[];
extern  VTBL_ENTRY _ZTV7S1398C5[];
Class_Descriptor cd_S1398C5 = {  "S1398C5", // class name
  bases_S1398C5, 1,
  &(vtc_S1398C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S1398C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1398C5),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1398C2  : S1398C3 , virtual S1398C5 , virtual S1398C4 {
  virtual void  v14(); // _ZN7S1398C23v14Ev
  virtual void  v15(); // _ZN7S1398C23v15Ev
  virtual void  v16(); // _ZN7S1398C23v16Ev
  virtual void  v17(); // _ZN7S1398C23v17Ev
  virtual void  v18(); // _ZN7S1398C23v18Ev
  ~S1398C2(); // tgen
  S1398C2(); // tgen
};
//SIG(-1 S1398C2) C1{ BC2{ BC3{ v6 v7 Fs[6]} v8 v9 Fp} VBC4{ BC3 v10 v11 v12 v13 v14 v15 Fs[9] FL} VBC3 v1 v2 v3 v4 v5}


void  S1398C2 ::v14(){vfunc_called(this, "_ZN7S1398C23v14Ev");}
void  S1398C2 ::v15(){vfunc_called(this, "_ZN7S1398C23v15Ev");}
void  S1398C2 ::v16(){vfunc_called(this, "_ZN7S1398C23v16Ev");}
void  S1398C2 ::v17(){vfunc_called(this, "_ZN7S1398C23v17Ev");}
void  S1398C2 ::v18(){vfunc_called(this, "_ZN7S1398C23v18Ev");}
S1398C2 ::~S1398C2(){ note_dtor("S1398C2", this);} // tgen
S1398C2 ::S1398C2(){ note_ctor("S1398C2", this);} // tgen

static void Test_S1398C2()
{
  extern Class_Descriptor cd_S1398C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S1398C2, buf);
    S1398C2 *dp, &lv = *(dp=new (buf) S1398C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S1398C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1398C2)");
    check_base_class_offset(lv, (S1398C4*)(S1398C3*), 0, "S1398C2");
    check_base_class_offset(lv, (S1398C3*), 0, "S1398C2");
    check_base_class_offset(lv, (S1398C4*)(S1398C5*), ABISELECT(32,20), "S1398C2");
    check_base_class_offset(lv, (S1398C5*), ABISELECT(32,20), "S1398C2");
    /*is_ambiguous_... S1398C2::S1398C4 */ AMB_check_base_class_offset(lv, (S1398C4*), ABISELECT(80,64), "S1398C2");
    test_class_info(&lv, &cd_S1398C2);
    dp->~S1398C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1398C2(Test_S1398C2, "S1398C2", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S1398C2C1Ev();
extern void _ZN7S1398C2D1Ev();
Name_Map name_map_S1398C2[] = {
  NSPAIR(_ZN7S1398C2C1Ev),
  NSPAIR(_ZN7S1398C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
extern Class_Descriptor cd_S1398C3;
extern VTBL_ENTRY _ZTI7S1398C3[];
extern  VTBL_ENTRY _ZTV7S1398C3[];
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
extern Class_Descriptor cd_S1398C5;
extern VTBL_ENTRY _ZTI7S1398C5[];
extern  VTBL_ENTRY _ZTV7S1398C5[];
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
static Base_Class bases_S1398C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1398C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1398C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1398C5,    ABISELECT(32,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //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_S1398C4,    ABISELECT(80,64), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //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 _ZTI7S1398C2[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C32v6Ev();
extern void _ZN7S1398C32v7Ev();
extern void _ZN7S1398C23v14Ev();
extern void _ZN7S1398C23v15Ev();
extern void _ZN7S1398C23v16Ev();
extern void _ZN7S1398C23v17Ev();
extern void _ZN7S1398C23v18Ev();
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C52v8Ev();
extern void _ZN7S1398C52v9Ev();
extern void _ZN7S1398C53v10Ev();
extern void _ZN7S1398C53v11Ev();
extern void _ZN7S1398C53v12Ev();
extern void _ZN7S1398C53v13Ev();
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
static  VTBL_ENTRY vtc_S1398C2[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v13Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
};
extern VTBL_ENTRY _ZTV7S1398C2[];
static  VTT_ENTRY vtt_S1398C2[] = {
  {&(_ZTV7S1398C2[4]),  4,37},
  {&(_ZTV7S1398C2[23]),  23,37},
  {&(_ZTV7S1398C2[35]),  35,37},
};
extern VTBL_ENTRY _ZTI7S1398C2[];
extern  VTBL_ENTRY _ZTV7S1398C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1398C2[];
Class_Descriptor cd_S1398C2 = {  "S1398C2", // class name
  bases_S1398C2, 5,
  &(vtc_S1398C2[0]), // expected_vtbl_contents
  &(vtt_S1398C2[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S1398C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1398C2),37, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1398C2),3, //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  S1398C1  : S1398C2 {
  virtual  ~S1398C1(); // _ZN7S1398C1D2Ev
  virtual void  v1(); // _ZN7S1398C12v1Ev
  virtual void  v2(); // _ZN7S1398C12v2Ev
  virtual void  v3(); // _ZN7S1398C12v3Ev
  S1398C1(); // tgen
};
//SIG(1 S1398C1) C1{ BC2{ BC3{ BC4{ v4 v5 Fs[6]} v6 v7 Fp} VBC5{ BC4 v8 v9 v10 v11 v12 v13 Fs[9] FL} VBC4 v14 v15 v16 v17 v18} vd v1 v2 v3}


 S1398C1 ::~S1398C1(){ note_dtor("S1398C1", this);}
void  S1398C1 ::v1(){vfunc_called(this, "_ZN7S1398C12v1Ev");}
void  S1398C1 ::v2(){vfunc_called(this, "_ZN7S1398C12v2Ev");}
void  S1398C1 ::v3(){vfunc_called(this, "_ZN7S1398C12v3Ev");}
S1398C1 ::S1398C1(){ note_ctor("S1398C1", this);} // tgen

static void Test_S1398C1()
{
  extern Class_Descriptor cd_S1398C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S1398C1, buf);
    S1398C1 *dp, &lv = *(dp=new (buf) S1398C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S1398C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1398C1)");
    check_base_class_offset(lv, (S1398C4*)(S1398C3*)(S1398C2*), 0, "S1398C1");
    check_base_class_offset(lv, (S1398C3*)(S1398C2*), 0, "S1398C1");
    check_base_class_offset(lv, (S1398C4*)(S1398C5*), ABISELECT(32,20), "S1398C1");
    check_base_class_offset(lv, (S1398C5*)(S1398C2*), ABISELECT(32,20), "S1398C1");
    /*is_ambiguous_... S1398C2::S1398C4 */ AMB_check_base_class_offset(lv, (S1398C4*)(S1398C2*), ABISELECT(80,64), "S1398C1");
    check_base_class_offset(lv, (S1398C2*), 0, "S1398C1");
    test_class_info(&lv, &cd_S1398C1);
    dp->~S1398C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1398C1(Test_S1398C1, "S1398C1", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S1398C1C1Ev();
extern void _ZN7S1398C1D2Ev();
Name_Map name_map_S1398C1[] = {
  NSPAIR(_ZN7S1398C1C1Ev),
  NSPAIR(_ZN7S1398C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
extern Class_Descriptor cd_S1398C3;
extern VTBL_ENTRY _ZTI7S1398C3[];
extern  VTBL_ENTRY _ZTV7S1398C3[];
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
extern Class_Descriptor cd_S1398C5;
extern VTBL_ENTRY _ZTI7S1398C5[];
extern  VTBL_ENTRY _ZTV7S1398C5[];
extern Class_Descriptor cd_S1398C4;
extern VTBL_ENTRY _ZTI7S1398C4[];
extern  VTBL_ENTRY _ZTV7S1398C4[];
extern Class_Descriptor cd_S1398C2;
extern VTBL_ENTRY _ZTI7S1398C2[];
extern  VTBL_ENTRY _ZTV7S1398C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1398C2[];
static Base_Class bases_S1398C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1398C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S1398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S1398C4,    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
    3, //immediately_derived
  0, 0},
  {&cd_S1398C5,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //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
    5, //immediately_derived
  0, 1},
  {&cd_S1398C4,    ABISELECT(80,64), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //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, 1},
  {&cd_S1398C2,    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 _ZTI7S1398C1[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C32v6Ev();
extern void _ZN7S1398C32v7Ev();
extern void _ZN7S1398C23v14Ev();
extern void _ZN7S1398C23v15Ev();
extern void _ZN7S1398C23v16Ev();
extern void _ZN7S1398C23v17Ev();
extern void _ZN7S1398C23v18Ev();
extern void _ZN7S1398C1D1Ev();
extern void _ZN7S1398C1D0Ev();
extern void _ZN7S1398C12v1Ev();
extern void _ZN7S1398C12v2Ev();
extern void _ZN7S1398C12v3Ev();
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C52v8Ev();
extern void _ZN7S1398C52v9Ev();
extern void _ZN7S1398C53v10Ev();
extern void _ZN7S1398C53v11Ev();
extern void _ZN7S1398C53v12Ev();
extern void _ZN7S1398C53v13Ev();
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
static  VTBL_ENTRY vtc_S1398C1[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C1[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1398C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1398C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1398C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1398C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1398C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1398C1[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v13Ev,
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S1398C1[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
};
extern VTBL_ENTRY _ZTV7S1398C1[];
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C32v6Ev();
extern void _ZN7S1398C32v7Ev();
extern void _ZN7S1398C23v14Ev();
extern void _ZN7S1398C23v15Ev();
extern void _ZN7S1398C23v16Ev();
extern void _ZN7S1398C23v17Ev();
extern void _ZN7S1398C23v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1398C2__7S1398C1[] = {
  ABISELECT(80,64),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1398C23v18Ev,
};
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
extern void _ZN7S1398C52v8Ev();
extern void _ZN7S1398C52v9Ev();
extern void _ZN7S1398C53v10Ev();
extern void _ZN7S1398C53v11Ev();
extern void _ZN7S1398C53v12Ev();
extern void _ZN7S1398C53v13Ev();
static  VTBL_ENTRY _tg__ZTV7S1398C5__7S1398C2__7S1398C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1398C52v9Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v10Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v11Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v12Ev,
  (VTBL_ENTRY)&_ZN7S1398C53v13Ev,
};
extern void _ZN7S1398C42v4Ev();
extern void _ZN7S1398C42v5Ev();
static  VTBL_ENTRY _tg__ZTV7S1398C4__A2__7S1398C2__7S1398C1[] = {
  0,
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI7S1398C2[0]),
  (VTBL_ENTRY)&_ZN7S1398C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1398C42v5Ev,
};
static  VTT_ENTRY vtt_S1398C1[] = {
  {&(_ZTV7S1398C1[4]),  4,42},
  {&(_tg__ZTV7S1398C2__7S1398C1[4]),  4,13},
  {&(_tg__ZTV7S1398C5__7S1398C2__7S1398C1[10]),  10,18},
  {&(_tg__ZTV7S1398C4__A2__7S1398C2__7S1398C1[4]),  4,6},
  {&(_ZTV7S1398C1[28]),  28,42},
  {&(_ZTV7S1398C1[40]),  40,42},
};
extern VTBL_ENTRY _ZTI7S1398C1[];
extern  VTBL_ENTRY _ZTV7S1398C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1398C1[];
Class_Descriptor cd_S1398C1 = {  "S1398C1", // class name
  bases_S1398C1, 6,
  &(vtc_S1398C1[0]), // expected_vtbl_contents
  &(vtt_S1398C1[0]), // expected_vtt_contents
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S1398C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1398C1),42, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1398C1),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3383C3  {
  char s3383c3f0;
  virtual void  v7(); // _ZN7S3383C32v7Ev
  virtual void  v8(); // _ZN7S3383C32v8Ev
  virtual void  v9(); // _ZN7S3383C32v9Ev
  virtual void  v10(); // _ZN7S3383C33v10Ev
  virtual void  v11(); // _ZN7S3383C33v11Ev
  virtual void  v12(); // _ZN7S3383C33v12Ev
  ~S3383C3(); // tgen
  S3383C3(); // tgen
};
//SIG(-1 S3383C3) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S3383C3 ::v7(){vfunc_called(this, "_ZN7S3383C32v7Ev");}
void  S3383C3 ::v8(){vfunc_called(this, "_ZN7S3383C32v8Ev");}
void  S3383C3 ::v9(){vfunc_called(this, "_ZN7S3383C32v9Ev");}
void  S3383C3 ::v10(){vfunc_called(this, "_ZN7S3383C33v10Ev");}
void  S3383C3 ::v11(){vfunc_called(this, "_ZN7S3383C33v11Ev");}
void  S3383C3 ::v12(){vfunc_called(this, "_ZN7S3383C33v12Ev");}
S3383C3 ::~S3383C3(){ note_dtor("S3383C3", this);} // tgen
S3383C3 ::S3383C3(){ note_ctor("S3383C3", this);} // tgen

static void Test_S3383C3()
{
  extern Class_Descriptor cd_S3383C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3383C3, buf);
    S3383C3 *dp, &lv = *(dp=new (buf) S3383C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3383C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3383C3)");
    check_field_offset(lv, s3383c3f0, ABISELECT(8,4), "S3383C3.s3383c3f0");
    test_class_info(&lv, &cd_S3383C3);
    dp->~S3383C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3383C3(Test_S3383C3, "S3383C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3383C3C1Ev();
extern void _ZN7S3383C3D1Ev();
Name_Map name_map_S3383C3[] = {
  NSPAIR(_ZN7S3383C3C1Ev),
  NSPAIR(_ZN7S3383C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3383C3[];
extern void _ZN7S3383C32v7Ev();
extern void _ZN7S3383C32v8Ev();
extern void _ZN7S3383C32v9Ev();
extern void _ZN7S3383C33v10Ev();
extern void _ZN7S3383C33v11Ev();
extern void _ZN7S3383C33v12Ev();
static  VTBL_ENTRY vtc_S3383C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3383C3[0]),
  (VTBL_ENTRY)&_ZN7S3383C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S3383C3[];
extern  VTBL_ENTRY _ZTV7S3383C3[];
Class_Descriptor cd_S3383C3 = {  "S3383C3", // class name
  0,0,//no base classes
  &(vtc_S3383C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3383C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3383C3),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  S3383C2  : S3383C3 {
  int s3383c2f0;
  virtual void  v13(); // _ZN7S3383C23v13Ev
  virtual void  v14(); // _ZN7S3383C23v14Ev
  ~S3383C2(); // tgen
  S3383C2(); // tgen
};
//SIG(-1 S3383C2) C1{ BC2{ v3 v4 v5 v6 v7 v8 Fc} v1 v2 Fi}


void  S3383C2 ::v13(){vfunc_called(this, "_ZN7S3383C23v13Ev");}
void  S3383C2 ::v14(){vfunc_called(this, "_ZN7S3383C23v14Ev");}
S3383C2 ::~S3383C2(){ note_dtor("S3383C2", this);} // tgen
S3383C2 ::S3383C2(){ note_ctor("S3383C2", this);} // tgen

static void Test_S3383C2()
{
  extern Class_Descriptor cd_S3383C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3383C2, buf);
    S3383C2 *dp, &lv = *(dp=new (buf) S3383C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3383C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3383C2)");
    check_base_class_offset(lv, (S3383C3*), 0, "S3383C2");
    check_field_offset(lv, s3383c2f0, ABISELECT(12,8), "S3383C2.s3383c2f0");
    test_class_info(&lv, &cd_S3383C2);
    dp->~S3383C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3383C2(Test_S3383C2, "S3383C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3383C2C1Ev();
extern void _ZN7S3383C2D1Ev();
Name_Map name_map_S3383C2[] = {
  NSPAIR(_ZN7S3383C2C1Ev),
  NSPAIR(_ZN7S3383C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3383C3;
extern VTBL_ENTRY _ZTI7S3383C3[];
extern  VTBL_ENTRY _ZTV7S3383C3[];
static Base_Class bases_S3383C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3383C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3383C2[];
extern void _ZN7S3383C32v7Ev();
extern void _ZN7S3383C32v8Ev();
extern void _ZN7S3383C32v9Ev();
extern void _ZN7S3383C33v10Ev();
extern void _ZN7S3383C33v11Ev();
extern void _ZN7S3383C33v12Ev();
extern void _ZN7S3383C23v13Ev();
extern void _ZN7S3383C23v14Ev();
static  VTBL_ENTRY vtc_S3383C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3383C2[0]),
  (VTBL_ENTRY)&_ZN7S3383C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3383C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3383C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S3383C2[];
extern  VTBL_ENTRY _ZTV7S3383C2[];
Class_Descriptor cd_S3383C2 = {  "S3383C2", // class name
  bases_S3383C2, 1,
  &(vtc_S3383C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3383C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3383C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3383C5  {
  virtual void  v15(); // _ZN7S3383C53v15Ev
  virtual void  v16(); // _ZN7S3383C53v16Ev
  virtual void  v17(); // _ZN7S3383C53v17Ev
  virtual void  v18(); // _ZN7S3383C53v18Ev
  virtual void  v19(); // _ZN7S3383C53v19Ev
  ~S3383C5(); // tgen
  S3383C5(); // tgen
};
//SIG(-1 S3383C5) C1{ v1 v2 v3 v4 v5}


void  S3383C5 ::v15(){vfunc_called(this, "_ZN7S3383C53v15Ev");}
void  S3383C5 ::v16(){vfunc_called(this, "_ZN7S3383C53v16Ev");}
void  S3383C5 ::v17(){vfunc_called(this, "_ZN7S3383C53v17Ev");}
void  S3383C5 ::v18(){vfunc_called(this, "_ZN7S3383C53v18Ev");}
void  S3383C5 ::v19(){vfunc_called(this, "_ZN7S3383C53v19Ev");}
S3383C5 ::~S3383C5(){ note_dtor("S3383C5", this);} // tgen
S3383C5 ::S3383C5(){ note_ctor("S3383C5", this);} // tgen

static void Test_S3383C5()
{
  extern Class_Descriptor cd_S3383C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3383C5, buf);
    S3383C5 *dp, &lv = *(dp=new (buf) S3383C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3383C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3383C5)");
    test_class_info(&lv, &cd_S3383C5);
    dp->~S3383C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3383C5(Test_S3383C5, "S3383C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3383C5C1Ev();
extern void _ZN7S3383C5D1Ev();
Name_Map name_map_S3383C5[] = {
  NSPAIR(_ZN7S3383C5C1Ev),
  NSPAIR(_ZN7S3383C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3383C5[];
extern void _ZN7S3383C53v15Ev();
extern void _ZN7S3383C53v16Ev();
extern void _ZN7S3383C53v17Ev();
extern void _ZN7S3383C53v18Ev();
extern void _ZN7S3383C53v19Ev();
static  VTBL_ENTRY vtc_S3383C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3383C5[0]),
  (VTBL_ENTRY)&_ZN7S3383C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v16Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v17Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v19Ev,
};
extern VTBL_ENTRY _ZTI7S3383C5[];
extern  VTBL_ENTRY _ZTV7S3383C5[];
Class_Descriptor cd_S3383C5 = {  "S3383C5", // class name
  0,0,//no base classes
  &(vtc_S3383C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3383C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3383C5),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  S3383C4  : S3383C5 {
  ::S3383C5 s3383c4f0;
  virtual void  v20(); // _ZN7S3383C43v20Ev
  virtual void  v21(); // _ZN7S3383C43v21Ev
  virtual void  v22(); // _ZN7S3383C43v22Ev
  virtual void  v23(); // _ZN7S3383C43v23Ev
  ~S3383C4(); // tgen
  S3383C4(); // tgen
};
//SIG(-1 S3383C4) C1{ BC2{ v5 v6 v7 v8 v9} v1 v2 v3 v4 FC2}


void  S3383C4 ::v20(){vfunc_called(this, "_ZN7S3383C43v20Ev");}
void  S3383C4 ::v21(){vfunc_called(this, "_ZN7S3383C43v21Ev");}
void  S3383C4 ::v22(){vfunc_called(this, "_ZN7S3383C43v22Ev");}
void  S3383C4 ::v23(){vfunc_called(this, "_ZN7S3383C43v23Ev");}
S3383C4 ::~S3383C4(){ note_dtor("S3383C4", this);} // tgen
S3383C4 ::S3383C4(){ note_ctor("S3383C4", this);} // tgen

static void Test_S3383C4()
{
  extern Class_Descriptor cd_S3383C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3383C4, buf);
    S3383C4 *dp, &lv = *(dp=new (buf) S3383C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3383C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3383C4)");
    check_base_class_offset(lv, (S3383C5*), 0, "S3383C4");
    check_field_offset(lv, s3383c4f0, ABISELECT(8,4), "S3383C4.s3383c4f0");
    test_class_info(&lv, &cd_S3383C4);
    dp->~S3383C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3383C4(Test_S3383C4, "S3383C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3383C4C1Ev();
extern void _ZN7S3383C4D1Ev();
Name_Map name_map_S3383C4[] = {
  NSPAIR(_ZN7S3383C4C1Ev),
  NSPAIR(_ZN7S3383C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3383C5;
extern VTBL_ENTRY _ZTI7S3383C5[];
extern  VTBL_ENTRY _ZTV7S3383C5[];
static Base_Class bases_S3383C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3383C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3383C4[];
extern void _ZN7S3383C53v15Ev();
extern void _ZN7S3383C53v16Ev();
extern void _ZN7S3383C53v17Ev();
extern void _ZN7S3383C53v18Ev();
extern void _ZN7S3383C53v19Ev();
extern void _ZN7S3383C43v20Ev();
extern void _ZN7S3383C43v21Ev();
extern void _ZN7S3383C43v22Ev();
extern void _ZN7S3383C43v23Ev();
static  VTBL_ENTRY vtc_S3383C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3383C4[0]),
  (VTBL_ENTRY)&_ZN7S3383C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v16Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v17Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v23Ev,
};
extern VTBL_ENTRY _ZTI7S3383C4[];
extern  VTBL_ENTRY _ZTV7S3383C4[];
Class_Descriptor cd_S3383C4 = {  "S3383C4", // class name
  bases_S3383C4, 1,
  &(vtc_S3383C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3383C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3383C4),11, //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  S3383C1  : S3383C2 , virtual S3383C4 {
  virtual void  v1(); // _ZN7S3383C12v1Ev
  virtual void  v2(); // _ZN7S3383C12v2Ev
  virtual void  v3(); // _ZN7S3383C12v3Ev
  virtual void  v4(); // _ZN7S3383C12v4Ev
  virtual void  v5(); // _ZN7S3383C12v5Ev
  virtual void  v6(); // _ZN7S3383C12v6Ev
  ~S3383C1(); // tgen
  S3383C1(); // tgen
};
//SIG(1 S3383C1) C1{ BC2{ BC3{ v7 v8 v9 v10 v11 v12 Fc} v13 v14 Fi} VBC4{ BC5{ v15 v16 v17 v18 v19} v20 v21 v22 v23 FC5} v1 v2 v3 v4 v5 v6}


void  S3383C1 ::v1(){vfunc_called(this, "_ZN7S3383C12v1Ev");}
void  S3383C1 ::v2(){vfunc_called(this, "_ZN7S3383C12v2Ev");}
void  S3383C1 ::v3(){vfunc_called(this, "_ZN7S3383C12v3Ev");}
void  S3383C1 ::v4(){vfunc_called(this, "_ZN7S3383C12v4Ev");}
void  S3383C1 ::v5(){vfunc_called(this, "_ZN7S3383C12v5Ev");}
void  S3383C1 ::v6(){vfunc_called(this, "_ZN7S3383C12v6Ev");}
S3383C1 ::~S3383C1(){ note_dtor("S3383C1", this);} // tgen
S3383C1 ::S3383C1(){ note_ctor("S3383C1", this);} // tgen

static void Test_S3383C1()
{
  extern Class_Descriptor cd_S3383C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3383C1, buf);
    S3383C1 *dp, &lv = *(dp=new (buf) S3383C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3383C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3383C1)");
    check_base_class_offset(lv, (S3383C3*)(S3383C2*), 0, "S3383C1");
    check_base_class_offset(lv, (S3383C2*), 0, "S3383C1");
    check_base_class_offset(lv, (S3383C5*)(S3383C4*), ABISELECT(16,12), "S3383C1");
    check_base_class_offset(lv, (S3383C4*), ABISELECT(16,12), "S3383C1");
    test_class_info(&lv, &cd_S3383C1);
    dp->~S3383C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3383C1(Test_S3383C1, "S3383C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3383C1C1Ev();
extern void _ZN7S3383C1D1Ev();
Name_Map name_map_S3383C1[] = {
  NSPAIR(_ZN7S3383C1C1Ev),
  NSPAIR(_ZN7S3383C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3383C3;
extern VTBL_ENTRY _ZTI7S3383C3[];
extern  VTBL_ENTRY _ZTV7S3383C3[];
extern Class_Descriptor cd_S3383C2;
extern VTBL_ENTRY _ZTI7S3383C2[];
extern  VTBL_ENTRY _ZTV7S3383C2[];
extern Class_Descriptor cd_S3383C5;
extern VTBL_ENTRY _ZTI7S3383C5[];
extern  VTBL_ENTRY _ZTV7S3383C5[];
extern Class_Descriptor cd_S3383C4;
extern VTBL_ENTRY _ZTI7S3383C4[];
extern  VTBL_ENTRY _ZTV7S3383C4[];
static Base_Class bases_S3383C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3383C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S3383C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3383C5,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3383C4,    ABISELECT(16,12), //bcp->offset
    17, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3383C1[];
extern void _ZN7S3383C32v7Ev();
extern void _ZN7S3383C32v8Ev();
extern void _ZN7S3383C32v9Ev();
extern void _ZN7S3383C33v10Ev();
extern void _ZN7S3383C33v11Ev();
extern void _ZN7S3383C33v12Ev();
extern void _ZN7S3383C23v13Ev();
extern void _ZN7S3383C23v14Ev();
extern void _ZN7S3383C12v1Ev();
extern void _ZN7S3383C12v2Ev();
extern void _ZN7S3383C12v3Ev();
extern void _ZN7S3383C12v4Ev();
extern void _ZN7S3383C12v5Ev();
extern void _ZN7S3383C12v6Ev();
extern void _ZN7S3383C53v15Ev();
extern void _ZN7S3383C53v16Ev();
extern void _ZN7S3383C53v17Ev();
extern void _ZN7S3383C53v18Ev();
extern void _ZN7S3383C53v19Ev();
extern void _ZN7S3383C43v20Ev();
extern void _ZN7S3383C43v21Ev();
extern void _ZN7S3383C43v22Ev();
extern void _ZN7S3383C43v23Ev();
static  VTBL_ENTRY vtc_S3383C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3383C1[0]),
  (VTBL_ENTRY)&_ZN7S3383C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3383C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3383C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3383C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3383C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3383C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3383C1[0]),
  (VTBL_ENTRY)&_ZN7S3383C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v16Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v17Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3383C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3383C43v23Ev,
};
extern VTBL_ENTRY _ZTV7S3383C1[];
static  VTT_ENTRY vtt_S3383C1[] = {
  {&(_ZTV7S3383C1[3]),  3,37},
  {&(_ZTV7S3383C1[28]),  28,37},
};
extern VTBL_ENTRY _ZTI7S3383C1[];
extern  VTBL_ENTRY _ZTV7S3383C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3383C1[];
Class_Descriptor cd_S3383C1 = {  "S3383C1", // class name
  bases_S3383C1, 4,
  &(vtc_S3383C1[0]), // expected_vtbl_contents
  &(vtt_S3383C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3383C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3383C1),37, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3383C1),2, //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  S7744C3  : virtual S19169C6_nt {
  __tsi64 s7744c3f0;
  ~S7744C3(); // tgen
  S7744C3(); // tgen
};
//SIG(-1 S7744C3) C1{ VBC2{ m Fp[6]} FL}


S7744C3 ::~S7744C3(){ note_dtor("S7744C3", this);} // tgen
S7744C3 ::S7744C3(){ note_ctor("S7744C3", this);} // tgen

static void Test_S7744C3()
{
  extern Class_Descriptor cd_S7744C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7744C3, buf);
    S7744C3 *dp, &lv = *(dp=new (buf) S7744C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7744C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7744C3)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S7744C3");
    check_field_offset(lv, s7744c3f0, ABISELECT(8,4), "S7744C3.s7744c3f0");
    test_class_info(&lv, &cd_S7744C3);
    dp->~S7744C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7744C3(Test_S7744C3, "S7744C3", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S7744C3C1Ev();
extern void _ZN7S7744C3D1Ev();
Name_Map name_map_S7744C3[] = {
  NSPAIR(_ZN7S7744C3C1Ev),
  NSPAIR(_ZN7S7744C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S7744C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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},
  {0}};
extern VTBL_ENTRY _ZTI7S7744C3[];
static  VTBL_ENTRY vtc_S7744C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C3[0]),
};
extern VTBL_ENTRY _ZTV7S7744C3[];
static  VTT_ENTRY vtt_S7744C3[] = {
  {&(_ZTV7S7744C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7744C3[];
extern  VTBL_ENTRY _ZTV7S7744C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C3[];
Class_Descriptor cd_S7744C3 = {  "S7744C3", // class name
  bases_S7744C3, 1,
  &(vtc_S7744C3[0]), // expected_vtbl_contents
  &(vtt_S7744C3[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S7744C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7744C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7744C3),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  S7744C5  : virtual S19169C11_nt , S2014C38 {
  __tsi64 s7744c5f0:8;
  ~S7744C5(); // tgen
  S7744C5(); // tgen
};
//SIG(-1 S7744C5) C1{ VBC2{ vd m} BC3{ m} FL:8}


S7744C5 ::~S7744C5(){ note_dtor("S7744C5", this);} // tgen
S7744C5 ::S7744C5(){ note_ctor("S7744C5", this);} // tgen

static void Test_S7744C5()
{
  extern Class_Descriptor cd_S7744C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,3)];
    init_test(&cd_S7744C5, buf);
    S7744C5 *dp, &lv = *(dp=new (buf) S7744C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7744C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7744C5)");
    check_base_class_offset(lv, (S19169C11_nt*), 0, "S7744C5");
    check_base_class_offset(lv, (S2014C38*), 0, "S7744C5");
    set_bf_and_test(lv, s7744c5f0, ABISELECT(8,4), 0, 8, 1, "S7744C5");
    set_bf_and_test(lv, s7744c5f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7744C5");
    test_class_info(&lv, &cd_S7744C5);
    dp->~S7744C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7744C5(Test_S7744C5, "S7744C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7744C5C1Ev();
extern void _ZN7S7744C5D1Ev();
Name_Map name_map_S7744C5[] = {
  NSPAIR(_ZN7S7744C5C1Ev),
  NSPAIR(_ZN7S7744C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
static Base_Class bases_S7744C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C11_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_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7744C5[];
extern void _ZN7S7744C5D1Ev();
extern void _ZN7S7744C5D0Ev();
static  VTBL_ENTRY vtc_S7744C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C5[0]),
  (VTBL_ENTRY)&_ZN7S7744C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7744C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S7744C5[];
static  VTT_ENTRY vtt_S7744C5[] = {
  {&(_ZTV7S7744C5[4]),  4,6},
  {&(_ZTV7S7744C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7744C5[];
extern  VTBL_ENTRY _ZTV7S7744C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C5[];
Class_Descriptor cd_S7744C5 = {  "S7744C5", // class name
  bases_S7744C5, 2,
  &(vtc_S7744C5[0]), // expected_vtbl_contents
  &(vtt_S7744C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7744C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7744C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7744C5),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  S7744C2  : virtual S7744C3 , S7744C5 , virtual S19169C3_nt {
  int s7744c2f0;
  virtual  ~S7744C2(); // _ZN7S7744C2D2Ev
  S7744C2(); // tgen
};
//SIG(-1 S7744C2) C1{ VBC2{ VBC3{ m Fp[6]} FL} BC4{ VBC5{ vd m} BC6{ m} FL:8} VBC7{ m Fl[10]} vd Fi}


 S7744C2 ::~S7744C2(){ note_dtor("S7744C2", this);}
S7744C2 ::S7744C2(){ note_ctor("S7744C2", this);} // tgen

static void Test_S7744C2()
{
  extern Class_Descriptor cd_S7744C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S7744C2, buf);
    S7744C2 *dp, &lv = *(dp=new (buf) S7744C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S7744C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7744C2)");
    check_base_class_offset(lv, (S19169C6_nt*)(S7744C3*), ABISELECT(32,24), "S7744C2");
    check_base_class_offset(lv, (S7744C3*), ABISELECT(16,12), "S7744C2");
    check_base_class_offset(lv, (S19169C11_nt*)(S7744C5*), 0, "S7744C2");
    check_base_class_offset(lv, (S2014C38*)(S7744C5*), 0, "S7744C2");
    check_base_class_offset(lv, (S7744C5*), 0, "S7744C2");
    check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(80,48), "S7744C2");
    check_field_offset(lv, s7744c2f0, ABISELECT(12,8), "S7744C2.s7744c2f0");
    test_class_info(&lv, &cd_S7744C2);
    dp->~S7744C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7744C2(Test_S7744C2, "S7744C2", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN7S7744C2C1Ev();
extern void _ZN7S7744C2D2Ev();
Name_Map name_map_S7744C2[] = {
  NSPAIR(_ZN7S7744C2C1Ev),
  NSPAIR(_ZN7S7744C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S7744C3;
extern VTBL_ENTRY _ZTI7S7744C3[];
extern  VTBL_ENTRY _ZTV7S7744C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C3[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7744C5;
extern VTBL_ENTRY _ZTI7S7744C5[];
extern  VTBL_ENTRY _ZTV7S7744C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C5[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
static Base_Class bases_S7744C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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
  0, 1},
  {&cd_S7744C3,    ABISELECT(16,12), //bcp->offset
    9, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19169C11_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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7744C5,    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_S19169C3_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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7744C2[];
extern void _ZN7S7744C2D1Ev();
extern void _ZN7S7744C2D0Ev();
static  VTBL_ENTRY vtc_S7744C2[] = {
  ABISELECT(80,48),
  ABISELECT(32,24),
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C2[0]),
  (VTBL_ENTRY)&_ZN7S7744C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7744C2D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7744C2[0]),
};
extern VTBL_ENTRY _ZTV7S7744C2[];
extern void _ZN7S7744C5D1Ev();
extern void _ZN7S7744C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7744C5__7S7744C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C5[0]),
  (VTBL_ENTRY)&_ZN7S7744C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7744C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7744C3__7S7744C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C3[0]),
};
static  VTT_ENTRY vtt_S7744C2[] = {
  {&(_ZTV7S7744C2[7]),  7,12},
  {&(_tg__ZTV7S7744C5__7S7744C2[4]),  4,6},
  {&(_tg__ZTV7S7744C5__7S7744C2[4]),  4,6},
  {&(_ZTV7S7744C2[12]),  12,12},
  {&(_ZTV7S7744C2[7]),  7,12},
  {&(_tg__ZTV7S7744C3__7S7744C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7744C2[];
extern  VTBL_ENTRY _ZTV7S7744C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C2[];
Class_Descriptor cd_S7744C2 = {  "S7744C2", // class name
  bases_S7744C2, 6,
  &(vtc_S7744C2[0]), // expected_vtbl_contents
  &(vtt_S7744C2[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI7S7744C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7744C2),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7744C2),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  S7744C9  : S19169C16_nt , S19169C6_nt , virtual S7744C3 , virtual S19169C3_nt {
  int s7744c9f0;
  ~S7744C9(); // tgen
  S7744C9(); // tgen
};
//SIG(-1 S7744C9) C1{ BC2{ m FC3{ VBC4{ m Fp[6]} FL}} BC4 VBC5{ VBC4 FL} VBC6{ m Fl[10]} Fi}


S7744C9 ::~S7744C9(){ note_dtor("S7744C9", this);} // tgen
S7744C9 ::S7744C9(){ note_ctor("S7744C9", this);} // tgen

static void Test_S7744C9()
{
  extern Class_Descriptor cd_S7744C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,37)];
    init_test(&cd_S7744C9, buf);
    S7744C9 *dp, &lv = *(dp=new (buf) S7744C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,144), "sizeof(S7744C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7744C9)");
    check_base_class_offset(lv, (S19169C16_nt*), ABISELECT(8,4), "S7744C9");
    /*is_ambiguous_... S7744C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(72,40), "S7744C9");
    check_base_class_offset(lv, (S19169C6_nt*)(S7744C3*), ABISELECT(144,80), "S7744C9");
    check_base_class_offset(lv, (S7744C3*), ABISELECT(128,68), "S7744C9");
    check_base_class_offset(lv, (S19169C3_nt*), ABISELECT(192,104), "S7744C9");
    check_field_offset(lv, s7744c9f0, ABISELECT(120,64), "S7744C9.s7744c9f0");
    test_class_info(&lv, &cd_S7744C9);
    dp->~S7744C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7744C9(Test_S7744C9, "S7744C9", ABISELECT(272,144));

#else // __cplusplus

extern void _ZN7S7744C9C1Ev();
extern void _ZN7S7744C9D1Ev();
Name_Map name_map_S7744C9[] = {
  NSPAIR(_ZN7S7744C9C1Ev),
  NSPAIR(_ZN7S7744C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S7744C3;
extern VTBL_ENTRY _ZTI7S7744C3[];
extern  VTBL_ENTRY _ZTV7S7744C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C3[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
static Base_Class bases_S7744C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C16_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_S19169C6_nt,    ABISELECT(72,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C6_nt,    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
    3, //immediately_derived
  0, 1},
  {&cd_S7744C3,    ABISELECT(128,68), //bcp->offset
    5, //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},
  {&cd_S19169C3_nt,    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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7744C9[];
static  VTBL_ENTRY vtc_S7744C9[] = {
  ABISELECT(192,104),
  ABISELECT(144,80),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C9[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7744C9[0]),
};
extern VTBL_ENTRY _ZTV7S7744C9[];
static  VTBL_ENTRY _tg__ZTV7S7744C3__7S7744C9[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C3[0]),
};
static  VTT_ENTRY vtt_S7744C9[] = {
  {&(_ZTV7S7744C9[5]),  5,8},
  {&(_ZTV7S7744C9[8]),  8,8},
  {&(_tg__ZTV7S7744C3__7S7744C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7744C9[];
extern  VTBL_ENTRY _ZTV7S7744C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C9[];
Class_Descriptor cd_S7744C9 = {  "S7744C9", // class name
  bases_S7744C9, 5,
  &(vtc_S7744C9[0]), // expected_vtbl_contents
  &(vtt_S7744C9[0]), // expected_vtt_contents
  ABISELECT(272,144), // object size
  NSPAIRA(_ZTI7S7744C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7744C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7744C9),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  S7744C1  : S7744C2 , S7744C9 {
  int s7744c1f0;
  virtual  ~S7744C1(); // _ZN7S7744C1D2Ev
  S7744C1(); // tgen
};
//SIG(1 S7744C1) C1{ BC2{ VBC3{ VBC4{ m Fp[6]} FL} BC5{ VBC6{ vd m} BC7{ m} FL:8} VBC8{ m Fl[10]} vd Fi} BC9{ BC10{ m FC11{ VBC4 FL}} BC4 VBC3 VBC8 Fi} vd Fi}


 S7744C1 ::~S7744C1(){ note_dtor("S7744C1", this);}
S7744C1 ::S7744C1(){ note_ctor("S7744C1", this);} // tgen

static void Test_S7744C1()
{
  extern Class_Descriptor cd_S7744C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,41)];
    init_test(&cd_S7744C1, buf);
    S7744C1 *dp, &lv = *(dp=new (buf) S7744C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,160), "sizeof(S7744C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7744C1)");
    check_base_class_offset(lv, (S19169C6_nt*)(S7744C3*), ABISELECT(160,96), "S7744C1");
    check_base_class_offset(lv, (S7744C3*)(S7744C2*), ABISELECT(144,84), "S7744C1");
    check_base_class_offset(lv, (S7744C3*)(S7744C9*), ABISELECT(144,84), "S7744C1");
    check_base_class_offset(lv, (S19169C11_nt*)(S7744C5*)(S7744C2*), 0, "S7744C1");
    check_base_class_offset(lv, (S2014C38*)(S7744C5*)(S7744C2*), 0, "S7744C1");
    check_base_class_offset(lv, (S7744C5*)(S7744C2*), 0, "S7744C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S7744C2*), ABISELECT(208,120), "S7744C1");
    check_base_class_offset(lv, (S19169C3_nt*)(S7744C9*), ABISELECT(208,120), "S7744C1");
    check_base_class_offset(lv, (S7744C2*), 0, "S7744C1");
    check_base_class_offset(lv, (S19169C16_nt*)(S7744C9*), ABISELECT(24,16), "S7744C1");
    /*is_ambiguous_... S7744C9::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S7744C9*), ABISELECT(88,52), "S7744C1");
    check_base_class_offset(lv, (S7744C9*), ABISELECT(16,12), "S7744C1");
    check_field_offset(lv, s7744c1f0, ABISELECT(140,80), "S7744C1.s7744c1f0");
    test_class_info(&lv, &cd_S7744C1);
    dp->~S7744C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7744C1(Test_S7744C1, "S7744C1", ABISELECT(288,160));

#else // __cplusplus

extern void _ZN7S7744C1C1Ev();
extern void _ZN7S7744C1D2Ev();
Name_Map name_map_S7744C1[] = {
  NSPAIR(_ZN7S7744C1C1Ev),
  NSPAIR(_ZN7S7744C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S7744C3;
extern VTBL_ENTRY _ZTI7S7744C3[];
extern  VTBL_ENTRY _ZTV7S7744C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C3[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
extern Class_Descriptor cd_S2014C38;
extern VTBL_ENTRY _ZTI8S2014C38[];
extern Class_Descriptor cd_S7744C5;
extern VTBL_ENTRY _ZTI7S7744C5[];
extern  VTBL_ENTRY _ZTV7S7744C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C5[];
extern Class_Descriptor cd_S19169C3_nt;
extern VTBL_ENTRY _ZTI11S19169C3_nt[];
extern Class_Descriptor cd_S7744C2;
extern VTBL_ENTRY _ZTI7S7744C2[];
extern  VTBL_ENTRY _ZTV7S7744C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C2[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S7744C9;
extern VTBL_ENTRY _ZTI7S7744C9[];
extern  VTBL_ENTRY _ZTV7S7744C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C9[];
static Base_Class bases_S7744C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7744C3,    ABISELECT(144,84), //bcp->offset
    14, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19169C11_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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2014C38,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7744C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19169C3_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
    6, //immediately_derived
  0, 1},
  {&cd_S7744C2,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19169C16_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
    9, //immediately_derived
  0, 0},
  {&cd_S19169C6_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
    9, //immediately_derived
  0, 0},
  {&cd_S7744C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7744C1[];
extern void _ZN7S7744C1D1Ev();
extern void _ZN7S7744C1D0Ev();
static  VTBL_ENTRY vtc_S7744C1[] = {
  ABISELECT(208,120),
  ABISELECT(160,96),
  ABISELECT(144,84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C1[0]),
  (VTBL_ENTRY)&_ZN7S7744C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7744C1D0Ev,
  ABISELECT(192,108),
  ABISELECT(144,84),
  ABISELECT(128,72),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7744C1[0]),
  ABISELECT(16,12),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7744C1[0]),
};
extern VTBL_ENTRY _ZTV7S7744C1[];
extern void _ZN7S7744C2D1Ev();
extern void _ZN7S7744C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7744C2__7S7744C1[] = {
  ABISELECT(208,120),
  ABISELECT(160,96),
  ABISELECT(144,84),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C2[0]),
  (VTBL_ENTRY)&_ZN7S7744C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7744C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7744C5D1Ev,_ZTv0_n12_N7S7744C5D1Ev)();
extern void _ZN7S7744C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7744C5D0Ev,_ZTv0_n12_N7S7744C5D0Ev)();
extern void _ZN7S7744C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7744C57S7744C2__7S7744C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7744C5D1Ev,_ZTv0_n12_N7S7744C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7744C5D0Ev,_ZTv0_n12_N7S7744C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7744C3__7S7744C2__7S7744C1[] = {
  ABISELECT(16,12),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7744C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7744C9__7S7744C1[] = {
  ABISELECT(192,108),
  ABISELECT(144,84),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7744C3__7S7744C9__7S7744C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7744C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7744C3__7S7744C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7744C3[0]),
};
static  VTT_ENTRY vtt_S7744C1[] = {
  {&(_ZTV7S7744C1[7]),  7,17},
  {&(_tg__ZTV7S7744C2__7S7744C1[7]),  7,9},
  {&(_tg__ZTV7S7744C57S7744C2__7S7744C1[4]),  4,6},
  {&(_tg__ZTV7S7744C57S7744C2__7S7744C1[4]),  4,6},
  {&(_tg__ZTV7S7744C3__7S7744C2__7S7744C1[3]),  3,3},
  {&(_tg__ZTV7S7744C2__7S7744C1[7]),  7,9},
  {&(_tg__ZTV7S7744C9__7S7744C1[5]),  5,5},
  {&(_tg__ZTV7S7744C3__7S7744C9__7S7744C1[3]),  3,3},
  {&(_ZTV7S7744C1[17]),  17,17},
  {&(_ZTV7S7744C1[7]),  7,17},
  {&(_ZTV7S7744C1[14]),  14,17},
  {&(_tg__ZTV7S7744C3__7S7744C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7744C1[];
extern  VTBL_ENTRY _ZTV7S7744C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7744C1[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7744C5D0Ev,_ZTv0_n12_N7S7744C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7744C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7744C5D1Ev,_ZTv0_n12_N7S7744C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7744C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7744C1 = {  "S7744C1", // class name
  bases_S7744C1, 10,
  &(vtc_S7744C1[0]), // expected_vtbl_contents
  &(vtt_S7744C1[0]), // expected_vtt_contents
  ABISELECT(288,160), // object size
  NSPAIRA(_ZTI7S7744C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7744C1),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7744C1),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19334C3  {
  virtual void  v3(); // _ZN8S19334C32v3Ev
  virtual void  v4(); // _ZN8S19334C32v4Ev
  virtual void  v5(); // _ZN8S19334C32v5Ev
  ~S19334C3(); // tgen
  S19334C3(); // tgen
};
//SIG(-1 S19334C3) C1{ v1 v2 v3}


void  S19334C3 ::v3(){vfunc_called(this, "_ZN8S19334C32v3Ev");}
void  S19334C3 ::v4(){vfunc_called(this, "_ZN8S19334C32v4Ev");}
void  S19334C3 ::v5(){vfunc_called(this, "_ZN8S19334C32v5Ev");}
S19334C3 ::~S19334C3(){ note_dtor("S19334C3", this);} // tgen
S19334C3 ::S19334C3(){ note_ctor("S19334C3", this);} // tgen

static void Test_S19334C3()
{
  extern Class_Descriptor cd_S19334C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19334C3, buf);
    S19334C3 *dp, &lv = *(dp=new (buf) S19334C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19334C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19334C3)");
    test_class_info(&lv, &cd_S19334C3);
    dp->~S19334C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19334C3(Test_S19334C3, "S19334C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19334C3C1Ev();
extern void _ZN8S19334C3D1Ev();
Name_Map name_map_S19334C3[] = {
  NSPAIR(_ZN8S19334C3C1Ev),
  NSPAIR(_ZN8S19334C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19334C3[];
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
static  VTBL_ENTRY vtc_S19334C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19334C3[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
Class_Descriptor cd_S19334C3 = {  "S19334C3", // class name
  0,0,//no base classes
  &(vtc_S19334C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19334C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19334C3),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  S19334C4  : S19334C3 {
  ::S19334C3 s19334c4f0;
  virtual void  v6(); // _ZN8S19334C42v6Ev
  virtual void  v7(); // _ZN8S19334C42v7Ev
  virtual void  v8(); // _ZN8S19334C42v8Ev
  ~S19334C4(); // tgen
  S19334C4(); // tgen
};
//SIG(-1 S19334C4) C1{ BC2{ v4 v5 v6} v1 v2 v3 FC2}


void  S19334C4 ::v6(){vfunc_called(this, "_ZN8S19334C42v6Ev");}
void  S19334C4 ::v7(){vfunc_called(this, "_ZN8S19334C42v7Ev");}
void  S19334C4 ::v8(){vfunc_called(this, "_ZN8S19334C42v8Ev");}
S19334C4 ::~S19334C4(){ note_dtor("S19334C4", this);} // tgen
S19334C4 ::S19334C4(){ note_ctor("S19334C4", this);} // tgen

static void Test_S19334C4()
{
  extern Class_Descriptor cd_S19334C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19334C4, buf);
    S19334C4 *dp, &lv = *(dp=new (buf) S19334C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19334C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19334C4)");
    check_base_class_offset(lv, (S19334C3*), 0, "S19334C4");
    check_field_offset(lv, s19334c4f0, ABISELECT(8,4), "S19334C4.s19334c4f0");
    test_class_info(&lv, &cd_S19334C4);
    dp->~S19334C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19334C4(Test_S19334C4, "S19334C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19334C4C1Ev();
extern void _ZN8S19334C4D1Ev();
Name_Map name_map_S19334C4[] = {
  NSPAIR(_ZN8S19334C4C1Ev),
  NSPAIR(_ZN8S19334C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19334C3;
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
static Base_Class bases_S19334C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19334C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19334C4[];
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
extern void _ZN8S19334C42v6Ev();
extern void _ZN8S19334C42v7Ev();
extern void _ZN8S19334C42v8Ev();
static  VTBL_ENTRY vtc_S19334C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19334C4[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19334C4[];
extern  VTBL_ENTRY _ZTV8S19334C4[];
Class_Descriptor cd_S19334C4 = {  "S19334C4", // class name
  bases_S19334C4, 1,
  &(vtc_S19334C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19334C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19334C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19334C2  : S19334C3 , S19334C4 {
  int s19334c2f0[10];
  virtual void  v9(); // _ZN8S19334C22v9Ev
  virtual void  v10(); // _ZN8S19334C23v10Ev
  virtual void  v11(); // _ZN8S19334C23v11Ev
  virtual void  v12(); // _ZN8S19334C23v12Ev
  ~S19334C2(); // tgen
  S19334C2(); // tgen
};
//SIG(-1 S19334C2) C1{ BC2{ v5 v6 v7} BC3{ BC2 v8 v9 v10 FC2} v1 v2 v3 v4 Fi[10]}


void  S19334C2 ::v9(){vfunc_called(this, "_ZN8S19334C22v9Ev");}
void  S19334C2 ::v10(){vfunc_called(this, "_ZN8S19334C23v10Ev");}
void  S19334C2 ::v11(){vfunc_called(this, "_ZN8S19334C23v11Ev");}
void  S19334C2 ::v12(){vfunc_called(this, "_ZN8S19334C23v12Ev");}
S19334C2 ::~S19334C2(){ note_dtor("S19334C2", this);} // tgen
S19334C2 ::S19334C2(){ note_ctor("S19334C2", this);} // tgen

static void Test_S19334C2()
{
  extern Class_Descriptor cd_S19334C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,14)];
    init_test(&cd_S19334C2, buf);
    S19334C2 *dp, &lv = *(dp=new (buf) S19334C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S19334C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19334C2)");
    /*is_ambiguous_... S19334C2::S19334C3 */ AMB_check_base_class_offset(lv, (S19334C3*), 0, "S19334C2");
    check_base_class_offset(lv, (S19334C3*)(S19334C4*), ABISELECT(8,4), "S19334C2");
    check_base_class_offset(lv, (S19334C4*), ABISELECT(8,4), "S19334C2");
    check_field_offset(lv, s19334c2f0, ABISELECT(24,12), "S19334C2.s19334c2f0");
    test_class_info(&lv, &cd_S19334C2);
    dp->~S19334C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19334C2(Test_S19334C2, "S19334C2", ABISELECT(64,52));

#else // __cplusplus

extern void _ZN8S19334C2C1Ev();
extern void _ZN8S19334C2D1Ev();
Name_Map name_map_S19334C2[] = {
  NSPAIR(_ZN8S19334C2C1Ev),
  NSPAIR(_ZN8S19334C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19334C3;
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
extern Class_Descriptor cd_S19334C3;
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
extern Class_Descriptor cd_S19334C4;
extern VTBL_ENTRY _ZTI8S19334C4[];
extern  VTBL_ENTRY _ZTV8S19334C4[];
static Base_Class bases_S19334C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19334C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19334C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19334C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_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 _ZTI8S19334C2[];
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
extern void _ZN8S19334C22v9Ev();
extern void _ZN8S19334C23v10Ev();
extern void _ZN8S19334C23v11Ev();
extern void _ZN8S19334C23v12Ev();
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
extern void _ZN8S19334C42v6Ev();
extern void _ZN8S19334C42v7Ev();
extern void _ZN8S19334C42v8Ev();
static  VTBL_ENTRY vtc_S19334C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19334C2[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19334C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v12Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19334C2[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19334C2[];
extern  VTBL_ENTRY _ZTV8S19334C2[];
Class_Descriptor cd_S19334C2 = {  "S19334C2", // class name
  bases_S19334C2, 3,
  &(vtc_S19334C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,52), // object size
  NSPAIRA(_ZTI8S19334C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19334C2),17, //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  S19334C5_nt  {
  virtual void  v13(); // _ZN11S19334C5_nt3v13Ev
  virtual void  v14(); // _ZN11S19334C5_nt3v14Ev
  virtual void  v15(); // _ZN11S19334C5_nt3v15Ev
  virtual void  v16(); // _ZN11S19334C5_nt3v16Ev
  virtual void  v17(); // _ZN11S19334C5_nt3v17Ev
  virtual void  v18(); // _ZN11S19334C5_nt3v18Ev
  ~S19334C5_nt(); // tgen
  S19334C5_nt(); // tgen
};
//SIG(-1 S19334C5_nt) C1{ v1 v2 v3 v4 v5 v6}


void  S19334C5_nt ::v13(){vfunc_called(this, "_ZN11S19334C5_nt3v13Ev");}
void  S19334C5_nt ::v14(){vfunc_called(this, "_ZN11S19334C5_nt3v14Ev");}
void  S19334C5_nt ::v15(){vfunc_called(this, "_ZN11S19334C5_nt3v15Ev");}
void  S19334C5_nt ::v16(){vfunc_called(this, "_ZN11S19334C5_nt3v16Ev");}
void  S19334C5_nt ::v17(){vfunc_called(this, "_ZN11S19334C5_nt3v17Ev");}
void  S19334C5_nt ::v18(){vfunc_called(this, "_ZN11S19334C5_nt3v18Ev");}
S19334C5_nt ::~S19334C5_nt(){ note_dtor("S19334C5_nt", this);} // tgen
S19334C5_nt ::S19334C5_nt(){ note_ctor("S19334C5_nt", this);} // tgen

//skip512 S19334C5_nt

#else // __cplusplus

extern void _ZN11S19334C5_ntC1Ev();
extern void _ZN11S19334C5_ntD1Ev();
Name_Map name_map_S19334C5_nt[] = {
  NSPAIR(_ZN11S19334C5_ntC1Ev),
  NSPAIR(_ZN11S19334C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19334C5_nt[];
extern void _ZN11S19334C5_nt3v13Ev();
extern void _ZN11S19334C5_nt3v14Ev();
extern void _ZN11S19334C5_nt3v15Ev();
extern void _ZN11S19334C5_nt3v16Ev();
extern void _ZN11S19334C5_nt3v17Ev();
extern void _ZN11S19334C5_nt3v18Ev();
static  VTBL_ENTRY vtc_S19334C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19334C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S19334C5_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S19334C5_nt[];
VTBL_ENTRY *P__ZTI11S19334C5_nt = _ZTI11S19334C5_nt; 
extern  VTBL_ENTRY _ZTV11S19334C5_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19334C1  : virtual S19334C2 {
  ::S19334C5_nt s19334c1f0;
  __tsi64 s19334c1f1;
  virtual void  v1(); // _ZN8S19334C12v1Ev
  virtual void  v2(); // _ZN8S19334C12v2Ev
  ~S19334C1(); // tgen
  S19334C1(); // tgen
};
//SIG(1 S19334C1) C1{ VBC2{ BC3{ v3 v4 v5} BC4{ BC3 v6 v7 v8 FC3} v9 v10 v11 v12 Fi[10]} v1 v2 FC5{ v13 v14 v15 v16 v17 v18} FL}


void  S19334C1 ::v1(){vfunc_called(this, "_ZN8S19334C12v1Ev");}
void  S19334C1 ::v2(){vfunc_called(this, "_ZN8S19334C12v2Ev");}
S19334C1 ::~S19334C1(){ note_dtor("S19334C1", this);} // tgen
S19334C1 ::S19334C1(){ note_ctor("S19334C1", this);} // tgen

static void Test_S19334C1()
{
  extern Class_Descriptor cd_S19334C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,18)];
    init_test(&cd_S19334C1, buf);
    S19334C1 *dp, &lv = *(dp=new (buf) S19334C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S19334C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19334C1)");
    /*is_ambiguous_... S19334C2::S19334C3 */ AMB_check_base_class_offset(lv, (S19334C3*)(S19334C2*), ABISELECT(24,16), "S19334C1");
    check_base_class_offset(lv, (S19334C3*)(S19334C4*)(S19334C2*), ABISELECT(32,20), "S19334C1");
    check_base_class_offset(lv, (S19334C4*)(S19334C2*), ABISELECT(32,20), "S19334C1");
    check_base_class_offset(lv, (S19334C2*), ABISELECT(24,16), "S19334C1");
    check_field_offset(lv, s19334c1f0, ABISELECT(8,4), "S19334C1.s19334c1f0");
    check_field_offset(lv, s19334c1f1, ABISELECT(16,8), "S19334C1.s19334c1f1");
    test_class_info(&lv, &cd_S19334C1);
    dp->~S19334C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19334C1(Test_S19334C1, "S19334C1", ABISELECT(88,68));

#else // __cplusplus

extern void _ZN8S19334C1C1Ev();
extern void _ZN8S19334C1D1Ev();
Name_Map name_map_S19334C1[] = {
  NSPAIR(_ZN8S19334C1C1Ev),
  NSPAIR(_ZN8S19334C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19334C3;
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
extern Class_Descriptor cd_S19334C3;
extern VTBL_ENTRY _ZTI8S19334C3[];
extern  VTBL_ENTRY _ZTV8S19334C3[];
extern Class_Descriptor cd_S19334C4;
extern VTBL_ENTRY _ZTI8S19334C4[];
extern  VTBL_ENTRY _ZTV8S19334C4[];
extern Class_Descriptor cd_S19334C2;
extern VTBL_ENTRY _ZTI8S19334C2[];
extern  VTBL_ENTRY _ZTV8S19334C2[];
static Base_Class bases_S19334C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19334C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19334C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19334C4,    ABISELECT(32,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //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
    3, //immediately_derived
  0, 0},
  {&cd_S19334C2,    ABISELECT(24,16), //bcp->offset
    5, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19334C1[];
extern void _ZN8S19334C12v1Ev();
extern void _ZN8S19334C12v2Ev();
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
extern void _ZN8S19334C22v9Ev();
extern void _ZN8S19334C23v10Ev();
extern void _ZN8S19334C23v11Ev();
extern void _ZN8S19334C23v12Ev();
extern void _ZN8S19334C32v3Ev();
extern void _ZN8S19334C32v4Ev();
extern void _ZN8S19334C32v5Ev();
extern void _ZN8S19334C42v6Ev();
extern void _ZN8S19334C42v7Ev();
extern void _ZN8S19334C42v8Ev();
static  VTBL_ENTRY vtc_S19334C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19334C1[0]),
  (VTBL_ENTRY)&_ZN8S19334C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19334C12v2Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19334C1[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19334C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19334C23v12Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19334C1[0]),
  (VTBL_ENTRY)&_ZN8S19334C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19334C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19334C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19334C1[];
static  VTT_ENTRY vtt_S19334C1[] = {
  {&(_ZTV8S19334C1[3]),  3,32},
  {&(_ZTV8S19334C1[17]),  17,32},
  {&(_ZTV8S19334C1[26]),  26,32},
};
extern VTBL_ENTRY _ZTI8S19334C1[];
extern  VTBL_ENTRY _ZTV8S19334C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19334C1[];
Class_Descriptor cd_S19334C1 = {  "S19334C1", // class name
  bases_S19334C1, 4,
  &(vtc_S19334C1[0]), // expected_vtbl_contents
  &(vtt_S19334C1[0]), // expected_vtt_contents
  ABISELECT(88,68), // object size
  NSPAIRA(_ZTI8S19334C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19334C1),32, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19334C1),3, //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  S20913C3  {
  virtual void  v7(); // _ZN8S20913C32v7Ev
  virtual void  v8(); // _ZN8S20913C32v8Ev
  virtual void  v9(); // _ZN8S20913C32v9Ev
  virtual void  v10(); // _ZN8S20913C33v10Ev
  ~S20913C3(); // tgen
  S20913C3(); // tgen
};
//SIG(-1 S20913C3) C1{ v1 v2 v3 v4}


void  S20913C3 ::v7(){vfunc_called(this, "_ZN8S20913C32v7Ev");}
void  S20913C3 ::v8(){vfunc_called(this, "_ZN8S20913C32v8Ev");}
void  S20913C3 ::v9(){vfunc_called(this, "_ZN8S20913C32v9Ev");}
void  S20913C3 ::v10(){vfunc_called(this, "_ZN8S20913C33v10Ev");}
S20913C3 ::~S20913C3(){ note_dtor("S20913C3", this);} // tgen
S20913C3 ::S20913C3(){ note_ctor("S20913C3", this);} // tgen

static void Test_S20913C3()
{
  extern Class_Descriptor cd_S20913C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20913C3, buf);
    S20913C3 *dp, &lv = *(dp=new (buf) S20913C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20913C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20913C3)");
    test_class_info(&lv, &cd_S20913C3);
    dp->~S20913C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20913C3(Test_S20913C3, "S20913C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20913C3C1Ev();
extern void _ZN8S20913C3D1Ev();
Name_Map name_map_S20913C3[] = {
  NSPAIR(_ZN8S20913C3C1Ev),
  NSPAIR(_ZN8S20913C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20913C3[];
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
static  VTBL_ENTRY vtc_S20913C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20913C3[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S20913C3[];
extern  VTBL_ENTRY _ZTV8S20913C3[];
Class_Descriptor cd_S20913C3 = {  "S20913C3", // class name
  0,0,//no base classes
  &(vtc_S20913C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20913C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20913C3),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  S20913C4  {
  void *s20913c4f0;
  virtual void  v11(); // _ZN8S20913C43v11Ev
  virtual void  v12(); // _ZN8S20913C43v12Ev
  virtual void  v13(); // _ZN8S20913C43v13Ev
  virtual void  v14(); // _ZN8S20913C43v14Ev
  ~S20913C4(); // tgen
  S20913C4(); // tgen
};
//SIG(-1 S20913C4) C1{ v1 v2 v3 v4 Fp}


void  S20913C4 ::v11(){vfunc_called(this, "_ZN8S20913C43v11Ev");}
void  S20913C4 ::v12(){vfunc_called(this, "_ZN8S20913C43v12Ev");}
void  S20913C4 ::v13(){vfunc_called(this, "_ZN8S20913C43v13Ev");}
void  S20913C4 ::v14(){vfunc_called(this, "_ZN8S20913C43v14Ev");}
S20913C4 ::~S20913C4(){ note_dtor("S20913C4", this);} // tgen
S20913C4 ::S20913C4(){ note_ctor("S20913C4", this);} // tgen

static void Test_S20913C4()
{
  extern Class_Descriptor cd_S20913C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20913C4, buf);
    S20913C4 *dp, &lv = *(dp=new (buf) S20913C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20913C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20913C4)");
    check_field_offset(lv, s20913c4f0, ABISELECT(8,4), "S20913C4.s20913c4f0");
    test_class_info(&lv, &cd_S20913C4);
    dp->~S20913C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20913C4(Test_S20913C4, "S20913C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20913C4C1Ev();
extern void _ZN8S20913C4D1Ev();
Name_Map name_map_S20913C4[] = {
  NSPAIR(_ZN8S20913C4C1Ev),
  NSPAIR(_ZN8S20913C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20913C4[];
extern void _ZN8S20913C43v11Ev();
extern void _ZN8S20913C43v12Ev();
extern void _ZN8S20913C43v13Ev();
extern void _ZN8S20913C43v14Ev();
static  VTBL_ENTRY vtc_S20913C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20913C4[0]),
  (VTBL_ENTRY)&_ZN8S20913C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v14Ev,
};
extern VTBL_ENTRY _ZTI8S20913C4[];
extern  VTBL_ENTRY _ZTV8S20913C4[];
Class_Descriptor cd_S20913C4 = {  "S20913C4", // class name
  0,0,//no base classes
  &(vtc_S20913C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20913C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20913C4),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  S20913C2  : virtual S20913C3 , virtual S20913C4 {
  long s20913c2f0[2];
  int s20913c2f1;
  virtual void  v15(); // _ZN8S20913C23v15Ev
  virtual void  v16(); // _ZN8S20913C23v16Ev
  virtual void  v17(); // _ZN8S20913C23v17Ev
  virtual void  v18(); // _ZN8S20913C23v18Ev
  virtual void  v19(); // _ZN8S20913C23v19Ev
  ~S20913C2(); // tgen
  S20913C2(); // tgen
};
//SIG(-1 S20913C2) C1{ VBC2{ v6 v7 v8 v9} VBC3{ v10 v11 v12 v13 Fp} v1 v2 v3 v4 v5 Fl[2] Fi}


void  S20913C2 ::v15(){vfunc_called(this, "_ZN8S20913C23v15Ev");}
void  S20913C2 ::v16(){vfunc_called(this, "_ZN8S20913C23v16Ev");}
void  S20913C2 ::v17(){vfunc_called(this, "_ZN8S20913C23v17Ev");}
void  S20913C2 ::v18(){vfunc_called(this, "_ZN8S20913C23v18Ev");}
void  S20913C2 ::v19(){vfunc_called(this, "_ZN8S20913C23v19Ev");}
S20913C2 ::~S20913C2(){ note_dtor("S20913C2", this);} // tgen
S20913C2 ::S20913C2(){ note_ctor("S20913C2", this);} // tgen

static void Test_S20913C2()
{
  extern Class_Descriptor cd_S20913C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20913C2, buf);
    S20913C2 *dp, &lv = *(dp=new (buf) S20913C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20913C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20913C2)");
    check_base_class_offset(lv, (S20913C3*), 0, "S20913C2");
    check_base_class_offset(lv, (S20913C4*), ABISELECT(32,16), "S20913C2");
    check_field_offset(lv, s20913c2f0, ABISELECT(8,4), "S20913C2.s20913c2f0");
    check_field_offset(lv, s20913c2f1, ABISELECT(24,12), "S20913C2.s20913c2f1");
    test_class_info(&lv, &cd_S20913C2);
    dp->~S20913C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20913C2(Test_S20913C2, "S20913C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20913C2C1Ev();
extern void _ZN8S20913C2D1Ev();
Name_Map name_map_S20913C2[] = {
  NSPAIR(_ZN8S20913C2C1Ev),
  NSPAIR(_ZN8S20913C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20913C3;
extern VTBL_ENTRY _ZTI8S20913C3[];
extern  VTBL_ENTRY _ZTV8S20913C3[];
extern Class_Descriptor cd_S20913C4;
extern VTBL_ENTRY _ZTI8S20913C4[];
extern  VTBL_ENTRY _ZTV8S20913C4[];
static Base_Class bases_S20913C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20913C3,    0, //bcp->offset
    -1, //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_S20913C4,    ABISELECT(32,16), //bcp->offset
    17, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20913C2[];
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
extern void _ZN8S20913C23v15Ev();
extern void _ZN8S20913C23v16Ev();
extern void _ZN8S20913C23v17Ev();
extern void _ZN8S20913C23v18Ev();
extern void _ZN8S20913C23v19Ev();
extern void _ZN8S20913C43v11Ev();
extern void _ZN8S20913C43v12Ev();
extern void _ZN8S20913C43v13Ev();
extern void _ZN8S20913C43v14Ev();
static  VTBL_ENTRY vtc_S20913C2[] = {
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20913C2[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20913C2[0]),
  (VTBL_ENTRY)&_ZN8S20913C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S20913C2[];
static  VTT_ENTRY vtt_S20913C2[] = {
  {&(_ZTV8S20913C2[8]),  8,27},
  {&(_ZTV8S20913C2[8]),  8,27},
  {&(_ZTV8S20913C2[23]),  23,27},
};
extern VTBL_ENTRY _ZTI8S20913C2[];
extern  VTBL_ENTRY _ZTV8S20913C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20913C2[];
Class_Descriptor cd_S20913C2 = {  "S20913C2", // class name
  bases_S20913C2, 2,
  &(vtc_S20913C2[0]), // expected_vtbl_contents
  &(vtt_S20913C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20913C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20913C2),27, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20913C2),3, //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  S20913C1  : virtual S20913C2 {
  virtual  ~S20913C1(); // _ZN8S20913C1D2Ev
  virtual void  v1(); // _ZN8S20913C12v1Ev
  virtual void  v2(); // _ZN8S20913C12v2Ev
  virtual void  v3(); // _ZN8S20913C12v3Ev
  virtual void  v4(); // _ZN8S20913C12v4Ev
  virtual void  v5(); // _ZN8S20913C12v5Ev
  virtual void  v6(); // _ZN8S20913C12v6Ev
  S20913C1(); // tgen
};
//SIG(1 S20913C1) C1{ VBC2{ VBC3{ v7 v8 v9 v10} VBC4{ v11 v12 v13 v14 Fp} v15 v16 v17 v18 v19 Fl[2] Fi} vd v1 v2 v3 v4 v5 v6}


 S20913C1 ::~S20913C1(){ note_dtor("S20913C1", this);}
void  S20913C1 ::v1(){vfunc_called(this, "_ZN8S20913C12v1Ev");}
void  S20913C1 ::v2(){vfunc_called(this, "_ZN8S20913C12v2Ev");}
void  S20913C1 ::v3(){vfunc_called(this, "_ZN8S20913C12v3Ev");}
void  S20913C1 ::v4(){vfunc_called(this, "_ZN8S20913C12v4Ev");}
void  S20913C1 ::v5(){vfunc_called(this, "_ZN8S20913C12v5Ev");}
void  S20913C1 ::v6(){vfunc_called(this, "_ZN8S20913C12v6Ev");}
S20913C1 ::S20913C1(){ note_ctor("S20913C1", this);} // tgen

static void Test_S20913C1()
{
  extern Class_Descriptor cd_S20913C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20913C1, buf);
    S20913C1 *dp, &lv = *(dp=new (buf) S20913C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20913C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20913C1)");
    check_base_class_offset(lv, (S20913C3*)(S20913C2*), 0, "S20913C1");
    check_base_class_offset(lv, (S20913C4*)(S20913C2*), ABISELECT(40,20), "S20913C1");
    check_base_class_offset(lv, (S20913C2*), ABISELECT(8,4), "S20913C1");
    test_class_info(&lv, &cd_S20913C1);
    dp->~S20913C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20913C1(Test_S20913C1, "S20913C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20913C1C1Ev();
extern void _ZN8S20913C1D2Ev();
Name_Map name_map_S20913C1[] = {
  NSPAIR(_ZN8S20913C1C1Ev),
  NSPAIR(_ZN8S20913C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20913C3;
extern VTBL_ENTRY _ZTI8S20913C3[];
extern  VTBL_ENTRY _ZTV8S20913C3[];
extern Class_Descriptor cd_S20913C4;
extern VTBL_ENTRY _ZTI8S20913C4[];
extern  VTBL_ENTRY _ZTV8S20913C4[];
extern Class_Descriptor cd_S20913C2;
extern VTBL_ENTRY _ZTI8S20913C2[];
extern  VTBL_ENTRY _ZTV8S20913C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20913C2[];
static Base_Class bases_S20913C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20913C3,    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
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20913C4,    ABISELECT(40,20), //bcp->offset
    43, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20913C2,    ABISELECT(8,4), //bcp->offset
    21, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //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 _ZTI8S20913C1[];
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
extern void _ZN8S20913C1D1Ev();
extern void _ZN8S20913C1D0Ev();
extern void _ZN8S20913C12v1Ev();
extern void _ZN8S20913C12v2Ev();
extern void _ZN8S20913C12v3Ev();
extern void _ZN8S20913C12v4Ev();
extern void _ZN8S20913C12v5Ev();
extern void _ZN8S20913C12v6Ev();
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
extern void _ZN8S20913C23v15Ev();
extern void _ZN8S20913C23v16Ev();
extern void _ZN8S20913C23v17Ev();
extern void _ZN8S20913C23v18Ev();
extern void _ZN8S20913C23v19Ev();
extern void _ZN8S20913C43v11Ev();
extern void _ZN8S20913C43v12Ev();
extern void _ZN8S20913C43v13Ev();
extern void _ZN8S20913C43v14Ev();
static  VTBL_ENTRY vtc_S20913C1[] = {
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20913C1[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20913C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20913C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20913C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20913C1[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v19Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20913C1[0]),
  (VTBL_ENTRY)&_ZN8S20913C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S20913C1[];
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
extern void _ZN8S20913C23v15Ev();
extern void _ZN8S20913C23v16Ev();
extern void _ZN8S20913C23v17Ev();
extern void _ZN8S20913C23v18Ev();
extern void _ZN8S20913C23v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20913C2__8S20913C1[] = {
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20913C2[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20913C23v19Ev,
};
extern void _ZN8S20913C32v7Ev();
extern void _ZN8S20913C32v8Ev();
extern void _ZN8S20913C32v9Ev();
extern void _ZN8S20913C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20913C3__8S20913C2__8S20913C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20913C2[0]),
  (VTBL_ENTRY)&_ZN8S20913C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20913C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20913C33v10Ev,
};
extern void _ZN8S20913C43v11Ev();
extern void _ZN8S20913C43v12Ev();
extern void _ZN8S20913C43v13Ev();
extern void _ZN8S20913C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20913C4__8S20913C2__8S20913C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20913C2[0]),
  (VTBL_ENTRY)&_ZN8S20913C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20913C43v14Ev,
};
static  VTT_ENTRY vtt_S20913C1[] = {
  {&(_ZTV8S20913C1[9]),  9,53},
  {&(_ZTV8S20913C1[34]),  34,53},
  {&(_ZTV8S20913C1[9]),  9,53},
  {&(_ZTV8S20913C1[49]),  49,53},
  {&(_tg__ZTV8S20913C2__8S20913C1[8]),  8,17},
  {&(_tg__ZTV8S20913C3__8S20913C2__8S20913C1[6]),  6,10},
  {&(_tg__ZTV8S20913C4__8S20913C2__8S20913C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20913C1[];
extern  VTBL_ENTRY _ZTV8S20913C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20913C1[];
Class_Descriptor cd_S20913C1 = {  "S20913C1", // class name
  bases_S20913C1, 3,
  &(vtc_S20913C1[0]), // expected_vtbl_contents
  &(vtt_S20913C1[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20913C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20913C1),53, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20913C1),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  S7581C3  {
  void *s7581c3f0;
  virtual void  v3(); // _ZN7S7581C32v3Ev
  virtual void  v4(); // _ZN7S7581C32v4Ev
  virtual void  v5(); // _ZN7S7581C32v5Ev
  virtual void  v6(); // _ZN7S7581C32v6Ev
  ~S7581C3(); // tgen
  S7581C3(); // tgen
};
//SIG(-1 S7581C3) C1{ v1 v2 v3 v4 Fp}


void  S7581C3 ::v3(){vfunc_called(this, "_ZN7S7581C32v3Ev");}
void  S7581C3 ::v4(){vfunc_called(this, "_ZN7S7581C32v4Ev");}
void  S7581C3 ::v5(){vfunc_called(this, "_ZN7S7581C32v5Ev");}
void  S7581C3 ::v6(){vfunc_called(this, "_ZN7S7581C32v6Ev");}
S7581C3 ::~S7581C3(){ note_dtor("S7581C3", this);} // tgen
S7581C3 ::S7581C3(){ note_ctor("S7581C3", this);} // tgen

static void Test_S7581C3()
{
  extern Class_Descriptor cd_S7581C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7581C3, buf);
    S7581C3 *dp, &lv = *(dp=new (buf) S7581C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7581C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7581C3)");
    check_field_offset(lv, s7581c3f0, ABISELECT(8,4), "S7581C3.s7581c3f0");
    test_class_info(&lv, &cd_S7581C3);
    dp->~S7581C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7581C3(Test_S7581C3, "S7581C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7581C3C1Ev();
extern void _ZN7S7581C3D1Ev();
Name_Map name_map_S7581C3[] = {
  NSPAIR(_ZN7S7581C3C1Ev),
  NSPAIR(_ZN7S7581C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7581C3[];
extern void _ZN7S7581C32v3Ev();
extern void _ZN7S7581C32v4Ev();
extern void _ZN7S7581C32v5Ev();
extern void _ZN7S7581C32v6Ev();
static  VTBL_ENTRY vtc_S7581C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7581C3[0]),
  (VTBL_ENTRY)&_ZN7S7581C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S7581C3[];
extern  VTBL_ENTRY _ZTV7S7581C3[];
Class_Descriptor cd_S7581C3 = {  "S7581C3", // class name
  0,0,//no base classes
  &(vtc_S7581C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7581C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7581C3),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  S7581C2  : virtual S7581C3 {
  long double s7581c2f0;
  void *s7581c2f1;
  virtual void  v7(); // _ZN7S7581C22v7Ev
  virtual void  v8(); // _ZN7S7581C22v8Ev
  virtual void  v9(); // _ZN7S7581C22v9Ev
  virtual void  v10(); // _ZN7S7581C23v10Ev
  ~S7581C2(); // tgen
  S7581C2(); // tgen
};
//SIG(-1 S7581C2) C1{ VBC2{ v5 v6 v7 v8 Fp} v1 v2 v3 v4 FD Fp}


void  S7581C2 ::v7(){vfunc_called(this, "_ZN7S7581C22v7Ev");}
void  S7581C2 ::v8(){vfunc_called(this, "_ZN7S7581C22v8Ev");}
void  S7581C2 ::v9(){vfunc_called(this, "_ZN7S7581C22v9Ev");}
void  S7581C2 ::v10(){vfunc_called(this, "_ZN7S7581C23v10Ev");}
S7581C2 ::~S7581C2(){ note_dtor("S7581C2", this);} // tgen
S7581C2 ::S7581C2(){ note_ctor("S7581C2", this);} // tgen

static void Test_S7581C2()
{
  extern Class_Descriptor cd_S7581C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,8)];
    init_test(&cd_S7581C2, buf);
    S7581C2 *dp, &lv = *(dp=new (buf) S7581C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,28), "sizeof(S7581C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7581C2)");
    check_base_class_offset(lv, (S7581C3*), ABISELECT(40,20), "S7581C2");
    check_field_offset(lv, s7581c2f0, ABISELECT(16,4), "S7581C2.s7581c2f0");
    check_field_offset(lv, s7581c2f1, ABISELECT(32,16), "S7581C2.s7581c2f1");
    test_class_info(&lv, &cd_S7581C2);
    dp->~S7581C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7581C2(Test_S7581C2, "S7581C2", ABISELECT(64,28));

#else // __cplusplus

extern void _ZN7S7581C2C1Ev();
extern void _ZN7S7581C2D1Ev();
Name_Map name_map_S7581C2[] = {
  NSPAIR(_ZN7S7581C2C1Ev),
  NSPAIR(_ZN7S7581C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7581C3;
extern VTBL_ENTRY _ZTI7S7581C3[];
extern  VTBL_ENTRY _ZTV7S7581C3[];
static Base_Class bases_S7581C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7581C3,    ABISELECT(40,20), //bcp->offset
    7, //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 _ZTI7S7581C2[];
extern void _ZN7S7581C22v7Ev();
extern void _ZN7S7581C22v8Ev();
extern void _ZN7S7581C22v9Ev();
extern void _ZN7S7581C23v10Ev();
extern void _ZN7S7581C32v3Ev();
extern void _ZN7S7581C32v4Ev();
extern void _ZN7S7581C32v5Ev();
extern void _ZN7S7581C32v6Ev();
static  VTBL_ENTRY vtc_S7581C2[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7581C2[0]),
  (VTBL_ENTRY)&_ZN7S7581C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7581C23v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7581C2[0]),
  (VTBL_ENTRY)&_ZN7S7581C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v6Ev,
};
extern VTBL_ENTRY _ZTV7S7581C2[];
static  VTT_ENTRY vtt_S7581C2[] = {
  {&(_ZTV7S7581C2[3]),  3,17},
  {&(_ZTV7S7581C2[13]),  13,17},
};
extern VTBL_ENTRY _ZTI7S7581C2[];
extern  VTBL_ENTRY _ZTV7S7581C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7581C2[];
Class_Descriptor cd_S7581C2 = {  "S7581C2", // class name
  bases_S7581C2, 1,
  &(vtc_S7581C2[0]), // expected_vtbl_contents
  &(vtt_S7581C2[0]), // expected_vtt_contents
  ABISELECT(64,28), // object size
  NSPAIRA(_ZTI7S7581C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7581C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7581C2),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  S7581C4  {
  long s7581c4f0;
  int s7581c4f1[6];
  virtual void  v11(); // _ZN7S7581C43v11Ev
  virtual void  v12(); // _ZN7S7581C43v12Ev
  virtual void  v13(); // _ZN7S7581C43v13Ev
  virtual void  v14(); // _ZN7S7581C43v14Ev
  virtual void  v15(); // _ZN7S7581C43v15Ev
  ~S7581C4(); // tgen
  S7581C4(); // tgen
};
//SIG(-1 S7581C4) C1{ v1 v2 v3 v4 v5 Fl Fi[6]}


void  S7581C4 ::v11(){vfunc_called(this, "_ZN7S7581C43v11Ev");}
void  S7581C4 ::v12(){vfunc_called(this, "_ZN7S7581C43v12Ev");}
void  S7581C4 ::v13(){vfunc_called(this, "_ZN7S7581C43v13Ev");}
void  S7581C4 ::v14(){vfunc_called(this, "_ZN7S7581C43v14Ev");}
void  S7581C4 ::v15(){vfunc_called(this, "_ZN7S7581C43v15Ev");}
S7581C4 ::~S7581C4(){ note_dtor("S7581C4", this);} // tgen
S7581C4 ::S7581C4(){ note_ctor("S7581C4", this);} // tgen

static void Test_S7581C4()
{
  extern Class_Descriptor cd_S7581C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S7581C4, buf);
    S7581C4 *dp, &lv = *(dp=new (buf) S7581C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S7581C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7581C4)");
    check_field_offset(lv, s7581c4f0, ABISELECT(8,4), "S7581C4.s7581c4f0");
    check_field_offset(lv, s7581c4f1, ABISELECT(16,8), "S7581C4.s7581c4f1");
    test_class_info(&lv, &cd_S7581C4);
    dp->~S7581C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7581C4(Test_S7581C4, "S7581C4", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S7581C4C1Ev();
extern void _ZN7S7581C4D1Ev();
Name_Map name_map_S7581C4[] = {
  NSPAIR(_ZN7S7581C4C1Ev),
  NSPAIR(_ZN7S7581C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7581C4[];
extern void _ZN7S7581C43v11Ev();
extern void _ZN7S7581C43v12Ev();
extern void _ZN7S7581C43v13Ev();
extern void _ZN7S7581C43v14Ev();
extern void _ZN7S7581C43v15Ev();
static  VTBL_ENTRY vtc_S7581C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7581C4[0]),
  (VTBL_ENTRY)&_ZN7S7581C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v15Ev,
};
extern VTBL_ENTRY _ZTI7S7581C4[];
extern  VTBL_ENTRY _ZTV7S7581C4[];
Class_Descriptor cd_S7581C4 = {  "S7581C4", // class name
  0,0,//no base classes
  &(vtc_S7581C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S7581C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7581C4),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  S7581C1  : S7581C2 , virtual S7581C4 {
  int s7581c1f0;
  ::S19078C5 s7581c1f1;
  virtual void  v1(); // _ZN7S7581C12v1Ev
  virtual void  v2(); // _ZN7S7581C12v2Ev
  ~S7581C1(); // tgen
  S7581C1(); // tgen
};
//SIG(1 S7581C1) C1{ BC2{ VBC3{ v3 v4 v5 v6 Fp} v7 v8 v9 v10 FD Fp} VBC4{ v11 v12 v13 v14 v15 Fl Fi[6]} v1 v2 Fi FC5{ v16}}


void  S7581C1 ::v1(){vfunc_called(this, "_ZN7S7581C12v1Ev");}
void  S7581C1 ::v2(){vfunc_called(this, "_ZN7S7581C12v2Ev");}
S7581C1 ::~S7581C1(){ note_dtor("S7581C1", this);} // tgen
S7581C1 ::S7581C1(){ note_ctor("S7581C1", this);} // tgen

static void Test_S7581C1()
{
  extern Class_Descriptor cd_S7581C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,18)];
    init_test(&cd_S7581C1, buf);
    S7581C1 *dp, &lv = *(dp=new (buf) S7581C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S7581C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7581C1)");
    check_base_class_offset(lv, (S7581C3*)(S7581C2*), ABISELECT(56,28), "S7581C1");
    check_base_class_offset(lv, (S7581C2*), 0, "S7581C1");
    check_base_class_offset(lv, (S7581C4*), ABISELECT(72,36), "S7581C1");
    check_field_offset(lv, s7581c1f0, ABISELECT(40,20), "S7581C1.s7581c1f0");
    check_field_offset(lv, s7581c1f1, ABISELECT(48,24), "S7581C1.s7581c1f1");
    test_class_info(&lv, &cd_S7581C1);
    dp->~S7581C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7581C1(Test_S7581C1, "S7581C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S7581C1C1Ev();
extern void _ZN7S7581C1D1Ev();
Name_Map name_map_S7581C1[] = {
  NSPAIR(_ZN7S7581C1C1Ev),
  NSPAIR(_ZN7S7581C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7581C3;
extern VTBL_ENTRY _ZTI7S7581C3[];
extern  VTBL_ENTRY _ZTV7S7581C3[];
extern Class_Descriptor cd_S7581C2;
extern VTBL_ENTRY _ZTI7S7581C2[];
extern  VTBL_ENTRY _ZTV7S7581C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7581C2[];
extern Class_Descriptor cd_S7581C4;
extern VTBL_ENTRY _ZTI7S7581C4[];
extern  VTBL_ENTRY _ZTV7S7581C4[];
static Base_Class bases_S7581C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7581C3,    ABISELECT(56,28), //bcp->offset
    10, //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
  0, 1},
  {&cd_S7581C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7581C4,    ABISELECT(72,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7581C1[];
extern void _ZN7S7581C22v7Ev();
extern void _ZN7S7581C22v8Ev();
extern void _ZN7S7581C22v9Ev();
extern void _ZN7S7581C23v10Ev();
extern void _ZN7S7581C12v1Ev();
extern void _ZN7S7581C12v2Ev();
extern void _ZN7S7581C32v3Ev();
extern void _ZN7S7581C32v4Ev();
extern void _ZN7S7581C32v5Ev();
extern void _ZN7S7581C32v6Ev();
extern void _ZN7S7581C43v11Ev();
extern void _ZN7S7581C43v12Ev();
extern void _ZN7S7581C43v13Ev();
extern void _ZN7S7581C43v14Ev();
extern void _ZN7S7581C43v15Ev();
static  VTBL_ENTRY vtc_S7581C1[] = {
  ABISELECT(72,36),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7581C1[0]),
  (VTBL_ENTRY)&_ZN7S7581C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7581C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7581C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7581C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7581C1[0]),
  (VTBL_ENTRY)&_ZN7S7581C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7581C1[0]),
  (VTBL_ENTRY)&_ZN7S7581C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7581C43v15Ev,
};
extern VTBL_ENTRY _ZTV7S7581C1[];
extern void _ZN7S7581C22v7Ev();
extern void _ZN7S7581C22v8Ev();
extern void _ZN7S7581C22v9Ev();
extern void _ZN7S7581C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7581C2__7S7581C1[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7581C2[0]),
  (VTBL_ENTRY)&_ZN7S7581C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7581C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7581C23v10Ev,
};
extern void _ZN7S7581C32v3Ev();
extern void _ZN7S7581C32v4Ev();
extern void _ZN7S7581C32v5Ev();
extern void _ZN7S7581C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7581C3__7S7581C2__7S7581C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7581C2[0]),
  (VTBL_ENTRY)&_ZN7S7581C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7581C32v6Ev,
};
static  VTT_ENTRY vtt_S7581C1[] = {
  {&(_ZTV7S7581C1[4]),  4,32},
  {&(_tg__ZTV7S7581C2__7S7581C1[3]),  3,7},
  {&(_tg__ZTV7S7581C3__7S7581C2__7S7581C1[6]),  6,10},
  {&(_ZTV7S7581C1[16]),  16,32},
  {&(_ZTV7S7581C1[27]),  27,32},
};
extern VTBL_ENTRY _ZTI7S7581C1[];
extern  VTBL_ENTRY _ZTV7S7581C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7581C1[];
Class_Descriptor cd_S7581C1 = {  "S7581C1", // class name
  bases_S7581C1, 3,
  &(vtc_S7581C1[0]), // expected_vtbl_contents
  &(vtt_S7581C1[0]), // expected_vtt_contents
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S7581C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7581C1),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7581C1),5, //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  S21425C1  {
  ::S3222C4_nt s21425c1f0;
  ::S2014C25 s21425c1f1;
  ::S2014C26 s21425c1f2;
  ::S8710C8_nt s21425c1f3;
  void  mf21425c1(); // _ZN8S21425C19mf21425c1Ev
  virtual  ~S21425C1(); // _ZN8S21425C1D1Ev
  S21425C1(); // tgen
};
//SIG(1 S21425C1) C1{ vd m FC2{ m Fi[2]} FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}} FC4 FC7{ m FC8{ FL[4]}}}


void  S21425C1 ::mf21425c1(){}
 S21425C1 ::~S21425C1(){ note_dtor("S21425C1", this);}
S21425C1 ::S21425C1(){ note_ctor("S21425C1", this);} // tgen

static void Test_S21425C1()
{
  extern Class_Descriptor cd_S21425C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,18)];
    init_test(&cd_S21425C1, buf);
    S21425C1 *dp, &lv = *(dp=new (buf) S21425C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S21425C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21425C1)");
    check_field_offset(lv, s21425c1f0, ABISELECT(8,4), "S21425C1.s21425c1f0");
    check_field_offset(lv, s21425c1f1, ABISELECT(16,12), "S21425C1.s21425c1f1");
    check_field_offset(lv, s21425c1f2, ABISELECT(32,24), "S21425C1.s21425c1f2");
    check_field_offset(lv, s21425c1f3, ABISELECT(48,36), "S21425C1.s21425c1f3");
    test_class_info(&lv, &cd_S21425C1);
    dp->~S21425C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21425C1(Test_S21425C1, "S21425C1", ABISELECT(80,68));

#else // __cplusplus

extern void _ZN8S21425C1C1Ev();
extern void _ZN8S21425C1D1Ev();
Name_Map name_map_S21425C1[] = {
  NSPAIR(_ZN8S21425C1C1Ev),
  NSPAIR(_ZN8S21425C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21425C1[];
extern void _ZN8S21425C1D1Ev();
extern void _ZN8S21425C1D0Ev();
static  VTBL_ENTRY vtc_S21425C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21425C1[0]),
  (VTBL_ENTRY)&_ZN8S21425C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21425C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21425C1[];
extern  VTBL_ENTRY _ZTV8S21425C1[];
Class_Descriptor cd_S21425C1 = {  "S21425C1", // class name
  0,0,//no base classes
  &(vtc_S21425C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,68), // object size
  NSPAIRA(_ZTI8S21425C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21425C1),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  S3442C3  {
  virtual void  v9(); // _ZN7S3442C32v9Ev
  virtual void  v10(); // _ZN7S3442C33v10Ev
  virtual void  v11(); // _ZN7S3442C33v11Ev
  ~S3442C3(); // tgen
  S3442C3(); // tgen
};
//SIG(-1 S3442C3) C1{ v1 v2 v3}


void  S3442C3 ::v9(){vfunc_called(this, "_ZN7S3442C32v9Ev");}
void  S3442C3 ::v10(){vfunc_called(this, "_ZN7S3442C33v10Ev");}
void  S3442C3 ::v11(){vfunc_called(this, "_ZN7S3442C33v11Ev");}
S3442C3 ::~S3442C3(){ note_dtor("S3442C3", this);} // tgen
S3442C3 ::S3442C3(){ note_ctor("S3442C3", this);} // tgen

static void Test_S3442C3()
{
  extern Class_Descriptor cd_S3442C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3442C3, buf);
    S3442C3 *dp, &lv = *(dp=new (buf) S3442C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3442C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3442C3)");
    test_class_info(&lv, &cd_S3442C3);
    dp->~S3442C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3442C3(Test_S3442C3, "S3442C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3442C3C1Ev();
extern void _ZN7S3442C3D1Ev();
Name_Map name_map_S3442C3[] = {
  NSPAIR(_ZN7S3442C3C1Ev),
  NSPAIR(_ZN7S3442C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3442C3[];
extern void _ZN7S3442C32v9Ev();
extern void _ZN7S3442C33v10Ev();
extern void _ZN7S3442C33v11Ev();
static  VTBL_ENTRY vtc_S3442C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3442C3[0]),
  (VTBL_ENTRY)&_ZN7S3442C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v11Ev,
};
extern VTBL_ENTRY _ZTI7S3442C3[];
extern  VTBL_ENTRY _ZTV7S3442C3[];
Class_Descriptor cd_S3442C3 = {  "S3442C3", // class name
  0,0,//no base classes
  &(vtc_S3442C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3442C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3442C3),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  S3442C2  : S3442C3 {
  int s3442c2f0;
  virtual void  v12(); // _ZN7S3442C23v12Ev
  virtual void  v13(); // _ZN7S3442C23v13Ev
  virtual void  v14(); // _ZN7S3442C23v14Ev
  virtual void  v15(); // _ZN7S3442C23v15Ev
  virtual void  v16(); // _ZN7S3442C23v16Ev
  virtual void  v17(); // _ZN7S3442C23v17Ev
  virtual void  v18(); // _ZN7S3442C23v18Ev
  ~S3442C2(); // tgen
  S3442C2(); // tgen
};
//SIG(-1 S3442C2) C1{ BC2{ v8 v9 v10} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S3442C2 ::v12(){vfunc_called(this, "_ZN7S3442C23v12Ev");}
void  S3442C2 ::v13(){vfunc_called(this, "_ZN7S3442C23v13Ev");}
void  S3442C2 ::v14(){vfunc_called(this, "_ZN7S3442C23v14Ev");}
void  S3442C2 ::v15(){vfunc_called(this, "_ZN7S3442C23v15Ev");}
void  S3442C2 ::v16(){vfunc_called(this, "_ZN7S3442C23v16Ev");}
void  S3442C2 ::v17(){vfunc_called(this, "_ZN7S3442C23v17Ev");}
void  S3442C2 ::v18(){vfunc_called(this, "_ZN7S3442C23v18Ev");}
S3442C2 ::~S3442C2(){ note_dtor("S3442C2", this);} // tgen
S3442C2 ::S3442C2(){ note_ctor("S3442C2", this);} // tgen

static void Test_S3442C2()
{
  extern Class_Descriptor cd_S3442C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3442C2, buf);
    S3442C2 *dp, &lv = *(dp=new (buf) S3442C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3442C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3442C2)");
    check_base_class_offset(lv, (S3442C3*), 0, "S3442C2");
    check_field_offset(lv, s3442c2f0, ABISELECT(8,4), "S3442C2.s3442c2f0");
    test_class_info(&lv, &cd_S3442C2);
    dp->~S3442C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3442C2(Test_S3442C2, "S3442C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3442C2C1Ev();
extern void _ZN7S3442C2D1Ev();
Name_Map name_map_S3442C2[] = {
  NSPAIR(_ZN7S3442C2C1Ev),
  NSPAIR(_ZN7S3442C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3442C3;
extern VTBL_ENTRY _ZTI7S3442C3[];
extern  VTBL_ENTRY _ZTV7S3442C3[];
static Base_Class bases_S3442C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3442C2[];
extern void _ZN7S3442C32v9Ev();
extern void _ZN7S3442C33v10Ev();
extern void _ZN7S3442C33v11Ev();
extern void _ZN7S3442C23v12Ev();
extern void _ZN7S3442C23v13Ev();
extern void _ZN7S3442C23v14Ev();
extern void _ZN7S3442C23v15Ev();
extern void _ZN7S3442C23v16Ev();
extern void _ZN7S3442C23v17Ev();
extern void _ZN7S3442C23v18Ev();
static  VTBL_ENTRY vtc_S3442C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3442C2[0]),
  (VTBL_ENTRY)&_ZN7S3442C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S3442C2[];
extern  VTBL_ENTRY _ZTV7S3442C2[];
Class_Descriptor cd_S3442C2 = {  "S3442C2", // class name
  bases_S3442C2, 1,
  &(vtc_S3442C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3442C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3442C2),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  S3442C4  {
  virtual void  v19(); // _ZN7S3442C43v19Ev
  virtual void  v20(); // _ZN7S3442C43v20Ev
  ~S3442C4(); // tgen
  S3442C4(); // tgen
};
//SIG(-1 S3442C4) C1{ v1 v2}


void  S3442C4 ::v19(){vfunc_called(this, "_ZN7S3442C43v19Ev");}
void  S3442C4 ::v20(){vfunc_called(this, "_ZN7S3442C43v20Ev");}
S3442C4 ::~S3442C4(){ note_dtor("S3442C4", this);} // tgen
S3442C4 ::S3442C4(){ note_ctor("S3442C4", this);} // tgen

static void Test_S3442C4()
{
  extern Class_Descriptor cd_S3442C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3442C4, buf);
    S3442C4 *dp, &lv = *(dp=new (buf) S3442C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3442C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3442C4)");
    test_class_info(&lv, &cd_S3442C4);
    dp->~S3442C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3442C4(Test_S3442C4, "S3442C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3442C4C1Ev();
extern void _ZN7S3442C4D1Ev();
Name_Map name_map_S3442C4[] = {
  NSPAIR(_ZN7S3442C4C1Ev),
  NSPAIR(_ZN7S3442C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3442C4[];
extern void _ZN7S3442C43v19Ev();
extern void _ZN7S3442C43v20Ev();
static  VTBL_ENTRY vtc_S3442C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3442C4[0]),
  (VTBL_ENTRY)&_ZN7S3442C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3442C43v20Ev,
};
extern VTBL_ENTRY _ZTI7S3442C4[];
extern  VTBL_ENTRY _ZTV7S3442C4[];
Class_Descriptor cd_S3442C4 = {  "S3442C4", // class name
  0,0,//no base classes
  &(vtc_S3442C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3442C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3442C4),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  S3442C1  : S3442C2 , S3442C4 {
  char s3442c1f0[7];
  virtual void  v1(); // _ZN7S3442C12v1Ev
  virtual void  v2(); // _ZN7S3442C12v2Ev
  virtual void  v3(); // _ZN7S3442C12v3Ev
  virtual void  v4(); // _ZN7S3442C12v4Ev
  virtual void  v5(); // _ZN7S3442C12v5Ev
  virtual void  v6(); // _ZN7S3442C12v6Ev
  virtual void  v7(); // _ZN7S3442C12v7Ev
  virtual void  v8(); // _ZN7S3442C12v8Ev
  ~S3442C1(); // tgen
  S3442C1(); // tgen
};
//SIG(1 S3442C1) C1{ BC2{ BC3{ v9 v10 v11} v12 v13 v14 v15 v16 v17 v18 Fi} BC4{ v19 v20} v1 v2 v3 v4 v5 v6 v7 v8 Fc[7]}


void  S3442C1 ::v1(){vfunc_called(this, "_ZN7S3442C12v1Ev");}
void  S3442C1 ::v2(){vfunc_called(this, "_ZN7S3442C12v2Ev");}
void  S3442C1 ::v3(){vfunc_called(this, "_ZN7S3442C12v3Ev");}
void  S3442C1 ::v4(){vfunc_called(this, "_ZN7S3442C12v4Ev");}
void  S3442C1 ::v5(){vfunc_called(this, "_ZN7S3442C12v5Ev");}
void  S3442C1 ::v6(){vfunc_called(this, "_ZN7S3442C12v6Ev");}
void  S3442C1 ::v7(){vfunc_called(this, "_ZN7S3442C12v7Ev");}
void  S3442C1 ::v8(){vfunc_called(this, "_ZN7S3442C12v8Ev");}
S3442C1 ::~S3442C1(){ note_dtor("S3442C1", this);} // tgen
S3442C1 ::S3442C1(){ note_ctor("S3442C1", this);} // tgen

static void Test_S3442C1()
{
  extern Class_Descriptor cd_S3442C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3442C1, buf);
    S3442C1 *dp, &lv = *(dp=new (buf) S3442C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3442C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3442C1)");
    check_base_class_offset(lv, (S3442C3*)(S3442C2*), 0, "S3442C1");
    check_base_class_offset(lv, (S3442C2*), 0, "S3442C1");
    check_base_class_offset(lv, (S3442C4*), ABISELECT(16,8), "S3442C1");
    check_field_offset(lv, s3442c1f0, ABISELECT(24,12), "S3442C1.s3442c1f0");
    test_class_info(&lv, &cd_S3442C1);
    dp->~S3442C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3442C1(Test_S3442C1, "S3442C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3442C1C1Ev();
extern void _ZN7S3442C1D1Ev();
Name_Map name_map_S3442C1[] = {
  NSPAIR(_ZN7S3442C1C1Ev),
  NSPAIR(_ZN7S3442C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3442C3;
extern VTBL_ENTRY _ZTI7S3442C3[];
extern  VTBL_ENTRY _ZTV7S3442C3[];
extern Class_Descriptor cd_S3442C2;
extern VTBL_ENTRY _ZTI7S3442C2[];
extern  VTBL_ENTRY _ZTV7S3442C2[];
extern Class_Descriptor cd_S3442C4;
extern VTBL_ENTRY _ZTI7S3442C4[];
extern  VTBL_ENTRY _ZTV7S3442C4[];
static Base_Class bases_S3442C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3442C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S3442C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3442C4,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_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 _ZTI7S3442C1[];
extern void _ZN7S3442C32v9Ev();
extern void _ZN7S3442C33v10Ev();
extern void _ZN7S3442C33v11Ev();
extern void _ZN7S3442C23v12Ev();
extern void _ZN7S3442C23v13Ev();
extern void _ZN7S3442C23v14Ev();
extern void _ZN7S3442C23v15Ev();
extern void _ZN7S3442C23v16Ev();
extern void _ZN7S3442C23v17Ev();
extern void _ZN7S3442C23v18Ev();
extern void _ZN7S3442C12v1Ev();
extern void _ZN7S3442C12v2Ev();
extern void _ZN7S3442C12v3Ev();
extern void _ZN7S3442C12v4Ev();
extern void _ZN7S3442C12v5Ev();
extern void _ZN7S3442C12v6Ev();
extern void _ZN7S3442C12v7Ev();
extern void _ZN7S3442C12v8Ev();
extern void _ZN7S3442C43v19Ev();
extern void _ZN7S3442C43v20Ev();
static  VTBL_ENTRY vtc_S3442C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3442C1[0]),
  (VTBL_ENTRY)&_ZN7S3442C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3442C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3442C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3442C12v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3442C1[0]),
  (VTBL_ENTRY)&_ZN7S3442C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3442C43v20Ev,
};
extern VTBL_ENTRY _ZTI7S3442C1[];
extern  VTBL_ENTRY _ZTV7S3442C1[];
Class_Descriptor cd_S3442C1 = {  "S3442C1", // class name
  bases_S3442C1, 3,
  &(vtc_S3442C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3442C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3442C1),24, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3832C3_nt  {
  int s3832c3f0;
  void  mf3832c3(); // _ZN10S3832C3_nt8mf3832c3Ev
  virtual  ~S3832C3_nt(); // _ZN10S3832C3_ntD1Ev
  S3832C3_nt(); // tgen
};
//SIG(-1 S3832C3_nt) C1{ vd m Fi}


void  S3832C3_nt ::mf3832c3(){}
 S3832C3_nt ::~S3832C3_nt(){ note_dtor("S3832C3_nt", this);}
S3832C3_nt ::S3832C3_nt(){ note_ctor("S3832C3_nt", this);} // tgen

//skip512 S3832C3_nt

#else // __cplusplus

extern void _ZN10S3832C3_ntC1Ev();
extern void _ZN10S3832C3_ntD1Ev();
Name_Map name_map_S3832C3_nt[] = {
  NSPAIR(_ZN10S3832C3_ntC1Ev),
  NSPAIR(_ZN10S3832C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3832C3_nt[];
extern void _ZN10S3832C3_ntD1Ev();
extern void _ZN10S3832C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3832C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3832C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3832C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3832C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3832C3_nt[];
VTBL_ENTRY *P__ZTI10S3832C3_nt = _ZTI10S3832C3_nt; 
extern  VTBL_ENTRY _ZTV10S3832C3_nt[];
Class_Descriptor cd_S3832C3_nt = {  "S3832C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3832C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3832C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3832C3_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  S3832C2  : S3832C3_nt {
  virtual  ~S3832C2(); // _ZN7S3832C2D1Ev
  virtual void  v2(); // _ZN7S3832C22v2Ev
  S3832C2(); // tgen
};
//SIG(-1 S3832C2) C1{ BC2{ vd m Fi} vd v1}


 S3832C2 ::~S3832C2(){ note_dtor("S3832C2", this);}
void  S3832C2 ::v2(){vfunc_called(this, "_ZN7S3832C22v2Ev");}
S3832C2 ::S3832C2(){ note_ctor("S3832C2", this);} // tgen

static void Test_S3832C2()
{
  extern Class_Descriptor cd_S3832C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3832C2, buf);
    S3832C2 *dp, &lv = *(dp=new (buf) S3832C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3832C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3832C2)");
    check_base_class_offset(lv, (S3832C3_nt*), 0, "S3832C2");
    test_class_info(&lv, &cd_S3832C2);
    dp->~S3832C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3832C2(Test_S3832C2, "S3832C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3832C2C1Ev();
extern void _ZN7S3832C2D1Ev();
Name_Map name_map_S3832C2[] = {
  NSPAIR(_ZN7S3832C2C1Ev),
  NSPAIR(_ZN7S3832C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3832C3_nt;
extern VTBL_ENTRY _ZTI10S3832C3_nt[];
extern  VTBL_ENTRY _ZTV10S3832C3_nt[];
static Base_Class bases_S3832C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3832C3_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 _ZTI7S3832C2[];
extern void _ZN7S3832C2D1Ev();
extern void _ZN7S3832C2D0Ev();
extern void _ZN7S3832C22v2Ev();
static  VTBL_ENTRY vtc_S3832C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3832C2[0]),
  (VTBL_ENTRY)&_ZN7S3832C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3832C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3832C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3832C2[];
extern  VTBL_ENTRY _ZTV7S3832C2[];
Class_Descriptor cd_S3832C2 = {  "S3832C2", // class name
  bases_S3832C2, 1,
  &(vtc_S3832C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3832C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3832C2),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  S3832C1  : S3832C2 {
  void *s3832c1f0;
  ::S2014C37 s3832c1f1;
  ::S2014C25 s3832c1f2;
  char s3832c1f3[2];
  virtual  ~S3832C1(); // _ZN7S3832C1D1Ev
  virtual void  v1(); // _ZN7S3832C12v1Ev
  S3832C1(); // tgen
};
//SIG(1 S3832C1) C1{ BC2{ BC3{ vd m Fi} vd v2} vd v1 Fp FC4{ m Fp Fi[2] FC5{ m}} FC6{ BC7{ m Fp Fi FC8{ m} FC9{ m}}} Fc[2]}


 S3832C1 ::~S3832C1(){ note_dtor("S3832C1", this);}
void  S3832C1 ::v1(){vfunc_called(this, "_ZN7S3832C12v1Ev");}
S3832C1 ::S3832C1(){ note_ctor("S3832C1", this);} // tgen

static void Test_S3832C1()
{
  extern Class_Descriptor cd_S3832C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S3832C1, buf);
    S3832C1 *dp, &lv = *(dp=new (buf) S3832C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S3832C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3832C1)");
    check_base_class_offset(lv, (S3832C3_nt*)(S3832C2*), 0, "S3832C1");
    check_base_class_offset(lv, (S3832C2*), 0, "S3832C1");
    check_field_offset(lv, s3832c1f0, ABISELECT(16,8), "S3832C1.s3832c1f0");
    check_field_offset(lv, s3832c1f1, ABISELECT(24,12), "S3832C1.s3832c1f1");
    check_field_offset(lv, s3832c1f2, ABISELECT(48,28), "S3832C1.s3832c1f2");
    check_field_offset(lv, s3832c1f3, ABISELECT(64,40), "S3832C1.s3832c1f3");
    test_class_info(&lv, &cd_S3832C1);
    dp->~S3832C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3832C1(Test_S3832C1, "S3832C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S3832C1C1Ev();
extern void _ZN7S3832C1D1Ev();
Name_Map name_map_S3832C1[] = {
  NSPAIR(_ZN7S3832C1C1Ev),
  NSPAIR(_ZN7S3832C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3832C3_nt;
extern VTBL_ENTRY _ZTI10S3832C3_nt[];
extern  VTBL_ENTRY _ZTV10S3832C3_nt[];
extern Class_Descriptor cd_S3832C2;
extern VTBL_ENTRY _ZTI7S3832C2[];
extern  VTBL_ENTRY _ZTV7S3832C2[];
static Base_Class bases_S3832C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3832C3_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_S3832C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S3832C1[];
extern void _ZN7S3832C1D1Ev();
extern void _ZN7S3832C1D0Ev();
extern void _ZN7S3832C22v2Ev();
extern void _ZN7S3832C12v1Ev();
static  VTBL_ENTRY vtc_S3832C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3832C1[0]),
  (VTBL_ENTRY)&_ZN7S3832C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3832C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3832C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3832C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3832C1[];
extern  VTBL_ENTRY _ZTV7S3832C1[];
Class_Descriptor cd_S3832C1 = {  "S3832C1", // class name
  bases_S3832C1, 2,
  &(vtc_S3832C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S3832C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3832C1),6, //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  S7036C2_nt  {
  virtual  ~S7036C2_nt(); // _ZN10S7036C2_ntD1Ev
  virtual void  v6(); // _ZN10S7036C2_nt2v6Ev
  virtual void  v7(); // _ZN10S7036C2_nt2v7Ev
  virtual void  v8(); // _ZN10S7036C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7036C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7036C2_nt3v10Ev
  S7036C2_nt(); // tgen
};
//SIG(-1 S7036C2_nt) C1{ vd v1 v2 v3 v4 v5}


 S7036C2_nt ::~S7036C2_nt(){ note_dtor("S7036C2_nt", this);}
void  S7036C2_nt ::v6(){vfunc_called(this, "_ZN10S7036C2_nt2v6Ev");}
void  S7036C2_nt ::v7(){vfunc_called(this, "_ZN10S7036C2_nt2v7Ev");}
void  S7036C2_nt ::v8(){vfunc_called(this, "_ZN10S7036C2_nt2v8Ev");}
void  S7036C2_nt ::v9(){vfunc_called(this, "_ZN10S7036C2_nt2v9Ev");}
void  S7036C2_nt ::v10(){vfunc_called(this, "_ZN10S7036C2_nt3v10Ev");}
S7036C2_nt ::S7036C2_nt(){ note_ctor("S7036C2_nt", this);} // tgen

//skip512 S7036C2_nt

#else // __cplusplus

extern void _ZN10S7036C2_ntC1Ev();
extern void _ZN10S7036C2_ntD1Ev();
Name_Map name_map_S7036C2_nt[] = {
  NSPAIR(_ZN10S7036C2_ntC1Ev),
  NSPAIR(_ZN10S7036C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7036C2_nt[];
extern void _ZN10S7036C2_ntD1Ev();
extern void _ZN10S7036C2_ntD0Ev();
extern void _ZN10S7036C2_nt2v6Ev();
extern void _ZN10S7036C2_nt2v7Ev();
extern void _ZN10S7036C2_nt2v8Ev();
extern void _ZN10S7036C2_nt2v9Ev();
extern void _ZN10S7036C2_nt3v10Ev();
static  VTBL_ENTRY vtc_S7036C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7036C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7036C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S7036C2_nt[];
VTBL_ENTRY *P__ZTI10S7036C2_nt = _ZTI10S7036C2_nt; 
extern  VTBL_ENTRY _ZTV10S7036C2_nt[];
Class_Descriptor cd_S7036C2_nt = {  "S7036C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7036C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7036C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7036C2_nt),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  S7036C1  : S7036C2_nt {
  void *s7036c1f0;
  int s7036c1f1;
  char s7036c1f2[32];
  int s7036c1f3;
  char s7036c1f4[3];
  ::S4952C8_nt s7036c1f5;
  void *s7036c1f6[2];
  int s7036c1f7[3];
  virtual  ~S7036C1(); // _ZN7S7036C1D1Ev
  virtual void  v1(); // _ZN7S7036C12v1Ev
  virtual void  v2(); // _ZN7S7036C12v2Ev
  virtual void  v3(); // _ZN7S7036C12v3Ev
  virtual void  v4(); // _ZN7S7036C12v4Ev
  virtual void  v5(); // _ZN7S7036C12v5Ev
  S7036C1(); // tgen
};
//SIG(1 S7036C1) C1{ BC2{ vd v6 v7 v8 v9 v10} vd v1 v2 v3 v4 v5 Fp Fi Fc[32] Fi Fc[3] FC3{ m FL[4]} Fp[2] Fi[3]}


 S7036C1 ::~S7036C1(){ note_dtor("S7036C1", this);}
void  S7036C1 ::v1(){vfunc_called(this, "_ZN7S7036C12v1Ev");}
void  S7036C1 ::v2(){vfunc_called(this, "_ZN7S7036C12v2Ev");}
void  S7036C1 ::v3(){vfunc_called(this, "_ZN7S7036C12v3Ev");}
void  S7036C1 ::v4(){vfunc_called(this, "_ZN7S7036C12v4Ev");}
void  S7036C1 ::v5(){vfunc_called(this, "_ZN7S7036C12v5Ev");}
S7036C1 ::S7036C1(){ note_ctor("S7036C1", this);} // tgen

static void Test_S7036C1()
{
  extern Class_Descriptor cd_S7036C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,27)];
    init_test(&cd_S7036C1, buf);
    S7036C1 *dp, &lv = *(dp=new (buf) S7036C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,104), "sizeof(S7036C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7036C1)");
    check_base_class_offset(lv, (S7036C2_nt*), 0, "S7036C1");
    check_field_offset(lv, s7036c1f0, ABISELECT(8,4), "S7036C1.s7036c1f0");
    check_field_offset(lv, s7036c1f1, ABISELECT(16,8), "S7036C1.s7036c1f1");
    check_field_offset(lv, s7036c1f2, ABISELECT(20,12), "S7036C1.s7036c1f2");
    check_field_offset(lv, s7036c1f3, ABISELECT(52,44), "S7036C1.s7036c1f3");
    check_field_offset(lv, s7036c1f4, ABISELECT(56,48), "S7036C1.s7036c1f4");
    check_field_offset(lv, s7036c1f5, ABISELECT(64,52), "S7036C1.s7036c1f5");
    check_field_offset(lv, s7036c1f6, ABISELECT(96,84), "S7036C1.s7036c1f6");
    check_field_offset(lv, s7036c1f7, ABISELECT(112,92), "S7036C1.s7036c1f7");
    test_class_info(&lv, &cd_S7036C1);
    dp->~S7036C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7036C1(Test_S7036C1, "S7036C1", ABISELECT(128,104));

#else // __cplusplus

extern void _ZN7S7036C1C1Ev();
extern void _ZN7S7036C1D1Ev();
Name_Map name_map_S7036C1[] = {
  NSPAIR(_ZN7S7036C1C1Ev),
  NSPAIR(_ZN7S7036C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7036C2_nt;
extern VTBL_ENTRY _ZTI10S7036C2_nt[];
extern  VTBL_ENTRY _ZTV10S7036C2_nt[];
static Base_Class bases_S7036C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7036C2_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 _ZTI7S7036C1[];
extern void _ZN7S7036C1D1Ev();
extern void _ZN7S7036C1D0Ev();
extern void _ZN10S7036C2_nt2v6Ev();
extern void _ZN10S7036C2_nt2v7Ev();
extern void _ZN10S7036C2_nt2v8Ev();
extern void _ZN10S7036C2_nt2v9Ev();
extern void _ZN10S7036C2_nt3v10Ev();
extern void _ZN7S7036C12v1Ev();
extern void _ZN7S7036C12v2Ev();
extern void _ZN7S7036C12v3Ev();
extern void _ZN7S7036C12v4Ev();
extern void _ZN7S7036C12v5Ev();
static  VTBL_ENTRY vtc_S7036C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7036C1[0]),
  (VTBL_ENTRY)&_ZN7S7036C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7036C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7036C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S7036C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7036C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7036C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7036C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7036C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7036C1[];
extern  VTBL_ENTRY _ZTV7S7036C1[];
Class_Descriptor cd_S7036C1 = {  "S7036C1", // class name
  bases_S7036C1, 1,
  &(vtc_S7036C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,104), // object size
  NSPAIRA(_ZTI7S7036C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7036C1),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  S20896C3  {
  virtual void  v6(); // _ZN8S20896C32v6Ev
  ~S20896C3(); // tgen
  S20896C3(); // tgen
};
//SIG(-1 S20896C3) C1{ v1}


void  S20896C3 ::v6(){vfunc_called(this, "_ZN8S20896C32v6Ev");}
S20896C3 ::~S20896C3(){ note_dtor("S20896C3", this);} // tgen
S20896C3 ::S20896C3(){ note_ctor("S20896C3", this);} // tgen

static void Test_S20896C3()
{
  extern Class_Descriptor cd_S20896C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20896C3, buf);
    S20896C3 *dp, &lv = *(dp=new (buf) S20896C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20896C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20896C3)");
    test_class_info(&lv, &cd_S20896C3);
    dp->~S20896C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20896C3(Test_S20896C3, "S20896C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20896C3C1Ev();
extern void _ZN8S20896C3D1Ev();
Name_Map name_map_S20896C3[] = {
  NSPAIR(_ZN8S20896C3C1Ev),
  NSPAIR(_ZN8S20896C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20896C3[];
extern void _ZN8S20896C32v6Ev();
static  VTBL_ENTRY vtc_S20896C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C3[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S20896C3[];
extern  VTBL_ENTRY _ZTV8S20896C3[];
Class_Descriptor cd_S20896C3 = {  "S20896C3", // class name
  0,0,//no base classes
  &(vtc_S20896C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20896C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20896C3),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  S20896C4  : virtual S20896C3 {
  int s20896c4f0;
  void *s20896c4f1;
  virtual  ~S20896C4(); // _ZN8S20896C4D2Ev
  virtual void  v7(); // _ZN8S20896C42v7Ev
  virtual void  v8(); // _ZN8S20896C42v8Ev
  S20896C4(); // tgen
};
//SIG(-1 S20896C4) C1{ VBC2{ v3} vd v1 v2 Fi Fp}


 S20896C4 ::~S20896C4(){ note_dtor("S20896C4", this);}
void  S20896C4 ::v7(){vfunc_called(this, "_ZN8S20896C42v7Ev");}
void  S20896C4 ::v8(){vfunc_called(this, "_ZN8S20896C42v8Ev");}
S20896C4 ::S20896C4(){ note_ctor("S20896C4", this);} // tgen

static void Test_S20896C4()
{
  extern Class_Descriptor cd_S20896C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20896C4, buf);
    S20896C4 *dp, &lv = *(dp=new (buf) S20896C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20896C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20896C4)");
    check_base_class_offset(lv, (S20896C3*), 0, "S20896C4");
    check_field_offset(lv, s20896c4f0, ABISELECT(8,4), "S20896C4.s20896c4f0");
    check_field_offset(lv, s20896c4f1, ABISELECT(16,8), "S20896C4.s20896c4f1");
    test_class_info(&lv, &cd_S20896C4);
    dp->~S20896C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20896C4(Test_S20896C4, "S20896C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20896C4C1Ev();
extern void _ZN8S20896C4D2Ev();
Name_Map name_map_S20896C4[] = {
  NSPAIR(_ZN8S20896C4C1Ev),
  NSPAIR(_ZN8S20896C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20896C3;
extern VTBL_ENTRY _ZTI8S20896C3[];
extern  VTBL_ENTRY _ZTV8S20896C3[];
static Base_Class bases_S20896C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20896C3,    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 _ZTI8S20896C4[];
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C4D1Ev();
extern void _ZN8S20896C4D0Ev();
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
static  VTBL_ENTRY vtc_S20896C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C4[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S20896C4[];
static  VTT_ENTRY vtt_S20896C4[] = {
  {&(_ZTV8S20896C4[4]),  4,9},
  {&(_ZTV8S20896C4[4]),  4,9},
};
extern VTBL_ENTRY _ZTI8S20896C4[];
extern  VTBL_ENTRY _ZTV8S20896C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C4[];
Class_Descriptor cd_S20896C4 = {  "S20896C4", // class name
  bases_S20896C4, 1,
  &(vtc_S20896C4[0]), // expected_vtbl_contents
  &(vtt_S20896C4[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20896C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20896C4),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20896C4),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  S20896C2  : virtual S20896C3 , S20896C4 {
  virtual  ~S20896C2(); // _ZN8S20896C2D2Ev
  virtual void  v9(); // _ZN8S20896C22v9Ev
  virtual void  v10(); // _ZN8S20896C23v10Ev
  virtual void  v11(); // _ZN8S20896C23v11Ev
  virtual void  v12(); // _ZN8S20896C23v12Ev
  virtual void  v13(); // _ZN8S20896C23v13Ev
  S20896C2(); // tgen
};
//SIG(-1 S20896C2) C1{ VBC2{ v6} BC3{ VBC2 vd v7 v8 Fi Fp} vd v1 v2 v3 v4 v5}


 S20896C2 ::~S20896C2(){ note_dtor("S20896C2", this);}
void  S20896C2 ::v9(){vfunc_called(this, "_ZN8S20896C22v9Ev");}
void  S20896C2 ::v10(){vfunc_called(this, "_ZN8S20896C23v10Ev");}
void  S20896C2 ::v11(){vfunc_called(this, "_ZN8S20896C23v11Ev");}
void  S20896C2 ::v12(){vfunc_called(this, "_ZN8S20896C23v12Ev");}
void  S20896C2 ::v13(){vfunc_called(this, "_ZN8S20896C23v13Ev");}
S20896C2 ::S20896C2(){ note_ctor("S20896C2", this);} // tgen

static void Test_S20896C2()
{
  extern Class_Descriptor cd_S20896C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20896C2, buf);
    S20896C2 *dp, &lv = *(dp=new (buf) S20896C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20896C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20896C2)");
    check_base_class_offset(lv, (S20896C3*), 0, "S20896C2");
    check_base_class_offset(lv, (S20896C3*)(S20896C4*), 0, "S20896C2");
    check_base_class_offset(lv, (S20896C4*), 0, "S20896C2");
    test_class_info(&lv, &cd_S20896C2);
    dp->~S20896C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20896C2(Test_S20896C2, "S20896C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20896C2C1Ev();
extern void _ZN8S20896C2D2Ev();
Name_Map name_map_S20896C2[] = {
  NSPAIR(_ZN8S20896C2C1Ev),
  NSPAIR(_ZN8S20896C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20896C3;
extern VTBL_ENTRY _ZTI8S20896C3[];
extern  VTBL_ENTRY _ZTV8S20896C3[];
extern Class_Descriptor cd_S20896C4;
extern VTBL_ENTRY _ZTI8S20896C4[];
extern  VTBL_ENTRY _ZTV8S20896C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C4[];
static Base_Class bases_S20896C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20896C3,    0, //bcp->offset
    -1, //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
  1, 1},
  {&cd_S20896C4,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20896C2[];
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C2D1Ev();
extern void _ZN8S20896C2D0Ev();
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
extern void _ZN8S20896C22v9Ev();
extern void _ZN8S20896C23v10Ev();
extern void _ZN8S20896C23v11Ev();
extern void _ZN8S20896C23v12Ev();
extern void _ZN8S20896C23v13Ev();
static  VTBL_ENTRY vtc_S20896C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C2[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20896C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20896C2[];
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C4D1Ev();
extern void _ZN8S20896C4D0Ev();
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20896C4__8S20896C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C4[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
};
static  VTT_ENTRY vtt_S20896C2[] = {
  {&(_ZTV8S20896C2[4]),  4,14},
  {&(_tg__ZTV8S20896C4__8S20896C2[4]),  4,9},
  {&(_tg__ZTV8S20896C4__8S20896C2[4]),  4,9},
  {&(_ZTV8S20896C2[4]),  4,14},
};
extern VTBL_ENTRY _ZTI8S20896C2[];
extern  VTBL_ENTRY _ZTV8S20896C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C2[];
Class_Descriptor cd_S20896C2 = {  "S20896C2", // class name
  bases_S20896C2, 2,
  &(vtc_S20896C2[0]), // expected_vtbl_contents
  &(vtt_S20896C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20896C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20896C2),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20896C2),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  S20896C1  : virtual S20896C2 {
  char s20896c1f0[9];
  void *s20896c1f1[2];
  virtual void  v1(); // _ZN8S20896C12v1Ev
  virtual void  v2(); // _ZN8S20896C12v2Ev
  virtual void  v3(); // _ZN8S20896C12v3Ev
  virtual void  v4(); // _ZN8S20896C12v4Ev
  virtual void  v5(); // _ZN8S20896C12v5Ev
  ~S20896C1(); // tgen
  S20896C1(); // tgen
};
//SIG(1 S20896C1) C1{ VBC2{ VBC3{ v6} BC4{ VBC3 vd v7 v8 Fi Fp} vd v9 v10 v11 v12 v13} v1 v2 v3 v4 v5 Fc[9] Fp[2]}


void  S20896C1 ::v1(){vfunc_called(this, "_ZN8S20896C12v1Ev");}
void  S20896C1 ::v2(){vfunc_called(this, "_ZN8S20896C12v2Ev");}
void  S20896C1 ::v3(){vfunc_called(this, "_ZN8S20896C12v3Ev");}
void  S20896C1 ::v4(){vfunc_called(this, "_ZN8S20896C12v4Ev");}
void  S20896C1 ::v5(){vfunc_called(this, "_ZN8S20896C12v5Ev");}
S20896C1 ::~S20896C1(){ note_dtor("S20896C1", this);} // tgen
S20896C1 ::S20896C1(){ note_ctor("S20896C1", this);} // tgen

static void Test_S20896C1()
{
  extern Class_Descriptor cd_S20896C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20896C1, buf);
    S20896C1 *dp, &lv = *(dp=new (buf) S20896C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20896C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20896C1)");
    check_base_class_offset(lv, (S20896C3*)(S20896C2*), 0, "S20896C1");
    check_base_class_offset(lv, (S20896C3*)(S20896C4*)(S20896C2*), 0, "S20896C1");
    check_base_class_offset(lv, (S20896C4*)(S20896C2*), ABISELECT(40,24), "S20896C1");
    check_base_class_offset(lv, (S20896C2*), ABISELECT(40,24), "S20896C1");
    check_field_offset(lv, s20896c1f0, ABISELECT(8,4), "S20896C1.s20896c1f0");
    check_field_offset(lv, s20896c1f1, ABISELECT(24,16), "S20896C1.s20896c1f1");
    test_class_info(&lv, &cd_S20896C1);
    dp->~S20896C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20896C1(Test_S20896C1, "S20896C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S20896C1C1Ev();
extern void _ZN8S20896C1D1Ev();
Name_Map name_map_S20896C1[] = {
  NSPAIR(_ZN8S20896C1C1Ev),
  NSPAIR(_ZN8S20896C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20896C3;
extern VTBL_ENTRY _ZTI8S20896C3[];
extern  VTBL_ENTRY _ZTV8S20896C3[];
extern Class_Descriptor cd_S20896C4;
extern VTBL_ENTRY _ZTI8S20896C4[];
extern  VTBL_ENTRY _ZTV8S20896C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C4[];
extern Class_Descriptor cd_S20896C2;
extern VTBL_ENTRY _ZTI8S20896C2[];
extern  VTBL_ENTRY _ZTV8S20896C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C2[];
static Base_Class bases_S20896C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20896C3,    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
    1, //immediately_derived
  0, 1},
  {&cd_S20896C4,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20896C2,    ABISELECT(40,24), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //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 _ZTI8S20896C1[];
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C12v1Ev();
extern void _ZN8S20896C12v2Ev();
extern void _ZN8S20896C12v3Ev();
extern void _ZN8S20896C12v4Ev();
extern void _ZN8S20896C12v5Ev();
extern void _ZN8S20896C1D1Ev();
extern void _ZN8S20896C1D0Ev();
extern void _ZN8S20896C32v6Ev();
extern void ABISELECT(_ZTv0_n40_N8S20896C1D1Ev,_ZTv0_n20_N8S20896C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20896C1D1Ev,_ZThn24_N8S20896C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20896C1D0Ev,_ZTv0_n20_N8S20896C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20896C1D0Ev,_ZThn24_N8S20896C1D0Ev)() __attribute__((weak));
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
extern void _ZN8S20896C22v9Ev();
extern void _ZN8S20896C23v10Ev();
extern void _ZN8S20896C23v11Ev();
extern void _ZN8S20896C23v12Ev();
extern void _ZN8S20896C23v13Ev();
static  VTBL_ENTRY vtc_S20896C1[] = {
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C1[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20896C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20896C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20896C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20896C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20896C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20896C1[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20896C1D1Ev,_ZTv0_n20_N8S20896C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20896C1D0Ev,_ZTv0_n20_N8S20896C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20896C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v13Ev,
};
extern VTBL_ENTRY _ZTV8S20896C1[];
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C2D1Ev();
extern void _ZN8S20896C2D0Ev();
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
extern void _ZN8S20896C22v9Ev();
extern void _ZN8S20896C23v10Ev();
extern void _ZN8S20896C23v11Ev();
extern void _ZN8S20896C23v12Ev();
extern void _ZN8S20896C23v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20896C2__8S20896C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C2[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20896C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20896C23v13Ev,
};
extern void _ZN8S20896C32v6Ev();
extern void _ZN8S20896C4D1Ev();
extern void _ZN8S20896C4D0Ev();
extern void _ZN8S20896C42v7Ev();
extern void _ZN8S20896C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20896C48S20896C2__8S20896C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20896C4[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20896C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20896C42v8Ev,
};
extern void _ZN8S20896C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20896C3__8S20896C48S20896C2__8S20896C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20896C4[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
};
extern void _ZN8S20896C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20896C3__8S20896C2__8S20896C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20896C2[0]),
  (VTBL_ENTRY)&_ZN8S20896C32v6Ev,
};
static  VTT_ENTRY vtt_S20896C1[] = {
  {&(_ZTV8S20896C1[5]),  5,35},
  {&(_ZTV8S20896C1[25]),  25,35},
  {&(_ZTV8S20896C1[5]),  5,35},
  {&(_tg__ZTV8S20896C2__8S20896C1[4]),  4,14},
  {&(_tg__ZTV8S20896C48S20896C2__8S20896C1[4]),  4,9},
  {&(_tg__ZTV8S20896C3__8S20896C48S20896C2__8S20896C1[3]),  3,4},
  {&(_tg__ZTV8S20896C3__8S20896C2__8S20896C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20896C1[];
extern  VTBL_ENTRY _ZTV8S20896C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20896C1[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20896C1D0Ev,_ZTv0_n20_N8S20896C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20896C1D0Ev,_ZThn24_N8S20896C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20896C1D1Ev,_ZTv0_n20_N8S20896C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20896C1D1Ev,_ZThn24_N8S20896C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20896C1 = {  "S20896C1", // class name
  bases_S20896C1, 3,
  &(vtc_S20896C1[0]), // expected_vtbl_contents
  &(vtt_S20896C1[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S20896C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20896C1),35, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20896C1),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5514C3_nt  {
  char s5514c3f0[2304];
  int s5514c3f1;
};
//SIG(-1 S5514C3_nt) C1{ Fc[2304] Fi}



//skip512 S5514C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5514C2  {
  int s5514c2f0[2];
  ::S5514C3_nt s5514c2f1;
};
//SIG(-1 S5514C2) C1{ Fi[2] FC2{ Fc[2304] Fi}}



static void Test_S5514C2()
{
  {
    init_simple_test("S5514C2");
    S5514C2 lv;
    check2(sizeof(lv), 2316, "sizeof(S5514C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5514C2)");
    check_field_offset(lv, s5514c2f0, 0, "S5514C2.s5514c2f0");
    check_field_offset(lv, s5514c2f1, 8, "S5514C2.s5514c2f1");
  }
}
static Arrange_To_Call_Me vS5514C2(Test_S5514C2, "S5514C2", 2316);

#else // __cplusplus

Class_Descriptor cd_S5514C2 = {  "S5514C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  2316, // 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  S5514C5_nt  {
  char s5514c5f0[20];
};
//SIG(-1 S5514C5_nt) C1{ Fc[20]}



//skip512 S5514C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5514C4_nt  {
  ::S5514C5_nt s5514c4f0;
  char s5514c4f1[16];
};
//SIG(-1 S5514C4_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S5514C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5514C6_nt  {
  __tsi64 s5514c6f0;
};
//SIG(-1 S5514C6_nt) C1{ FL}



//skip512 S5514C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5514C1  : S5514C2 {
  char s5514c1f0[33];
  ::S5514C4_nt s5514c1f1;
  ::S5514C4_nt s5514c1f2[32];
  int s5514c1f3;
  ::S5514C6_nt s5514c1f4;
  char s5514c1f5[10031];
};
//SIG(1 S5514C1) C1{ BC2{ Fi[2] FC3{ Fc[2304] Fi}} Fc[33] FC4{ FC5{ Fc[20]} Fc[16]} FC4[32] Fi FC6{ FL} Fc[10031]}



static void Test_S5514C1()
{
  extern Class_Descriptor cd_S5514C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1699,3397)];
    init_test(&cd_S5514C1, buf);
    S5514C1 &lv = *(new (buf) S5514C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 13584, "sizeof(S5514C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5514C1)");
    check_base_class_offset(lv, (S5514C2*), 0, "S5514C1");
    check_field_offset(lv, s5514c1f0, 2316, "S5514C1.s5514c1f0");
    check_field_offset(lv, s5514c1f1, 2349, "S5514C1.s5514c1f1");
    check_field_offset(lv, s5514c1f2, 2385, "S5514C1.s5514c1f2");
    check_field_offset(lv, s5514c1f3, 3540, "S5514C1.s5514c1f3");
    check_field_offset(lv, s5514c1f4, 3544, "S5514C1.s5514c1f4");
    check_field_offset(lv, s5514c1f5, 3552, "S5514C1.s5514c1f5");
    test_class_info(&lv, &cd_S5514C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5514C1(Test_S5514C1, "S5514C1", 13584);

#else // __cplusplus

extern Class_Descriptor cd_S5514C2;
static Base_Class bases_S5514C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5514C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5514C1 = {  "S5514C1", // class name
  bases_S5514C1, 1,
  0, // no vftv
  0, //no vtt
  13584, // 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  S5513C6_nt  {
  long s5513c6f0;
};
//SIG(-1 S5513C6_nt) C1{ Fl}



//skip512 S5513C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5513C1  : S5514C2 {
  char s5513c1f0[33];
  ::S5514C4_nt s5513c1f1;
  ::S5514C4_nt s5513c1f2[32];
  int s5513c1f3;
  ::S5513C6_nt s5513c1f4;
  char s5513c1f5[10031];
};
//SIG(1 S5513C1) C1{ BC2{ Fi[2] FC3{ Fc[2304] Fi}} Fc[33] FC4{ FC5{ Fc[20]} Fc[16]} FC4[32] Fi FC6{ Fl} Fc[10031]}



static void Test_S5513C1()
{
  extern Class_Descriptor cd_S5513C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1699,3396)];
    init_test(&cd_S5513C1, buf);
    S5513C1 &lv = *(new (buf) S5513C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13584,13580), "sizeof(S5513C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5513C1)");
    check_base_class_offset(lv, (S5514C2*), 0, "S5513C1");
    check_field_offset(lv, s5513c1f0, 2316, "S5513C1.s5513c1f0");
    check_field_offset(lv, s5513c1f1, 2349, "S5513C1.s5513c1f1");
    check_field_offset(lv, s5513c1f2, 2385, "S5513C1.s5513c1f2");
    check_field_offset(lv, s5513c1f3, 3540, "S5513C1.s5513c1f3");
    check_field_offset(lv, s5513c1f4, 3544, "S5513C1.s5513c1f4");
    check_field_offset(lv, s5513c1f5, ABISELECT(3552,3548), "S5513C1.s5513c1f5");
    test_class_info(&lv, &cd_S5513C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5513C1(Test_S5513C1, "S5513C1", ABISELECT(13584,13580));

#else // __cplusplus

extern Class_Descriptor cd_S5514C2;
static Base_Class bases_S5513C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5514C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5513C1 = {  "S5513C1", // class name
  bases_S5513C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(13584,13580), // 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  S20815C3  {
  char s20815c3f0;
  long s20815c3f1[8];
  virtual void  v2(); // _ZN8S20815C32v2Ev
  virtual void  v3(); // _ZN8S20815C32v3Ev
  virtual void  v4(); // _ZN8S20815C32v4Ev
  ~S20815C3(); // tgen
  S20815C3(); // tgen
};
//SIG(-1 S20815C3) C1{ v1 v2 v3 Fc Fl[8]}


void  S20815C3 ::v2(){vfunc_called(this, "_ZN8S20815C32v2Ev");}
void  S20815C3 ::v3(){vfunc_called(this, "_ZN8S20815C32v3Ev");}
void  S20815C3 ::v4(){vfunc_called(this, "_ZN8S20815C32v4Ev");}
S20815C3 ::~S20815C3(){ note_dtor("S20815C3", this);} // tgen
S20815C3 ::S20815C3(){ note_ctor("S20815C3", this);} // tgen

static void Test_S20815C3()
{
  extern Class_Descriptor cd_S20815C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S20815C3, buf);
    S20815C3 *dp, &lv = *(dp=new (buf) S20815C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20815C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20815C3)");
    check_field_offset(lv, s20815c3f0, ABISELECT(8,4), "S20815C3.s20815c3f0");
    check_field_offset(lv, s20815c3f1, ABISELECT(16,8), "S20815C3.s20815c3f1");
    test_class_info(&lv, &cd_S20815C3);
    dp->~S20815C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20815C3(Test_S20815C3, "S20815C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20815C3C1Ev();
extern void _ZN8S20815C3D1Ev();
Name_Map name_map_S20815C3[] = {
  NSPAIR(_ZN8S20815C3C1Ev),
  NSPAIR(_ZN8S20815C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20815C3[];
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
static  VTBL_ENTRY vtc_S20815C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20815C3[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20815C3[];
extern  VTBL_ENTRY _ZTV8S20815C3[];
Class_Descriptor cd_S20815C3 = {  "S20815C3", // class name
  0,0,//no base classes
  &(vtc_S20815C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20815C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20815C3),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  S20815C2  : virtual S20815C3 {
  short s20815c2f0;
  void *s20815c2f1[2];
  short s20815c2f2[4];
  virtual void  v5(); // _ZN8S20815C22v5Ev
  ~S20815C2(); // tgen
  S20815C2(); // tgen
};
//SIG(-1 S20815C2) C1{ VBC2{ v2 v3 v4 Fc Fl[8]} v1 Fs Fp[2] Fs[4]}


void  S20815C2 ::v5(){vfunc_called(this, "_ZN8S20815C22v5Ev");}
S20815C2 ::~S20815C2(){ note_dtor("S20815C2", this);} // tgen
S20815C2 ::S20815C2(){ note_ctor("S20815C2", this);} // tgen

static void Test_S20815C2()
{
  extern Class_Descriptor cd_S20815C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S20815C2, buf);
    S20815C2 *dp, &lv = *(dp=new (buf) S20815C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S20815C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20815C2)");
    check_base_class_offset(lv, (S20815C3*), ABISELECT(40,24), "S20815C2");
    check_field_offset(lv, s20815c2f0, ABISELECT(8,4), "S20815C2.s20815c2f0");
    check_field_offset(lv, s20815c2f1, ABISELECT(16,8), "S20815C2.s20815c2f1");
    check_field_offset(lv, s20815c2f2, ABISELECT(32,16), "S20815C2.s20815c2f2");
    test_class_info(&lv, &cd_S20815C2);
    dp->~S20815C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20815C2(Test_S20815C2, "S20815C2", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S20815C2C1Ev();
extern void _ZN8S20815C2D1Ev();
Name_Map name_map_S20815C2[] = {
  NSPAIR(_ZN8S20815C2C1Ev),
  NSPAIR(_ZN8S20815C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20815C3;
extern VTBL_ENTRY _ZTI8S20815C3[];
extern  VTBL_ENTRY _ZTV8S20815C3[];
static Base_Class bases_S20815C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20815C3,    ABISELECT(40,24), //bcp->offset
    4, //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 _ZTI8S20815C2[];
extern void _ZN8S20815C22v5Ev();
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
static  VTBL_ENTRY vtc_S20815C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20815C2[0]),
  (VTBL_ENTRY)&_ZN8S20815C22v5Ev,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20815C2[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20815C2[];
static  VTT_ENTRY vtt_S20815C2[] = {
  {&(_ZTV8S20815C2[3]),  3,12},
  {&(_ZTV8S20815C2[9]),  9,12},
};
extern VTBL_ENTRY _ZTI8S20815C2[];
extern  VTBL_ENTRY _ZTV8S20815C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20815C2[];
Class_Descriptor cd_S20815C2 = {  "S20815C2", // class name
  bases_S20815C2, 1,
  &(vtc_S20815C2[0]), // expected_vtbl_contents
  &(vtt_S20815C2[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S20815C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20815C2),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20815C2),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  S20815C4  : S20815C3 {
  ::S20815C3 s20815c4f0;
  long double s20815c4f1;
  ::S20815C3 s20815c4f2;
  virtual  ~S20815C4(); // _ZN8S20815C4D1Ev
  virtual void  v6(); // _ZN8S20815C42v6Ev
  virtual void  v7(); // _ZN8S20815C42v7Ev
  S20815C4(); // tgen
};
//SIG(-1 S20815C4) C1{ BC2{ v3 v4 v5 Fc Fl[8]} vd v1 v2 FC2 FD FC2}


 S20815C4 ::~S20815C4(){ note_dtor("S20815C4", this);}
void  S20815C4 ::v6(){vfunc_called(this, "_ZN8S20815C42v6Ev");}
void  S20815C4 ::v7(){vfunc_called(this, "_ZN8S20815C42v7Ev");}
S20815C4 ::S20815C4(){ note_ctor("S20815C4", this);} // tgen

static void Test_S20815C4()
{
  extern Class_Descriptor cd_S20815C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,34)];
    init_test(&cd_S20815C4, buf);
    S20815C4 *dp, &lv = *(dp=new (buf) S20815C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,132), "sizeof(S20815C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20815C4)");
    check_base_class_offset(lv, (S20815C3*), 0, "S20815C4");
    check_field_offset(lv, s20815c4f0, ABISELECT(80,40), "S20815C4.s20815c4f0");
    check_field_offset(lv, s20815c4f1, ABISELECT(160,80), "S20815C4.s20815c4f1");
    check_field_offset(lv, s20815c4f2, ABISELECT(176,92), "S20815C4.s20815c4f2");
    test_class_info(&lv, &cd_S20815C4);
    dp->~S20815C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20815C4(Test_S20815C4, "S20815C4", ABISELECT(256,132));

#else // __cplusplus

extern void _ZN8S20815C4C1Ev();
extern void _ZN8S20815C4D1Ev();
Name_Map name_map_S20815C4[] = {
  NSPAIR(_ZN8S20815C4C1Ev),
  NSPAIR(_ZN8S20815C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20815C3;
extern VTBL_ENTRY _ZTI8S20815C3[];
extern  VTBL_ENTRY _ZTV8S20815C3[];
static Base_Class bases_S20815C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20815C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S20815C4[];
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
extern void _ZN8S20815C4D1Ev();
extern void _ZN8S20815C4D0Ev();
extern void _ZN8S20815C42v6Ev();
extern void _ZN8S20815C42v7Ev();
static  VTBL_ENTRY vtc_S20815C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20815C4[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20815C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20815C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20815C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20815C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S20815C4[];
extern  VTBL_ENTRY _ZTV8S20815C4[];
Class_Descriptor cd_S20815C4 = {  "S20815C4", // class name
  bases_S20815C4, 1,
  &(vtc_S20815C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,132), // object size
  NSPAIRA(_ZTI8S20815C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20815C4),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  S20815C1  : virtual S20815C2 , virtual S20815C4 {
  char s20815c1f0;
  virtual  ~S20815C1(); // _ZN8S20815C1D2Ev
  virtual void  v1(); // _ZN8S20815C12v1Ev
  S20815C1(); // tgen
};
//SIG(1 S20815C1) C1{ VBC2{ VBC3{ v2 v3 v4 Fc Fl[8]} v5 Fs Fp[2] Fs[4]} VBC4{ BC3 vd v6 v7 FC3 FD FC3} vd v1 Fc}


 S20815C1 ::~S20815C1(){ note_dtor("S20815C1", this);}
void  S20815C1 ::v1(){vfunc_called(this, "_ZN8S20815C12v1Ev");}
S20815C1 ::S20815C1(){ note_ctor("S20815C1", this);} // tgen

static void Test_S20815C1()
{
  extern Class_Descriptor cd_S20815C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(26,52)];
    init_test(&cd_S20815C1, buf);
    S20815C1 *dp, &lv = *(dp=new (buf) S20815C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,204), "sizeof(S20815C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20815C1)");
    check_base_class_offset(lv, (S20815C3*)(S20815C2*), ABISELECT(56,32), "S20815C1");
    check_base_class_offset(lv, (S20815C2*), ABISELECT(16,8), "S20815C1");
    check_base_class_offset(lv, (S20815C3*)(S20815C4*), ABISELECT(144,72), "S20815C1");
    check_base_class_offset(lv, (S20815C4*), ABISELECT(144,72), "S20815C1");
    check_field_offset(lv, s20815c1f0, ABISELECT(8,4), "S20815C1.s20815c1f0");
    test_class_info(&lv, &cd_S20815C1);
    dp->~S20815C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20815C1(Test_S20815C1, "S20815C1", ABISELECT(400,204));

#else // __cplusplus

extern void _ZN8S20815C1C1Ev();
extern void _ZN8S20815C1D2Ev();
Name_Map name_map_S20815C1[] = {
  NSPAIR(_ZN8S20815C1C1Ev),
  NSPAIR(_ZN8S20815C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20815C3;
extern VTBL_ENTRY _ZTI8S20815C3[];
extern  VTBL_ENTRY _ZTV8S20815C3[];
extern Class_Descriptor cd_S20815C2;
extern VTBL_ENTRY _ZTI8S20815C2[];
extern  VTBL_ENTRY _ZTV8S20815C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20815C2[];
extern Class_Descriptor cd_S20815C3;
extern VTBL_ENTRY _ZTI8S20815C3[];
extern  VTBL_ENTRY _ZTV8S20815C3[];
extern Class_Descriptor cd_S20815C4;
extern VTBL_ENTRY _ZTI8S20815C4[];
extern  VTBL_ENTRY _ZTV8S20815C4[];
static Base_Class bases_S20815C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20815C3,    ABISELECT(56,32), //bcp->offset
    13, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20815C2,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20815C3,    ABISELECT(144,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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20815C4,    ABISELECT(144,72), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20815C1[];
extern void _ZN8S20815C1D1Ev();
extern void _ZN8S20815C1D0Ev();
extern void _ZN8S20815C12v1Ev();
extern void _ZN8S20815C22v5Ev();
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S20815C1D1Ev,_ZTv0_n24_N8S20815C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20815C1D1Ev,_ZThn72_N8S20815C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20815C1D0Ev,_ZTv0_n24_N8S20815C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20815C1D0Ev,_ZThn72_N8S20815C1D0Ev)() __attribute__((weak));
extern void _ZN8S20815C42v6Ev();
extern void _ZN8S20815C42v7Ev();
static  VTBL_ENTRY vtc_S20815C1[] = {
  ABISELECT(144,72),
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20815C1[0]),
  (VTBL_ENTRY)&_ZN8S20815C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20815C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20815C12v1Ev,
  0,
  ABISELECT(40,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20815C1[0]),
  (VTBL_ENTRY)&_ZN8S20815C22v5Ev,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20815C1[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
  0,
  0,
  ABISELECT(-144,-72),
  0,
  0,
  0,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20815C1[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20815C1D1Ev,_ZTv0_n24_N8S20815C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20815C1D0Ev,_ZTv0_n24_N8S20815C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20815C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20815C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S20815C1[];
extern void _ZN8S20815C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20815C2__8S20815C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20815C2[0]),
  (VTBL_ENTRY)&_ZN8S20815C22v5Ev,
};
extern void _ZN8S20815C32v2Ev();
extern void _ZN8S20815C32v3Ev();
extern void _ZN8S20815C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20815C3__8S20815C2__8S20815C1[] = {
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20815C2[0]),
  (VTBL_ENTRY)&_ZN8S20815C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20815C32v4Ev,
};
static  VTT_ENTRY vtt_S20815C1[] = {
  {&(_ZTV8S20815C1[5]),  5,36},
  {&(_ZTV8S20815C1[12]),  12,36},
  {&(_ZTV8S20815C1[18]),  18,36},
  {&(_ZTV8S20815C1[29]),  29,36},
  {&(_tg__ZTV8S20815C2__8S20815C1[3]),  3,4},
  {&(_tg__ZTV8S20815C3__8S20815C2__8S20815C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20815C1[];
extern  VTBL_ENTRY _ZTV8S20815C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20815C1[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20815C1D0Ev,_ZTv0_n24_N8S20815C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20815C1D0Ev,_ZThn72_N8S20815C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20815C1D1Ev,_ZTv0_n24_N8S20815C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20815C1D1Ev,_ZThn72_N8S20815C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20815C1 = {  "S20815C1", // class name
  bases_S20815C1, 4,
  &(vtc_S20815C1[0]), // expected_vtbl_contents
  &(vtt_S20815C1[0]), // expected_vtt_contents
  ABISELECT(400,204), // object size
  NSPAIRA(_ZTI8S20815C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20815C1),36, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20815C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6388C2  {
  char s6388c2f0;
  void *s6388c2f1[3];
  unsigned char s6388c2f2:1;
  short s6388c2f3:6;
  virtual void  v1(); // _ZN7S6388C22v1Ev
  virtual void  v2(); // _ZN7S6388C22v2Ev
  ~S6388C2(); // tgen
  S6388C2(); // tgen
};
//SIG(-1 S6388C2) C1{ v1 v2 Fc Fp[3] Fc:1 Fs:6}


void  S6388C2 ::v1(){vfunc_called(this, "_ZN7S6388C22v1Ev");}
void  S6388C2 ::v2(){vfunc_called(this, "_ZN7S6388C22v2Ev");}
S6388C2 ::~S6388C2(){ note_dtor("S6388C2", this);} // tgen
S6388C2 ::S6388C2(){ note_ctor("S6388C2", this);} // tgen

static void Test_S6388C2()
{
  extern Class_Descriptor cd_S6388C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S6388C2, buf);
    S6388C2 *dp, &lv = *(dp=new (buf) S6388C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6388C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6388C2)");
    check_field_offset(lv, s6388c2f0, ABISELECT(8,4), "S6388C2.s6388c2f0");
    check_field_offset(lv, s6388c2f1, ABISELECT(16,8), "S6388C2.s6388c2f1");
    set_bf_and_test(lv, s6388c2f2, ABISELECT(40,20), 0, 1, 1, "S6388C2");
    set_bf_and_test(lv, s6388c2f3, ABISELECT(40,20), 1, 6, 1, "S6388C2");
    set_bf_and_test(lv, s6388c2f3, ABISELECT(40,20), 1, 6, hide_sll(1LL<<5), "S6388C2");
    test_class_info(&lv, &cd_S6388C2);
    dp->~S6388C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6388C2(Test_S6388C2, "S6388C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6388C2C1Ev();
extern void _ZN7S6388C2D1Ev();
Name_Map name_map_S6388C2[] = {
  NSPAIR(_ZN7S6388C2C1Ev),
  NSPAIR(_ZN7S6388C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6388C2[];
extern void _ZN7S6388C22v1Ev();
extern void _ZN7S6388C22v2Ev();
static  VTBL_ENTRY vtc_S6388C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6388C2[0]),
  (VTBL_ENTRY)&_ZN7S6388C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6388C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6388C2[];
extern  VTBL_ENTRY _ZTV7S6388C2[];
Class_Descriptor cd_S6388C2 = {  "S6388C2", // class name
  0,0,//no base classes
  &(vtc_S6388C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6388C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6388C2),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  S6388C4  : S6388C2 {
  virtual void  v3(); // _ZN7S6388C42v3Ev
  ~S6388C4(); // tgen
  S6388C4(); // tgen
};
//SIG(-1 S6388C4) C1{ BC2{ v2 v3 Fc Fp[3] Fc:1 Fs:6} v1}


void  S6388C4 ::v3(){vfunc_called(this, "_ZN7S6388C42v3Ev");}
S6388C4 ::~S6388C4(){ note_dtor("S6388C4", this);} // tgen
S6388C4 ::S6388C4(){ note_ctor("S6388C4", this);} // tgen

static void Test_S6388C4()
{
  extern Class_Descriptor cd_S6388C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S6388C4, buf);
    S6388C4 *dp, &lv = *(dp=new (buf) S6388C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6388C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6388C4)");
    check_base_class_offset(lv, (S6388C2*), 0, "S6388C4");
    test_class_info(&lv, &cd_S6388C4);
    dp->~S6388C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6388C4(Test_S6388C4, "S6388C4", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6388C4C1Ev();
extern void _ZN7S6388C4D1Ev();
Name_Map name_map_S6388C4[] = {
  NSPAIR(_ZN7S6388C4C1Ev),
  NSPAIR(_ZN7S6388C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6388C2;
extern VTBL_ENTRY _ZTI7S6388C2[];
extern  VTBL_ENTRY _ZTV7S6388C2[];
static Base_Class bases_S6388C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6388C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6388C4[];
extern void _ZN7S6388C22v1Ev();
extern void _ZN7S6388C22v2Ev();
extern void _ZN7S6388C42v3Ev();
static  VTBL_ENTRY vtc_S6388C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6388C4[0]),
  (VTBL_ENTRY)&_ZN7S6388C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6388C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6388C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S6388C4[];
extern  VTBL_ENTRY _ZTV7S6388C4[];
Class_Descriptor cd_S6388C4 = {  "S6388C4", // class name
  bases_S6388C4, 1,
  &(vtc_S6388C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6388C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6388C4),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  S6388C3  {
  void *s6388c3f0;
  ::S6388C4 s6388c3f1;
  void  mf6388c3(); // _ZN7S6388C38mf6388c3Ev
  virtual  ~S6388C3(); // _ZN7S6388C3D1Ev
  S6388C3(); // tgen
};
//SIG(-1 S6388C3) C1{ vd m Fp FC2{ BC3{ v2 v3 Fc Fp[3] Fc:1 Fs:6} v1}}


void  S6388C3 ::mf6388c3(){}
 S6388C3 ::~S6388C3(){ note_dtor("S6388C3", this);}
S6388C3 ::S6388C3(){ note_ctor("S6388C3", this);} // tgen

static void Test_S6388C3()
{
  extern Class_Descriptor cd_S6388C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S6388C3, buf);
    S6388C3 *dp, &lv = *(dp=new (buf) S6388C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S6388C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6388C3)");
    check_field_offset(lv, s6388c3f0, ABISELECT(8,4), "S6388C3.s6388c3f0");
    check_field_offset(lv, s6388c3f1, ABISELECT(16,8), "S6388C3.s6388c3f1");
    test_class_info(&lv, &cd_S6388C3);
    dp->~S6388C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6388C3(Test_S6388C3, "S6388C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S6388C3C1Ev();
extern void _ZN7S6388C3D1Ev();
Name_Map name_map_S6388C3[] = {
  NSPAIR(_ZN7S6388C3C1Ev),
  NSPAIR(_ZN7S6388C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6388C3[];
extern void _ZN7S6388C3D1Ev();
extern void _ZN7S6388C3D0Ev();
static  VTBL_ENTRY vtc_S6388C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6388C3[0]),
  (VTBL_ENTRY)&_ZN7S6388C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6388C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S6388C3[];
extern  VTBL_ENTRY _ZTV7S6388C3[];
Class_Descriptor cd_S6388C3 = {  "S6388C3", // class name
  0,0,//no base classes
  &(vtc_S6388C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S6388C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6388C3),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  S6388C1  : S6388C2 , virtual S6388C3 {
  void *s6388c1f0[4];
  ::S6388C2 s6388c1f1[5];
  long s6388c1f2;
  short s6388c1f3[2];
  __tsi64 s6388c1f4;
  ~S6388C1(); // tgen
  S6388C1(); // tgen
};
//SIG(1 S6388C1) C1{ BC2{ v1 v2 Fc Fp[3] Fc:1 Fs:6} VBC3{ vd m Fp FC4{ BC2 v3}} Fp[4] FC2[5] Fl Fs[2] FL}


S6388C1 ::~S6388C1(){ note_dtor("S6388C1", this);} // tgen
S6388C1 ::S6388C1(){ note_ctor("S6388C1", this);} // tgen

static void Test_S6388C1()
{
  extern Class_Descriptor cd_S6388C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,53)];
    init_test(&cd_S6388C1, buf);
    S6388C1 *dp, &lv = *(dp=new (buf) S6388C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,208), "sizeof(S6388C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6388C1)");
    check_base_class_offset(lv, (S6388C2*), 0, "S6388C1");
    check_base_class_offset(lv, (S6388C3*), ABISELECT(344,176), "S6388C1");
    check_field_offset(lv, s6388c1f0, ABISELECT(48,24), "S6388C1.s6388c1f0");
    check_field_offset(lv, s6388c1f1, ABISELECT(80,40), "S6388C1.s6388c1f1");
    check_field_offset(lv, s6388c1f2, ABISELECT(320,160), "S6388C1.s6388c1f2");
    check_field_offset(lv, s6388c1f3, ABISELECT(328,164), "S6388C1.s6388c1f3");
    check_field_offset(lv, s6388c1f4, ABISELECT(336,168), "S6388C1.s6388c1f4");
    test_class_info(&lv, &cd_S6388C1);
    dp->~S6388C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6388C1(Test_S6388C1, "S6388C1", ABISELECT(408,208));

#else // __cplusplus

extern void _ZN7S6388C1C1Ev();
extern void _ZN7S6388C1D1Ev();
Name_Map name_map_S6388C1[] = {
  NSPAIR(_ZN7S6388C1C1Ev),
  NSPAIR(_ZN7S6388C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6388C2;
extern VTBL_ENTRY _ZTI7S6388C2[];
extern  VTBL_ENTRY _ZTV7S6388C2[];
extern Class_Descriptor cd_S6388C3;
extern VTBL_ENTRY _ZTI7S6388C3[];
extern  VTBL_ENTRY _ZTV7S6388C3[];
static Base_Class bases_S6388C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6388C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6388C3,    ABISELECT(344,176), //bcp->offset
    7, //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 _ZTI7S6388C1[];
extern void _ZN7S6388C22v1Ev();
extern void _ZN7S6388C22v2Ev();
extern void _ZN7S6388C1D1Ev();
extern void _ZN7S6388C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S6388C1D1Ev,_ZTv0_n12_N7S6388C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S6388C1D1Ev,_ZThn176_N7S6388C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6388C1D0Ev,_ZTv0_n12_N7S6388C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S6388C1D0Ev,_ZThn176_N7S6388C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6388C1[] = {
  ABISELECT(344,176),
  0,
  (VTBL_ENTRY)&(_ZTI7S6388C1[0]),
  (VTBL_ENTRY)&_ZN7S6388C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6388C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6388C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6388C1D0Ev,
  ABISELECT(-344,-176),
  ABISELECT(-344,-176),
  (VTBL_ENTRY)&(_ZTI7S6388C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6388C1D1Ev,_ZTv0_n12_N7S6388C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6388C1D0Ev,_ZTv0_n12_N7S6388C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6388C1[];
static  VTT_ENTRY vtt_S6388C1[] = {
  {&(_ZTV7S6388C1[3]),  3,12},
  {&(_ZTV7S6388C1[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S6388C1[];
extern  VTBL_ENTRY _ZTV7S6388C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6388C1[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6388C1D0Ev,_ZTv0_n12_N7S6388C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S6388C1D0Ev,_ZThn176_N7S6388C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6388C1D1Ev,_ZTv0_n12_N7S6388C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S6388C1D1Ev,_ZThn176_N7S6388C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6388C1 = {  "S6388C1", // class name
  bases_S6388C1, 2,
  &(vtc_S6388C1[0]), // expected_vtbl_contents
  &(vtt_S6388C1[0]), // expected_vtt_contents
  ABISELECT(408,208), // object size
  NSPAIRA(_ZTI7S6388C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6388C1),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6388C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15222C3  {
  short s15222c3f0[2];
  char s15222c3f1[6];
  void  mf15222c3(); // _ZN8S15222C39mf15222c3Ev
};
//SIG(-1 S15222C3) C1{ m Fs[2] Fc[6]}


void  S15222C3 ::mf15222c3(){}

static void Test_S15222C3()
{
  {
    init_simple_test("S15222C3");
    S15222C3 lv;
    check2(sizeof(lv), 10, "sizeof(S15222C3)");
    check2(__alignof__(lv), 2, "__alignof__(S15222C3)");
    check_field_offset(lv, s15222c3f0, 0, "S15222C3.s15222c3f0");
    check_field_offset(lv, s15222c3f1, 4, "S15222C3.s15222c3f1");
  }
}
static Arrange_To_Call_Me vS15222C3(Test_S15222C3, "S15222C3", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S15222C4  {
  void *s15222c4f0;
  __tsi64 s15222c4f1;
  char s15222c4f2;
};
//SIG(1 S15222C4) U1{ Fp FL Fc}

#endif // __cplusplus
#ifdef __cplusplus

struct  S15222C2  {
  void *s15222c2f0;
  unsigned char s15222c2f1:1;
  char s15222c2f2:2;
  void *s15222c2f3;
  __tsi64 s15222c2f4;
  ::S15222C3 s15222c2f5;
  int s15222c2f6;
  ::S15222C4 s15222c2f7;
  ::S15222C4 s15222c2f8;
};
//SIG(-1 S15222C2) C1{ Fp Fc:1 Fc:2 Fp FL FC2{ m Fs[2] Fc[6]} Fi FU3{ Fp FL Fc} FU3}



static void Test_S15222C2()
{
  {
    init_simple_test("S15222C2");
    static S15222C2 lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S15222C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15222C2)");
    check_field_offset(lv, s15222c2f0, 0, "S15222C2.s15222c2f0");
    set_bf_and_test(lv, s15222c2f1, ABISELECT(8,4), 0, 1, 1, "S15222C2");
    set_bf_and_test(lv, s15222c2f2, ABISELECT(8,4), 1, 2, 1, "S15222C2");
    set_bf_and_test(lv, s15222c2f2, ABISELECT(8,4), 1, 2, hide_sll(1LL<<1), "S15222C2");
    check_field_offset(lv, s15222c2f3, ABISELECT(16,8), "S15222C2.s15222c2f3");
    check_field_offset(lv, s15222c2f4, ABISELECT(24,12), "S15222C2.s15222c2f4");
    check_field_offset(lv, s15222c2f5, ABISELECT(32,20), "S15222C2.s15222c2f5");
    check_field_offset(lv, s15222c2f6, ABISELECT(44,32), "S15222C2.s15222c2f6");
    check_field_offset(lv, s15222c2f7, ABISELECT(48,36), "S15222C2.s15222c2f7");
    check_field_offset(lv, s15222c2f8, ABISELECT(56,44), "S15222C2.s15222c2f8");
  }
}
static Arrange_To_Call_Me vS15222C2(Test_S15222C2, "S15222C2", ABISELECT(64,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15222C1  {
  char s15222c1f0[257];
  int s15222c1f1;
  ::S15222C2 s15222c1f2;
  ::S15222C4 s15222c1f3;
  void  mf15222c1(); // _ZN8S15222C19mf15222c1Ev
};
//SIG(1 S15222C1) C1{ m Fc[257] Fi FC2{ Fp Fc:1 Fc:2 Fp FL FC3{ m Fs[2] Fc[6]} Fi FU4{ Fp FL Fc} FU4} FU4}


void  S15222C1 ::mf15222c1(){}

static void Test_S15222C1()
{
  {
    init_simple_test("S15222C1");
    static S15222C1 lv;
    check2(sizeof(lv), ABISELECT(336,324), "sizeof(S15222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15222C1)");
    check_field_offset(lv, s15222c1f0, 0, "S15222C1.s15222c1f0");
    check_field_offset(lv, s15222c1f1, 260, "S15222C1.s15222c1f1");
    check_field_offset(lv, s15222c1f2, 264, "S15222C1.s15222c1f2");
    check_field_offset(lv, s15222c1f3, ABISELECT(328,316), "S15222C1.s15222c1f3");
  }
}
static Arrange_To_Call_Me vS15222C1(Test_S15222C1, "S15222C1", ABISELECT(336,324));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1065C3_nt  : S6118C14_nt {
};
//SIG(-1 S1065C3_nt) C1{ BC2{ m Fi}}



//skip512 S1065C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S6118C14_nt;
extern VTBL_ENTRY _ZTI11S6118C14_nt[];
static Base_Class bases_S1065C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6118C14_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 _ZTI10S1065C3_nt[];
VTBL_ENTRY *P__ZTI10S1065C3_nt = _ZTI10S1065C3_nt; 
Class_Descriptor cd_S1065C3_nt = {  "S1065C3_nt", // class name
  bases_S1065C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1065C3_nt),ABISELECT(24,12), //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  S1065C2_nt  : S1065C3_nt {
  virtual  ~S1065C2_nt(); // _ZN10S1065C2_ntD1Ev
  virtual void  v2(); // _ZN10S1065C2_nt2v2Ev
  S1065C2_nt(); // tgen
};
//SIG(-1 S1065C2_nt) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1065C2_nt ::~S1065C2_nt(){ note_dtor("S1065C2_nt", this);}
void  S1065C2_nt ::v2(){vfunc_called(this, "_ZN10S1065C2_nt2v2Ev");}
S1065C2_nt ::S1065C2_nt(){ note_ctor("S1065C2_nt", this);} // tgen

//skip512 S1065C2_nt

#else // __cplusplus

extern void _ZN10S1065C2_ntC1Ev();
extern void _ZN10S1065C2_ntD1Ev();
Name_Map name_map_S1065C2_nt[] = {
  NSPAIR(_ZN10S1065C2_ntC1Ev),
  NSPAIR(_ZN10S1065C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6118C14_nt;
extern VTBL_ENTRY _ZTI11S6118C14_nt[];
extern Class_Descriptor cd_S1065C3_nt;
extern VTBL_ENTRY _ZTI10S1065C3_nt[];
static Base_Class bases_S1065C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6118C14_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_S1065C3_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 _ZTI10S1065C2_nt[];
extern void _ZN10S1065C2_ntD1Ev();
extern void _ZN10S1065C2_ntD0Ev();
extern void _ZN10S1065C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S1065C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1065C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1065C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1065C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1065C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S1065C2_nt[];
VTBL_ENTRY *P__ZTI10S1065C2_nt = _ZTI10S1065C2_nt; 
extern  VTBL_ENTRY _ZTV10S1065C2_nt[];
Class_Descriptor cd_S1065C2_nt = {  "S1065C2_nt", // class name
  bases_S1065C2_nt, 2,
  &(vtc_S1065C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1065C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S1065C2_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  S1065C6_nt  {
  ::S15367C14 s1065c6f0;
  void  mf1065c6(); // _ZN10S1065C6_nt8mf1065c6Ev
};
//SIG(-1 S1065C6_nt) C1{ m FC2{ m Fp}}


void  S1065C6_nt ::mf1065c6(){}

//skip512 S1065C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1065C5  {
  int s1065c5f0;
  ::S1065C6_nt s1065c5f1;
  int s1065c5f2;
  char s1065c5f3;
  ::S1065C6_nt s1065c5f4;
  ::S1065C6_nt s1065c5f5;
  char s1065c5f6[2];
  void  mf1065c5(); // _ZN7S1065C58mf1065c5Ev
};
//SIG(-1 S1065C5) C1{ m Fi FC2{ m FC3{ m Fp}} Fi Fc FC2 FC2 Fc[2]}


void  S1065C5 ::mf1065c5(){}

static void Test_S1065C5()
{
  {
    init_simple_test("S1065C5");
    S1065C5 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S1065C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1065C5)");
    check_field_offset(lv, s1065c5f0, 0, "S1065C5.s1065c5f0");
    check_field_offset(lv, s1065c5f1, ABISELECT(8,4), "S1065C5.s1065c5f1");
    check_field_offset(lv, s1065c5f2, ABISELECT(16,8), "S1065C5.s1065c5f2");
    check_field_offset(lv, s1065c5f3, ABISELECT(20,12), "S1065C5.s1065c5f3");
    check_field_offset(lv, s1065c5f4, ABISELECT(24,16), "S1065C5.s1065c5f4");
    check_field_offset(lv, s1065c5f5, ABISELECT(32,20), "S1065C5.s1065c5f5");
    check_field_offset(lv, s1065c5f6, ABISELECT(40,24), "S1065C5.s1065c5f6");
  }
}
static Arrange_To_Call_Me vS1065C5(Test_S1065C5, "S1065C5", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1065C1  : S1065C2_nt {
  ::S1065C5 s1065c1f0;
  virtual  ~S1065C1(); // _ZN7S1065C1D1Ev
  virtual void  v1(); // _ZN7S1065C12v1Ev
  S1065C1(); // tgen
};
//SIG(1 S1065C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2} vd v1 FC5{ m Fi FC6{ m FC7{ m Fp}} Fi Fc FC6 FC6 Fc[2]}}


 S1065C1 ::~S1065C1(){ note_dtor("S1065C1", this);}
void  S1065C1 ::v1(){vfunc_called(this, "_ZN7S1065C12v1Ev");}
S1065C1 ::S1065C1(){ note_ctor("S1065C1", this);} // tgen

static void Test_S1065C1()
{
  extern Class_Descriptor cd_S1065C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S1065C1, buf);
    S1065C1 *dp, &lv = *(dp=new (buf) S1065C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S1065C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1065C1)");
    check_base_class_offset(lv, (S6118C14_nt*)(S1065C3_nt*)(S1065C2_nt*), ABISELECT(8,4), "S1065C1");
    check_base_class_offset(lv, (S1065C3_nt*)(S1065C2_nt*), ABISELECT(8,4), "S1065C1");
    check_base_class_offset(lv, (S1065C2_nt*), 0, "S1065C1");
    check_field_offset(lv, s1065c1f0, ABISELECT(16,8), "S1065C1.s1065c1f0");
    test_class_info(&lv, &cd_S1065C1);
    dp->~S1065C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1065C1(Test_S1065C1, "S1065C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S1065C1C1Ev();
extern void _ZN7S1065C1D1Ev();
Name_Map name_map_S1065C1[] = {
  NSPAIR(_ZN7S1065C1C1Ev),
  NSPAIR(_ZN7S1065C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6118C14_nt;
extern VTBL_ENTRY _ZTI11S6118C14_nt[];
extern Class_Descriptor cd_S1065C3_nt;
extern VTBL_ENTRY _ZTI10S1065C3_nt[];
extern Class_Descriptor cd_S1065C2_nt;
extern VTBL_ENTRY _ZTI10S1065C2_nt[];
extern  VTBL_ENTRY _ZTV10S1065C2_nt[];
static Base_Class bases_S1065C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6118C14_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_S1065C3_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_S1065C2_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 _ZTI7S1065C1[];
extern void _ZN7S1065C1D1Ev();
extern void _ZN7S1065C1D0Ev();
extern void _ZN10S1065C2_nt2v2Ev();
extern void _ZN7S1065C12v1Ev();
static  VTBL_ENTRY vtc_S1065C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1065C1[0]),
  (VTBL_ENTRY)&_ZN7S1065C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1065C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1065C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S1065C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1065C1[];
extern  VTBL_ENTRY _ZTV7S1065C1[];
Class_Descriptor cd_S1065C1 = {  "S1065C1", // class name
  bases_S1065C1, 3,
  &(vtc_S1065C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S1065C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1065C1),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  S4795C3_nt  {
  ::S2014C20_nt s4795c3f0;
  int s4795c3f1[2];
  char s4795c3f2;
  virtual  ~S4795C3_nt(); // _ZN10S4795C3_ntD1Ev
  virtual void  v3(); // _ZN10S4795C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4795C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4795C3_nt2v5Ev
  S4795C3_nt(); // tgen
};
//SIG(-1 S4795C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4795C3_nt ::~S4795C3_nt(){ note_dtor("S4795C3_nt", this);}
void  S4795C3_nt ::v3(){vfunc_called(this, "_ZN10S4795C3_nt2v3Ev");}
void  S4795C3_nt ::v4(){vfunc_called(this, "_ZN10S4795C3_nt2v4Ev");}
void  S4795C3_nt ::v5(){vfunc_called(this, "_ZN10S4795C3_nt2v5Ev");}
S4795C3_nt ::S4795C3_nt(){ note_ctor("S4795C3_nt", this);} // tgen

//skip512 S4795C3_nt

#else // __cplusplus

extern void _ZN10S4795C3_ntC1Ev();
extern void _ZN10S4795C3_ntD1Ev();
Name_Map name_map_S4795C3_nt[] = {
  NSPAIR(_ZN10S4795C3_ntC1Ev),
  NSPAIR(_ZN10S4795C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4795C3_nt[];
extern void _ZN10S4795C3_ntD1Ev();
extern void _ZN10S4795C3_ntD0Ev();
extern void _ZN10S4795C3_nt2v3Ev();
extern void _ZN10S4795C3_nt2v4Ev();
extern void _ZN10S4795C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S4795C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4795C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4795C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S4795C3_nt[];
VTBL_ENTRY *P__ZTI10S4795C3_nt = _ZTI10S4795C3_nt; 
extern  VTBL_ENTRY _ZTV10S4795C3_nt[];
Class_Descriptor cd_S4795C3_nt = {  "S4795C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4795C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4795C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4795C3_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  S4795C2_nt  : S4795C3_nt {
  void *s4795c2f0;
  virtual void  v6(); // _ZN10S4795C2_nt2v6Ev
  virtual void  v7(); // _ZN10S4795C2_nt2v7Ev
  ~S4795C2_nt(); // tgen
  S4795C2_nt(); // tgen
};
//SIG(-1 S4795C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4795C2_nt ::v6(){vfunc_called(this, "_ZN10S4795C2_nt2v6Ev");}
void  S4795C2_nt ::v7(){vfunc_called(this, "_ZN10S4795C2_nt2v7Ev");}
S4795C2_nt ::~S4795C2_nt(){ note_dtor("S4795C2_nt", this);} // tgen
S4795C2_nt ::S4795C2_nt(){ note_ctor("S4795C2_nt", this);} // tgen

//skip512 S4795C2_nt

#else // __cplusplus

extern void _ZN10S4795C2_ntC1Ev();
extern void _ZN10S4795C2_ntD1Ev();
Name_Map name_map_S4795C2_nt[] = {
  NSPAIR(_ZN10S4795C2_ntC1Ev),
  NSPAIR(_ZN10S4795C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4795C3_nt;
extern VTBL_ENTRY _ZTI10S4795C3_nt[];
extern  VTBL_ENTRY _ZTV10S4795C3_nt[];
static Base_Class bases_S4795C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4795C3_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 _ZTI10S4795C2_nt[];
extern void _ZN10S4795C2_ntD1Ev();
extern void _ZN10S4795C2_ntD0Ev();
extern void _ZN10S4795C3_nt2v3Ev();
extern void _ZN10S4795C3_nt2v4Ev();
extern void _ZN10S4795C3_nt2v5Ev();
extern void _ZN10S4795C2_nt2v6Ev();
extern void _ZN10S4795C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S4795C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4795C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4795C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4795C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4795C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4795C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S4795C2_nt[];
VTBL_ENTRY *P__ZTI10S4795C2_nt = _ZTI10S4795C2_nt; 
extern  VTBL_ENTRY _ZTV10S4795C2_nt[];
Class_Descriptor cd_S4795C2_nt = {  "S4795C2_nt", // class name
  bases_S4795C2_nt, 1,
  &(vtc_S4795C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4795C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4795C2_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  S4795C1  : S4795C2_nt {
  void *s4795c1f0;
  int s4795c1f1[2];
  virtual  ~S4795C1(); // _ZN7S4795C1D1Ev
  virtual void  v1(); // _ZN7S4795C12v1Ev
  virtual void  v2(); // _ZN7S4795C12v2Ev
  S4795C1(); // tgen
};
//SIG(1 S4795C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 Fp Fi[2]}


 S4795C1 ::~S4795C1(){ note_dtor("S4795C1", this);}
void  S4795C1 ::v1(){vfunc_called(this, "_ZN7S4795C12v1Ev");}
void  S4795C1 ::v2(){vfunc_called(this, "_ZN7S4795C12v2Ev");}
S4795C1 ::S4795C1(){ note_ctor("S4795C1", this);} // tgen

static void Test_S4795C1()
{
  extern Class_Descriptor cd_S4795C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4795C1, buf);
    S4795C1 *dp, &lv = *(dp=new (buf) S4795C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4795C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4795C1)");
    check_base_class_offset(lv, (S4795C3_nt*)(S4795C2_nt*), 0, "S4795C1");
    check_base_class_offset(lv, (S4795C2_nt*), 0, "S4795C1");
    check_field_offset(lv, s4795c1f0, ABISELECT(48,32), "S4795C1.s4795c1f0");
    check_field_offset(lv, s4795c1f1, ABISELECT(56,36), "S4795C1.s4795c1f1");
    test_class_info(&lv, &cd_S4795C1);
    dp->~S4795C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4795C1(Test_S4795C1, "S4795C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4795C1C1Ev();
extern void _ZN7S4795C1D1Ev();
Name_Map name_map_S4795C1[] = {
  NSPAIR(_ZN7S4795C1C1Ev),
  NSPAIR(_ZN7S4795C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4795C3_nt;
extern VTBL_ENTRY _ZTI10S4795C3_nt[];
extern  VTBL_ENTRY _ZTV10S4795C3_nt[];
extern Class_Descriptor cd_S4795C2_nt;
extern VTBL_ENTRY _ZTI10S4795C2_nt[];
extern  VTBL_ENTRY _ZTV10S4795C2_nt[];
static Base_Class bases_S4795C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4795C3_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_S4795C2_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 _ZTI7S4795C1[];
extern void _ZN7S4795C1D1Ev();
extern void _ZN7S4795C1D0Ev();
extern void _ZN10S4795C3_nt2v3Ev();
extern void _ZN10S4795C3_nt2v4Ev();
extern void _ZN10S4795C3_nt2v5Ev();
extern void _ZN10S4795C2_nt2v6Ev();
extern void _ZN10S4795C2_nt2v7Ev();
extern void _ZN7S4795C12v1Ev();
extern void _ZN7S4795C12v2Ev();
static  VTBL_ENTRY vtc_S4795C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4795C1[0]),
  (VTBL_ENTRY)&_ZN7S4795C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4795C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4795C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4795C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4795C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S4795C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4795C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4795C1[];
extern  VTBL_ENTRY _ZTV7S4795C1[];
Class_Descriptor cd_S4795C1 = {  "S4795C1", // class name
  bases_S4795C1, 2,
  &(vtc_S4795C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4795C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4795C1),11, //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  S15339C1  {
  ::S3222C17 s15339c1f0;
  ::S245C8_nt s15339c1f1;
  unsigned int s15339c1f2:1;
  unsigned int s15339c1f3:1;
  unsigned int s15339c1f4:1;
  void *s15339c1f5;
  int s15339c1f6[2];
  unsigned int s15339c1f7:1;
  void  mf15339c1(); // _ZN8S15339C19mf15339c1Ev
};
//SIG(1 S15339C1) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC5{ BC6{ BC7{ BC4}}} Fi:1 Fi:1 Fi:1 Fp Fi[2] Fi:1}


void  S15339C1 ::mf15339c1(){}

static void Test_S15339C1()
{
  {
    init_simple_test("S15339C1");
    static S15339C1 lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S15339C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15339C1)");
    check_field_offset(lv, s15339c1f0, 0, "S15339C1.s15339c1f0");
    check_field_offset(lv, s15339c1f1, ABISELECT(16,12), "S15339C1.s15339c1f1");
    set_bf_and_test(lv, s15339c1f2, ABISELECT(32,24), 0, 1, 1, "S15339C1");
    set_bf_and_test(lv, s15339c1f3, ABISELECT(32,24), 1, 1, 1, "S15339C1");
    set_bf_and_test(lv, s15339c1f4, ABISELECT(32,24), 2, 1, 1, "S15339C1");
    check_field_offset(lv, s15339c1f5, ABISELECT(40,28), "S15339C1.s15339c1f5");
    check_field_offset(lv, s15339c1f6, ABISELECT(48,32), "S15339C1.s15339c1f6");
    set_bf_and_test(lv, s15339c1f7, ABISELECT(56,40), 0, 1, 1, "S15339C1");
  }
}
static Arrange_To_Call_Me vS15339C1(Test_S15339C1, "S15339C1", ABISELECT(64,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9359C2  {
  ::S2014C20_nt s9359c2f0;
  int s9359c2f1[2];
  char s9359c2f2;
  virtual  ~S9359C2(); // _ZN7S9359C2D1Ev
  virtual void  v3(); // _ZN7S9359C22v3Ev
  virtual void  v4(); // _ZN7S9359C22v4Ev
  virtual void  v5(); // _ZN7S9359C22v5Ev
  S9359C2(); // tgen
};
//SIG(-1 S9359C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9359C2 ::~S9359C2(){ note_dtor("S9359C2", this);}
void  S9359C2 ::v3(){vfunc_called(this, "_ZN7S9359C22v3Ev");}
void  S9359C2 ::v4(){vfunc_called(this, "_ZN7S9359C22v4Ev");}
void  S9359C2 ::v5(){vfunc_called(this, "_ZN7S9359C22v5Ev");}
S9359C2 ::S9359C2(){ note_ctor("S9359C2", this);} // tgen

static void Test_S9359C2()
{
  extern Class_Descriptor cd_S9359C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9359C2, buf);
    S9359C2 *dp, &lv = *(dp=new (buf) S9359C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9359C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9359C2)");
    check_field_offset(lv, s9359c2f0, ABISELECT(8,4), "S9359C2.s9359c2f0");
    check_field_offset(lv, s9359c2f1, ABISELECT(24,16), "S9359C2.s9359c2f1");
    check_field_offset(lv, s9359c2f2, ABISELECT(32,24), "S9359C2.s9359c2f2");
    test_class_info(&lv, &cd_S9359C2);
    dp->~S9359C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9359C2(Test_S9359C2, "S9359C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9359C2C1Ev();
extern void _ZN7S9359C2D1Ev();
Name_Map name_map_S9359C2[] = {
  NSPAIR(_ZN7S9359C2C1Ev),
  NSPAIR(_ZN7S9359C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9359C2[];
extern void _ZN7S9359C2D1Ev();
extern void _ZN7S9359C2D0Ev();
extern void _ZN7S9359C22v3Ev();
extern void _ZN7S9359C22v4Ev();
extern void _ZN7S9359C22v5Ev();
static  VTBL_ENTRY vtc_S9359C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9359C2[0]),
  (VTBL_ENTRY)&_ZN7S9359C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9359C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9359C2[];
extern  VTBL_ENTRY _ZTV7S9359C2[];
Class_Descriptor cd_S9359C2 = {  "S9359C2", // class name
  0,0,//no base classes
  &(vtc_S9359C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9359C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9359C2),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  S9359C5_nt  {
  __tsi64 s9359c5f0;
  int s9359c5f1[2];
};
//SIG(-1 S9359C5_nt) C1{ FL Fi[2]}



//skip512 S9359C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9359C1  : S9359C2 {
  void *s9359c1f0;
  ::S9359C5_nt s9359c1f1;
  void *s9359c1f2;
  virtual  ~S9359C1(); // _ZN7S9359C1D1Ev
  virtual void  v1(); // _ZN7S9359C12v1Ev
  virtual void  v2(); // _ZN7S9359C12v2Ev
  S9359C1(); // tgen
};
//SIG(1 S9359C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp FC5{ FL Fi[2]} Fp}


 S9359C1 ::~S9359C1(){ note_dtor("S9359C1", this);}
void  S9359C1 ::v1(){vfunc_called(this, "_ZN7S9359C12v1Ev");}
void  S9359C1 ::v2(){vfunc_called(this, "_ZN7S9359C12v2Ev");}
S9359C1 ::S9359C1(){ note_ctor("S9359C1", this);} // tgen

static void Test_S9359C1()
{
  extern Class_Descriptor cd_S9359C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S9359C1, buf);
    S9359C1 *dp, &lv = *(dp=new (buf) S9359C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S9359C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9359C1)");
    check_base_class_offset(lv, (S9359C2*), 0, "S9359C1");
    check_field_offset(lv, s9359c1f0, ABISELECT(40,28), "S9359C1.s9359c1f0");
    check_field_offset(lv, s9359c1f1, ABISELECT(48,32), "S9359C1.s9359c1f1");
    check_field_offset(lv, s9359c1f2, ABISELECT(64,48), "S9359C1.s9359c1f2");
    test_class_info(&lv, &cd_S9359C1);
    dp->~S9359C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9359C1(Test_S9359C1, "S9359C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S9359C1C1Ev();
extern void _ZN7S9359C1D1Ev();
Name_Map name_map_S9359C1[] = {
  NSPAIR(_ZN7S9359C1C1Ev),
  NSPAIR(_ZN7S9359C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9359C2;
extern VTBL_ENTRY _ZTI7S9359C2[];
extern  VTBL_ENTRY _ZTV7S9359C2[];
static Base_Class bases_S9359C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9359C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9359C1[];
extern void _ZN7S9359C1D1Ev();
extern void _ZN7S9359C1D0Ev();
extern void _ZN7S9359C22v3Ev();
extern void _ZN7S9359C22v4Ev();
extern void _ZN7S9359C22v5Ev();
extern void _ZN7S9359C12v1Ev();
extern void _ZN7S9359C12v2Ev();
static  VTBL_ENTRY vtc_S9359C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9359C1[0]),
  (VTBL_ENTRY)&_ZN7S9359C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9359C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9359C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9359C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9359C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9359C1[];
extern  VTBL_ENTRY _ZTV7S9359C1[];
Class_Descriptor cd_S9359C1 = {  "S9359C1", // class name
  bases_S9359C1, 1,
  &(vtc_S9359C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S9359C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9359C1),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  S9301C2  {
  ::S2014C20_nt s9301c2f0;
  int s9301c2f1[2];
  char s9301c2f2;
  virtual  ~S9301C2(); // _ZN7S9301C2D1Ev
  virtual void  v3(); // _ZN7S9301C22v3Ev
  virtual void  v4(); // _ZN7S9301C22v4Ev
  virtual void  v5(); // _ZN7S9301C22v5Ev
  S9301C2(); // tgen
};
//SIG(-1 S9301C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9301C2 ::~S9301C2(){ note_dtor("S9301C2", this);}
void  S9301C2 ::v3(){vfunc_called(this, "_ZN7S9301C22v3Ev");}
void  S9301C2 ::v4(){vfunc_called(this, "_ZN7S9301C22v4Ev");}
void  S9301C2 ::v5(){vfunc_called(this, "_ZN7S9301C22v5Ev");}
S9301C2 ::S9301C2(){ note_ctor("S9301C2", this);} // tgen

static void Test_S9301C2()
{
  extern Class_Descriptor cd_S9301C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9301C2, buf);
    S9301C2 *dp, &lv = *(dp=new (buf) S9301C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9301C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9301C2)");
    check_field_offset(lv, s9301c2f0, ABISELECT(8,4), "S9301C2.s9301c2f0");
    check_field_offset(lv, s9301c2f1, ABISELECT(24,16), "S9301C2.s9301c2f1");
    check_field_offset(lv, s9301c2f2, ABISELECT(32,24), "S9301C2.s9301c2f2");
    test_class_info(&lv, &cd_S9301C2);
    dp->~S9301C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9301C2(Test_S9301C2, "S9301C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9301C2C1Ev();
extern void _ZN7S9301C2D1Ev();
Name_Map name_map_S9301C2[] = {
  NSPAIR(_ZN7S9301C2C1Ev),
  NSPAIR(_ZN7S9301C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9301C2[];
extern void _ZN7S9301C2D1Ev();
extern void _ZN7S9301C2D0Ev();
extern void _ZN7S9301C22v3Ev();
extern void _ZN7S9301C22v4Ev();
extern void _ZN7S9301C22v5Ev();
static  VTBL_ENTRY vtc_S9301C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9301C2[0]),
  (VTBL_ENTRY)&_ZN7S9301C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9301C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9301C2[];
extern  VTBL_ENTRY _ZTV7S9301C2[];
Class_Descriptor cd_S9301C2 = {  "S9301C2", // class name
  0,0,//no base classes
  &(vtc_S9301C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9301C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9301C2),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  S9301C1  : S9301C2 {
  ::S3639C14_nt s9301c1f0;
  int s9301c1f1[3];
  virtual  ~S9301C1(); // _ZN7S9301C1D1Ev
  virtual void  v1(); // _ZN7S9301C12v1Ev
  virtual void  v2(); // _ZN7S9301C12v2Ev
  S9301C1(); // tgen
};
//SIG(1 S9301C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fp[2]} Fi[3]}


 S9301C1 ::~S9301C1(){ note_dtor("S9301C1", this);}
void  S9301C1 ::v1(){vfunc_called(this, "_ZN7S9301C12v1Ev");}
void  S9301C1 ::v2(){vfunc_called(this, "_ZN7S9301C12v2Ev");}
S9301C1 ::S9301C1(){ note_ctor("S9301C1", this);} // tgen

static void Test_S9301C1()
{
  extern Class_Descriptor cd_S9301C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9301C1, buf);
    S9301C1 *dp, &lv = *(dp=new (buf) S9301C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9301C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9301C1)");
    check_base_class_offset(lv, (S9301C2*), 0, "S9301C1");
    check_field_offset(lv, s9301c1f0, ABISELECT(40,28), "S9301C1.s9301c1f0");
    check_field_offset(lv, s9301c1f1, ABISELECT(56,36), "S9301C1.s9301c1f1");
    test_class_info(&lv, &cd_S9301C1);
    dp->~S9301C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9301C1(Test_S9301C1, "S9301C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9301C1C1Ev();
extern void _ZN7S9301C1D1Ev();
Name_Map name_map_S9301C1[] = {
  NSPAIR(_ZN7S9301C1C1Ev),
  NSPAIR(_ZN7S9301C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9301C2;
extern VTBL_ENTRY _ZTI7S9301C2[];
extern  VTBL_ENTRY _ZTV7S9301C2[];
static Base_Class bases_S9301C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9301C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9301C1[];
extern void _ZN7S9301C1D1Ev();
extern void _ZN7S9301C1D0Ev();
extern void _ZN7S9301C22v3Ev();
extern void _ZN7S9301C22v4Ev();
extern void _ZN7S9301C22v5Ev();
extern void _ZN7S9301C12v1Ev();
extern void _ZN7S9301C12v2Ev();
static  VTBL_ENTRY vtc_S9301C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9301C1[0]),
  (VTBL_ENTRY)&_ZN7S9301C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9301C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9301C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9301C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9301C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9301C1[];
extern  VTBL_ENTRY _ZTV7S9301C1[];
Class_Descriptor cd_S9301C1 = {  "S9301C1", // class name
  bases_S9301C1, 1,
  &(vtc_S9301C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9301C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9301C1),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  S6986C2  {
  char s6986c2f0;
  void *s6986c2f1;
  virtual void  v6(); // _ZN7S6986C22v6Ev
  virtual void  v7(); // _ZN7S6986C22v7Ev
  ~S6986C2(); // tgen
  S6986C2(); // tgen
};
//SIG(-1 S6986C2) C1{ v1 v2 Fc Fp}


void  S6986C2 ::v6(){vfunc_called(this, "_ZN7S6986C22v6Ev");}
void  S6986C2 ::v7(){vfunc_called(this, "_ZN7S6986C22v7Ev");}
S6986C2 ::~S6986C2(){ note_dtor("S6986C2", this);} // tgen
S6986C2 ::S6986C2(){ note_ctor("S6986C2", this);} // tgen

static void Test_S6986C2()
{
  extern Class_Descriptor cd_S6986C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6986C2, buf);
    S6986C2 *dp, &lv = *(dp=new (buf) S6986C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6986C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6986C2)");
    check_field_offset(lv, s6986c2f0, ABISELECT(8,4), "S6986C2.s6986c2f0");
    check_field_offset(lv, s6986c2f1, ABISELECT(16,8), "S6986C2.s6986c2f1");
    test_class_info(&lv, &cd_S6986C2);
    dp->~S6986C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6986C2(Test_S6986C2, "S6986C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6986C2C1Ev();
extern void _ZN7S6986C2D1Ev();
Name_Map name_map_S6986C2[] = {
  NSPAIR(_ZN7S6986C2C1Ev),
  NSPAIR(_ZN7S6986C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6986C2[];
extern void _ZN7S6986C22v6Ev();
extern void _ZN7S6986C22v7Ev();
static  VTBL_ENTRY vtc_S6986C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6986C2[0]),
  (VTBL_ENTRY)&_ZN7S6986C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6986C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S6986C2[];
extern  VTBL_ENTRY _ZTV7S6986C2[];
Class_Descriptor cd_S6986C2 = {  "S6986C2", // class name
  0,0,//no base classes
  &(vtc_S6986C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6986C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6986C2),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  S6986C3  {
  char s6986c3f0;
  virtual void  v8(); // _ZN7S6986C32v8Ev
  virtual void  v9(); // _ZN7S6986C32v9Ev
  virtual void  v10(); // _ZN7S6986C33v10Ev
  virtual void  v11(); // _ZN7S6986C33v11Ev
  virtual void  v12(); // _ZN7S6986C33v12Ev
  virtual void  v13(); // _ZN7S6986C33v13Ev
  ~S6986C3(); // tgen
  S6986C3(); // tgen
};
//SIG(-1 S6986C3) C1{ v1 v2 v3 v4 v5 v6 Fc}


void  S6986C3 ::v8(){vfunc_called(this, "_ZN7S6986C32v8Ev");}
void  S6986C3 ::v9(){vfunc_called(this, "_ZN7S6986C32v9Ev");}
void  S6986C3 ::v10(){vfunc_called(this, "_ZN7S6986C33v10Ev");}
void  S6986C3 ::v11(){vfunc_called(this, "_ZN7S6986C33v11Ev");}
void  S6986C3 ::v12(){vfunc_called(this, "_ZN7S6986C33v12Ev");}
void  S6986C3 ::v13(){vfunc_called(this, "_ZN7S6986C33v13Ev");}
S6986C3 ::~S6986C3(){ note_dtor("S6986C3", this);} // tgen
S6986C3 ::S6986C3(){ note_ctor("S6986C3", this);} // tgen

static void Test_S6986C3()
{
  extern Class_Descriptor cd_S6986C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6986C3, buf);
    S6986C3 *dp, &lv = *(dp=new (buf) S6986C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6986C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6986C3)");
    check_field_offset(lv, s6986c3f0, ABISELECT(8,4), "S6986C3.s6986c3f0");
    test_class_info(&lv, &cd_S6986C3);
    dp->~S6986C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6986C3(Test_S6986C3, "S6986C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6986C3C1Ev();
extern void _ZN7S6986C3D1Ev();
Name_Map name_map_S6986C3[] = {
  NSPAIR(_ZN7S6986C3C1Ev),
  NSPAIR(_ZN7S6986C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6986C3[];
extern void _ZN7S6986C32v8Ev();
extern void _ZN7S6986C32v9Ev();
extern void _ZN7S6986C33v10Ev();
extern void _ZN7S6986C33v11Ev();
extern void _ZN7S6986C33v12Ev();
extern void _ZN7S6986C33v13Ev();
static  VTBL_ENTRY vtc_S6986C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6986C3[0]),
  (VTBL_ENTRY)&_ZN7S6986C32v8Ev,
  (VTBL_ENTRY)&_ZN7S6986C32v9Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v10Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v13Ev,
};
extern VTBL_ENTRY _ZTI7S6986C3[];
extern  VTBL_ENTRY _ZTV7S6986C3[];
Class_Descriptor cd_S6986C3 = {  "S6986C3", // class name
  0,0,//no base classes
  &(vtc_S6986C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6986C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6986C3),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  S6986C1  : S6986C2 , virtual S6986C3 {
  __tsi64 s6986c1f0;
  void *s6986c1f1;
  __tsi64 s6986c1f2;
  virtual void  v1(); // _ZN7S6986C12v1Ev
  virtual void  v2(); // _ZN7S6986C12v2Ev
  virtual void  v3(); // _ZN7S6986C12v3Ev
  virtual void  v4(); // _ZN7S6986C12v4Ev
  virtual void  v5(); // _ZN7S6986C12v5Ev
  ~S6986C1(); // tgen
  S6986C1(); // tgen
};
//SIG(1 S6986C1) C1{ BC2{ v6 v7 Fc Fp} VBC3{ v8 v9 v10 v11 v12 v13 Fc} v1 v2 v3 v4 v5 FL Fp FL}


void  S6986C1 ::v1(){vfunc_called(this, "_ZN7S6986C12v1Ev");}
void  S6986C1 ::v2(){vfunc_called(this, "_ZN7S6986C12v2Ev");}
void  S6986C1 ::v3(){vfunc_called(this, "_ZN7S6986C12v3Ev");}
void  S6986C1 ::v4(){vfunc_called(this, "_ZN7S6986C12v4Ev");}
void  S6986C1 ::v5(){vfunc_called(this, "_ZN7S6986C12v5Ev");}
S6986C1 ::~S6986C1(){ note_dtor("S6986C1", this);} // tgen
S6986C1 ::S6986C1(){ note_ctor("S6986C1", this);} // tgen

static void Test_S6986C1()
{
  extern Class_Descriptor cd_S6986C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S6986C1, buf);
    S6986C1 *dp, &lv = *(dp=new (buf) S6986C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S6986C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6986C1)");
    check_base_class_offset(lv, (S6986C2*), 0, "S6986C1");
    check_base_class_offset(lv, (S6986C3*), ABISELECT(48,32), "S6986C1");
    check_field_offset(lv, s6986c1f0, ABISELECT(24,12), "S6986C1.s6986c1f0");
    check_field_offset(lv, s6986c1f1, ABISELECT(32,20), "S6986C1.s6986c1f1");
    check_field_offset(lv, s6986c1f2, ABISELECT(40,24), "S6986C1.s6986c1f2");
    test_class_info(&lv, &cd_S6986C1);
    dp->~S6986C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6986C1(Test_S6986C1, "S6986C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S6986C1C1Ev();
extern void _ZN7S6986C1D1Ev();
Name_Map name_map_S6986C1[] = {
  NSPAIR(_ZN7S6986C1C1Ev),
  NSPAIR(_ZN7S6986C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6986C2;
extern VTBL_ENTRY _ZTI7S6986C2[];
extern  VTBL_ENTRY _ZTV7S6986C2[];
extern Class_Descriptor cd_S6986C3;
extern VTBL_ENTRY _ZTI7S6986C3[];
extern  VTBL_ENTRY _ZTV7S6986C3[];
static Base_Class bases_S6986C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6986C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6986C3,    ABISELECT(48,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //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 _ZTI7S6986C1[];
extern void _ZN7S6986C22v6Ev();
extern void _ZN7S6986C22v7Ev();
extern void _ZN7S6986C12v1Ev();
extern void _ZN7S6986C12v2Ev();
extern void _ZN7S6986C12v3Ev();
extern void _ZN7S6986C12v4Ev();
extern void _ZN7S6986C12v5Ev();
extern void _ZN7S6986C32v8Ev();
extern void _ZN7S6986C32v9Ev();
extern void _ZN7S6986C33v10Ev();
extern void _ZN7S6986C33v11Ev();
extern void _ZN7S6986C33v12Ev();
extern void _ZN7S6986C33v13Ev();
static  VTBL_ENTRY vtc_S6986C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6986C1[0]),
  (VTBL_ENTRY)&_ZN7S6986C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6986C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6986C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6986C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6986C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6986C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6986C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6986C1[0]),
  (VTBL_ENTRY)&_ZN7S6986C32v8Ev,
  (VTBL_ENTRY)&_ZN7S6986C32v9Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v10Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6986C33v13Ev,
};
extern VTBL_ENTRY _ZTV7S6986C1[];
static  VTT_ENTRY vtt_S6986C1[] = {
  {&(_ZTV7S6986C1[3]),  3,24},
  {&(_ZTV7S6986C1[18]),  18,24},
};
extern VTBL_ENTRY _ZTI7S6986C1[];
extern  VTBL_ENTRY _ZTV7S6986C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6986C1[];
Class_Descriptor cd_S6986C1 = {  "S6986C1", // class name
  bases_S6986C1, 2,
  &(vtc_S6986C1[0]), // expected_vtbl_contents
  &(vtt_S6986C1[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S6986C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6986C1),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6986C1),2, //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  S18146C2  {
  int s18146c2f0[2];
  ::S2014C20_nt s18146c2f1;
  int s18146c2f2;
  ::S5514C4_nt s18146c2f3;
};
//SIG(-1 S18146C2) C1{ Fi[2] FC2{ m Fp Fi FC3{ m}} Fi FC4{ FC5{ Fc[20]} Fc[16]}}



static void Test_S18146C2()
{
  {
    init_simple_test("S18146C2");
    S18146C2 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S18146C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18146C2)");
    check_field_offset(lv, s18146c2f0, 0, "S18146C2.s18146c2f0");
    check_field_offset(lv, s18146c2f1, 8, "S18146C2.s18146c2f1");
    check_field_offset(lv, s18146c2f2, ABISELECT(24,20), "S18146C2.s18146c2f2");
    check_field_offset(lv, s18146c2f3, ABISELECT(28,24), "S18146C2.s18146c2f3");
  }
}
static Arrange_To_Call_Me vS18146C2(Test_S18146C2, "S18146C2", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18146C1  {
  void *s18146c1f0[3];
  ::S18146C2 s18146c1f1;
  int s18146c1f2;
  void *s18146c1f3;
  void  mf18146c1(); // _ZN8S18146C19mf18146c1Ev
};
//SIG(1 S18146C1) C1{ m Fp[3] FC2{ Fi[2] FC3{ m Fp Fi FC4{ m}} Fi FC5{ FC6{ Fc[20]} Fc[16]}} Fi Fp}


void  S18146C1 ::mf18146c1(){}

static void Test_S18146C1()
{
  {
    init_simple_test("S18146C1");
    S18146C1 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S18146C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18146C1)");
    check_field_offset(lv, s18146c1f0, 0, "S18146C1.s18146c1f0");
    check_field_offset(lv, s18146c1f1, ABISELECT(24,12), "S18146C1.s18146c1f1");
    check_field_offset(lv, s18146c1f2, ABISELECT(88,72), "S18146C1.s18146c1f2");
    check_field_offset(lv, s18146c1f3, ABISELECT(96,76), "S18146C1.s18146c1f3");
  }
}
static Arrange_To_Call_Me vS18146C1(Test_S18146C1, "S18146C1", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13108C4  {
  int s13108c4f0[65];
};
//SIG(-1 S13108C4) C1{ Fi[65]}



static void Test_S13108C4()
{
  {
    init_simple_test("S13108C4");
    S13108C4 lv;
    check2(sizeof(lv), 260, "sizeof(S13108C4)");
    check2(__alignof__(lv), 4, "__alignof__(S13108C4)");
    check_field_offset(lv, s13108c4f0, 0, "S13108C4.s13108c4f0");
  }
}
static Arrange_To_Call_Me vS13108C4(Test_S13108C4, "S13108C4", 260);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13108C3  {
  ::S13108C4 s13108c3f0;
  ::S13108C4 s13108c3f1;
};
//SIG(-1 S13108C3) C1{ FC2{ Fi[65]} FC2}



static void Test_S13108C3()
{
  {
    init_simple_test("S13108C3");
    S13108C3 lv;
    check2(sizeof(lv), 520, "sizeof(S13108C3)");
    check2(__alignof__(lv), 4, "__alignof__(S13108C3)");
    check_field_offset(lv, s13108c3f0, 0, "S13108C3.s13108c3f0");
    check_field_offset(lv, s13108c3f1, 260, "S13108C3.s13108c3f1");
  }
}
static Arrange_To_Call_Me vS13108C3(Test_S13108C3, "S13108C3", 520);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13108C2  {
  int s13108c2f0[8];
  short s13108c2f1[85];
  ::S13108C3 s13108c2f2;
  char s13108c2f3[256];
};
//SIG(-1 S13108C2) C1{ Fi[8] Fs[85] FC2{ FC3{ Fi[65]} FC3} Fc[256]}



static void Test_S13108C2()
{
  {
    init_simple_test("S13108C2");
    S13108C2 lv;
    check2(sizeof(lv), 980, "sizeof(S13108C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13108C2)");
    check_field_offset(lv, s13108c2f0, 0, "S13108C2.s13108c2f0");
    check_field_offset(lv, s13108c2f1, 32, "S13108C2.s13108c2f1");
    check_field_offset(lv, s13108c2f2, 204, "S13108C2.s13108c2f2");
    check_field_offset(lv, s13108c2f3, 724, "S13108C2.s13108c2f3");
  }
}
static Arrange_To_Call_Me vS13108C2(Test_S13108C2, "S13108C2", 980);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13108C5  {
  ::S13108C3 s13108c5f0;
  char s13108c5f1[16];
};
//SIG(-1 S13108C5) C1{ FC2{ FC3{ Fi[65]} FC3} Fc[16]}



static void Test_S13108C5()
{
  {
    init_simple_test("S13108C5");
    S13108C5 lv;
    check2(sizeof(lv), 536, "sizeof(S13108C5)");
    check2(__alignof__(lv), 4, "__alignof__(S13108C5)");
    check_field_offset(lv, s13108c5f0, 0, "S13108C5.s13108c5f0");
    check_field_offset(lv, s13108c5f1, 520, "S13108C5.s13108c5f1");
  }
}
static Arrange_To_Call_Me vS13108C5(Test_S13108C5, "S13108C5", 536);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13108C1  {
  int s13108c1f0[2];
  ::S13108C2 s13108c1f1;
  ::S13108C5 s13108c1f2;
  void *s13108c1f3;
};
//SIG(1 S13108C1) C1{ Fi[2] FC2{ Fi[8] Fs[85] FC3{ FC4{ Fi[65]} FC4} Fc[256]} FC5{ FC3 Fc[16]} Fp}



static void Test_S13108C1()
{
  {
    init_simple_test("S13108C1");
    S13108C1 lv;
    check2(sizeof(lv), ABISELECT(1536,1528), "sizeof(S13108C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13108C1)");
    check_field_offset(lv, s13108c1f0, 0, "S13108C1.s13108c1f0");
    check_field_offset(lv, s13108c1f1, 8, "S13108C1.s13108c1f1");
    check_field_offset(lv, s13108c1f2, 988, "S13108C1.s13108c1f2");
    check_field_offset(lv, s13108c1f3, ABISELECT(1528,1524), "S13108C1.s13108c1f3");
  }
}
static Arrange_To_Call_Me vS13108C1(Test_S13108C1, "S13108C1", ABISELECT(1536,1528));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12376C4_nt  {
  char s12376c4f0[12];
};
//SIG(-1 S12376C4_nt) C1{ Fc[12]}



//skip512 S12376C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12376C1  {
  int s12376c1f0;
  ::S5514C4_nt s12376c1f1;
  ::S5514C4_nt s12376c1f2;
  int s12376c1f3;
  ::S12376C4_nt s12376c1f4;
  int s12376c1f5;
  long s12376c1f6;
  ::S5514C4_nt s12376c1f7;
  ::S5513C6_nt s12376c1f8;
  int s12376c1f9[2];
};
//SIG(1 S12376C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC2 Fi FC4{ Fc[12]} Fi Fl FC2 FC5{ Fl} Fi[2]}



static void Test_S12376C1()
{
  {
    init_simple_test("S12376C1");
    S12376C1 lv;
    check2(sizeof(lv), ABISELECT(160,148), "sizeof(S12376C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12376C1)");
    check_field_offset(lv, s12376c1f0, 0, "S12376C1.s12376c1f0");
    check_field_offset(lv, s12376c1f1, 4, "S12376C1.s12376c1f1");
    check_field_offset(lv, s12376c1f2, 40, "S12376C1.s12376c1f2");
    check_field_offset(lv, s12376c1f3, 76, "S12376C1.s12376c1f3");
    check_field_offset(lv, s12376c1f4, 80, "S12376C1.s12376c1f4");
    check_field_offset(lv, s12376c1f5, 92, "S12376C1.s12376c1f5");
    check_field_offset(lv, s12376c1f6, 96, "S12376C1.s12376c1f6");
    check_field_offset(lv, s12376c1f7, ABISELECT(104,100), "S12376C1.s12376c1f7");
    check_field_offset(lv, s12376c1f8, ABISELECT(144,136), "S12376C1.s12376c1f8");
    check_field_offset(lv, s12376c1f9, ABISELECT(152,140), "S12376C1.s12376c1f9");
  }
}
static Arrange_To_Call_Me vS12376C1(Test_S12376C1, "S12376C1", ABISELECT(160,148));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12392C1  {
  int s12392c1f0;
  ::S5514C4_nt s12392c1f1;
  ::S12376C4_nt s12392c1f2;
  int s12392c1f3[2];
  char s12392c1f4[4];
  long s12392c1f5;
  int s12392c1f6[2];
  char s12392c1f7[2048];
};
//SIG(1 S12392C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[2] Fc[4] Fl Fi[2] Fc[2048]}



static void Test_S12392C1()
{
  {
    init_simple_test("S12392C1");
    S12392C1 lv;
    check2(sizeof(lv), ABISELECT(2128,2124), "sizeof(S12392C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12392C1)");
    check_field_offset(lv, s12392c1f0, 0, "S12392C1.s12392c1f0");
    check_field_offset(lv, s12392c1f1, 4, "S12392C1.s12392c1f1");
    check_field_offset(lv, s12392c1f2, 40, "S12392C1.s12392c1f2");
    check_field_offset(lv, s12392c1f3, 52, "S12392C1.s12392c1f3");
    check_field_offset(lv, s12392c1f4, 60, "S12392C1.s12392c1f4");
    check_field_offset(lv, s12392c1f5, 64, "S12392C1.s12392c1f5");
    check_field_offset(lv, s12392c1f6, ABISELECT(72,68), "S12392C1.s12392c1f6");
    check_field_offset(lv, s12392c1f7, ABISELECT(80,76), "S12392C1.s12392c1f7");
  }
}
static Arrange_To_Call_Me vS12392C1(Test_S12392C1, "S12392C1", ABISELECT(2128,2124));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9258C2  {
  ::S2014C20_nt s9258c2f0;
  int s9258c2f1[2];
  char s9258c2f2;
  virtual  ~S9258C2(); // _ZN7S9258C2D1Ev
  virtual void  v3(); // _ZN7S9258C22v3Ev
  virtual void  v4(); // _ZN7S9258C22v4Ev
  virtual void  v5(); // _ZN7S9258C22v5Ev
  S9258C2(); // tgen
};
//SIG(-1 S9258C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9258C2 ::~S9258C2(){ note_dtor("S9258C2", this);}
void  S9258C2 ::v3(){vfunc_called(this, "_ZN7S9258C22v3Ev");}
void  S9258C2 ::v4(){vfunc_called(this, "_ZN7S9258C22v4Ev");}
void  S9258C2 ::v5(){vfunc_called(this, "_ZN7S9258C22v5Ev");}
S9258C2 ::S9258C2(){ note_ctor("S9258C2", this);} // tgen

static void Test_S9258C2()
{
  extern Class_Descriptor cd_S9258C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9258C2, buf);
    S9258C2 *dp, &lv = *(dp=new (buf) S9258C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9258C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9258C2)");
    check_field_offset(lv, s9258c2f0, ABISELECT(8,4), "S9258C2.s9258c2f0");
    check_field_offset(lv, s9258c2f1, ABISELECT(24,16), "S9258C2.s9258c2f1");
    check_field_offset(lv, s9258c2f2, ABISELECT(32,24), "S9258C2.s9258c2f2");
    test_class_info(&lv, &cd_S9258C2);
    dp->~S9258C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9258C2(Test_S9258C2, "S9258C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9258C2C1Ev();
extern void _ZN7S9258C2D1Ev();
Name_Map name_map_S9258C2[] = {
  NSPAIR(_ZN7S9258C2C1Ev),
  NSPAIR(_ZN7S9258C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9258C2[];
extern void _ZN7S9258C2D1Ev();
extern void _ZN7S9258C2D0Ev();
extern void _ZN7S9258C22v3Ev();
extern void _ZN7S9258C22v4Ev();
extern void _ZN7S9258C22v5Ev();
static  VTBL_ENTRY vtc_S9258C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9258C2[0]),
  (VTBL_ENTRY)&_ZN7S9258C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9258C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9258C2[];
extern  VTBL_ENTRY _ZTV7S9258C2[];
Class_Descriptor cd_S9258C2 = {  "S9258C2", // class name
  0,0,//no base classes
  &(vtc_S9258C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9258C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9258C2),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  S9258C1  : S9258C2 {
  char s9258c1f0[2];
  int s9258c1f1[2];
  virtual  ~S9258C1(); // _ZN7S9258C1D1Ev
  virtual void  v1(); // _ZN7S9258C12v1Ev
  virtual void  v2(); // _ZN7S9258C12v2Ev
  S9258C1(); // tgen
};
//SIG(1 S9258C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi[2]}


 S9258C1 ::~S9258C1(){ note_dtor("S9258C1", this);}
void  S9258C1 ::v1(){vfunc_called(this, "_ZN7S9258C12v1Ev");}
void  S9258C1 ::v2(){vfunc_called(this, "_ZN7S9258C12v2Ev");}
S9258C1 ::S9258C1(){ note_ctor("S9258C1", this);} // tgen

static void Test_S9258C1()
{
  extern Class_Descriptor cd_S9258C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9258C1, buf);
    S9258C1 *dp, &lv = *(dp=new (buf) S9258C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9258C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9258C1)");
    check_base_class_offset(lv, (S9258C2*), 0, "S9258C1");
    check_field_offset(lv, s9258c1f0, ABISELECT(33,25), "S9258C1.s9258c1f0");
    check_field_offset(lv, s9258c1f1, ABISELECT(36,28), "S9258C1.s9258c1f1");
    test_class_info(&lv, &cd_S9258C1);
    dp->~S9258C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9258C1(Test_S9258C1, "S9258C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9258C1C1Ev();
extern void _ZN7S9258C1D1Ev();
Name_Map name_map_S9258C1[] = {
  NSPAIR(_ZN7S9258C1C1Ev),
  NSPAIR(_ZN7S9258C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9258C2;
extern VTBL_ENTRY _ZTI7S9258C2[];
extern  VTBL_ENTRY _ZTV7S9258C2[];
static Base_Class bases_S9258C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9258C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9258C1[];
extern void _ZN7S9258C1D1Ev();
extern void _ZN7S9258C1D0Ev();
extern void _ZN7S9258C22v3Ev();
extern void _ZN7S9258C22v4Ev();
extern void _ZN7S9258C22v5Ev();
extern void _ZN7S9258C12v1Ev();
extern void _ZN7S9258C12v2Ev();
static  VTBL_ENTRY vtc_S9258C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9258C1[0]),
  (VTBL_ENTRY)&_ZN7S9258C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9258C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9258C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9258C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9258C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9258C1[];
extern  VTBL_ENTRY _ZTV7S9258C1[];
Class_Descriptor cd_S9258C1 = {  "S9258C1", // class name
  bases_S9258C1, 1,
  &(vtc_S9258C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9258C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9258C1),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  S13506C2_nt  {
  long s13506c2f0[4];
};
//SIG(-1 S13506C2_nt) C1{ Fl[4]}



//skip512 S13506C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13506C3_nt  {
  void *s13506c3f0;
  int s13506c3f1;
  void *s13506c3f2;
  int s13506c3f3;
};
//SIG(-1 S13506C3_nt) C1{ Fp Fi Fp Fi}



//skip512 S13506C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13506C1  {
  int s13506c1f0[4];
  void *s13506c1f1[3];
  int s13506c1f2[3];
  void *s13506c1f3[98];
  int s13506c1f4[4];
  ::S13506C2_nt s13506c1f5;
  ::S13506C3_nt s13506c1f6;
  void *s13506c1f7;
  int s13506c1f8;
};
//SIG(1 S13506C1) C1{ Fi[4] Fp[3] Fi[3] Fp[98] Fi[4] FC2{ Fl[4]} FC3{ Fp Fi Fp Fi} Fp Fi}



static void Test_S13506C1()
{
  {
    init_simple_test("S13506C1");
    S13506C1 lv;
    check2(sizeof(lv), ABISELECT(936,488), "sizeof(S13506C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13506C1)");
    check_field_offset(lv, s13506c1f0, 0, "S13506C1.s13506c1f0");
    check_field_offset(lv, s13506c1f1, 16, "S13506C1.s13506c1f1");
    check_field_offset(lv, s13506c1f2, ABISELECT(40,28), "S13506C1.s13506c1f2");
    check_field_offset(lv, s13506c1f3, ABISELECT(56,40), "S13506C1.s13506c1f3");
    check_field_offset(lv, s13506c1f4, ABISELECT(840,432), "S13506C1.s13506c1f4");
    check_field_offset(lv, s13506c1f5, ABISELECT(856,448), "S13506C1.s13506c1f5");
    check_field_offset(lv, s13506c1f6, ABISELECT(888,464), "S13506C1.s13506c1f6");
    check_field_offset(lv, s13506c1f7, ABISELECT(920,480), "S13506C1.s13506c1f7");
    check_field_offset(lv, s13506c1f8, ABISELECT(928,484), "S13506C1.s13506c1f8");
  }
}
static Arrange_To_Call_Me vS13506C1(Test_S13506C1, "S13506C1", ABISELECT(936,488));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15555C1  {
  ::S18146C2 s15555c1f0;
  void *s15555c1f1[2];
  void  mf15555c1(); // _ZN8S15555C19mf15555c1Ev
};
//SIG(1 S15555C1) C1{ m FC2{ Fi[2] FC3{ m Fp Fi FC4{ m}} Fi FC5{ FC6{ Fc[20]} Fc[16]}} Fp[2]}


void  S15555C1 ::mf15555c1(){}

static void Test_S15555C1()
{
  {
    init_simple_test("S15555C1");
    S15555C1 lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S15555C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15555C1)");
    check_field_offset(lv, s15555c1f0, 0, "S15555C1.s15555c1f0");
    check_field_offset(lv, s15555c1f1, ABISELECT(64,60), "S15555C1.s15555c1f1");
  }
}
static Arrange_To_Call_Me vS15555C1(Test_S15555C1, "S15555C1", ABISELECT(80,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18471C1  {
  char s18471c1f0;
  __tsi64 s18471c1f1;
  ::S19762C18_nt s18471c1f2;
  int s18471c1f3;
  ::S6388C4 s18471c1f4;
  int s18471c1f5;
  __tsi64 s18471c1f6[7];
  virtual void  v1(); // _ZN8S18471C12v1Ev
  ~S18471C1(); // tgen
  S18471C1(); // tgen
};
//SIG(1 S18471C1) C1{ v1 Fc FL FC2{} Fi FC3{ BC4{ v3 v4 Fc Fp[3] Fc:1 Fs:6} v2} Fi FL[7]}


void  S18471C1 ::v1(){vfunc_called(this, "_ZN8S18471C12v1Ev");}
S18471C1 ::~S18471C1(){ note_dtor("S18471C1", this);} // tgen
S18471C1 ::S18471C1(){ note_ctor("S18471C1", this);} // tgen

static void Test_S18471C1()
{
  extern Class_Descriptor cd_S18471C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S18471C1, buf);
    S18471C1 *dp, &lv = *(dp=new (buf) S18471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S18471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18471C1)");
    check_field_offset(lv, s18471c1f0, ABISELECT(8,4), "S18471C1.s18471c1f0");
    check_field_offset(lv, s18471c1f1, ABISELECT(16,8), "S18471C1.s18471c1f1");
    check_field_offset(lv, s18471c1f2, ABISELECT(24,16), "S18471C1.s18471c1f2");
    check_field_offset(lv, s18471c1f3, ABISELECT(28,20), "S18471C1.s18471c1f3");
    check_field_offset(lv, s18471c1f4, ABISELECT(32,24), "S18471C1.s18471c1f4");
    check_field_offset(lv, s18471c1f5, ABISELECT(80,48), "S18471C1.s18471c1f5");
    check_field_offset(lv, s18471c1f6, ABISELECT(88,52), "S18471C1.s18471c1f6");
    test_class_info(&lv, &cd_S18471C1);
    dp->~S18471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18471C1(Test_S18471C1, "S18471C1", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S18471C1C1Ev();
extern void _ZN8S18471C1D1Ev();
Name_Map name_map_S18471C1[] = {
  NSPAIR(_ZN8S18471C1C1Ev),
  NSPAIR(_ZN8S18471C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18471C1[];
extern void _ZN8S18471C12v1Ev();
static  VTBL_ENTRY vtc_S18471C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18471C1[0]),
  (VTBL_ENTRY)&_ZN8S18471C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18471C1[];
extern  VTBL_ENTRY _ZTV8S18471C1[];
Class_Descriptor cd_S18471C1 = {  "S18471C1", // class name
  0,0,//no base classes
  &(vtc_S18471C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S18471C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18471C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9173C2  {
  char s9173c2f0[32];
  ::S2014C26 s9173c2f1;
  virtual  ~S9173C2(); // _ZN7S9173C2D1Ev
  virtual void  v3(); // _ZN7S9173C22v3Ev
  virtual void  v4(); // _ZN7S9173C22v4Ev
  S9173C2(); // tgen
};
//SIG(-1 S9173C2) C1{ vd v1 v2 Fc[32] FC2{ m Fp Fi FC3{ m} FC4{ m}}}


 S9173C2 ::~S9173C2(){ note_dtor("S9173C2", this);}
void  S9173C2 ::v3(){vfunc_called(this, "_ZN7S9173C22v3Ev");}
void  S9173C2 ::v4(){vfunc_called(this, "_ZN7S9173C22v4Ev");}
S9173C2 ::S9173C2(){ note_ctor("S9173C2", this);} // tgen

static void Test_S9173C2()
{
  extern Class_Descriptor cd_S9173C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S9173C2, buf);
    S9173C2 *dp, &lv = *(dp=new (buf) S9173C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S9173C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9173C2)");
    check_field_offset(lv, s9173c2f0, ABISELECT(8,4), "S9173C2.s9173c2f0");
    check_field_offset(lv, s9173c2f1, ABISELECT(40,36), "S9173C2.s9173c2f1");
    test_class_info(&lv, &cd_S9173C2);
    dp->~S9173C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9173C2(Test_S9173C2, "S9173C2", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN7S9173C2C1Ev();
extern void _ZN7S9173C2D1Ev();
Name_Map name_map_S9173C2[] = {
  NSPAIR(_ZN7S9173C2C1Ev),
  NSPAIR(_ZN7S9173C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9173C2[];
extern void _ZN7S9173C2D1Ev();
extern void _ZN7S9173C2D0Ev();
extern void _ZN7S9173C22v3Ev();
extern void _ZN7S9173C22v4Ev();
static  VTBL_ENTRY vtc_S9173C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9173C2[0]),
  (VTBL_ENTRY)&_ZN7S9173C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9173C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9173C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9173C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9173C2[];
extern  VTBL_ENTRY _ZTV7S9173C2[];
Class_Descriptor cd_S9173C2 = {  "S9173C2", // class name
  0,0,//no base classes
  &(vtc_S9173C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI7S9173C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9173C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9173C1  : S9173C2 , S19169C11_nt {
  virtual void  v1(); // _ZN7S9173C12v1Ev
  virtual void  v2(); // _ZN7S9173C12v2Ev
  ~S9173C1(); // tgen
  S9173C1(); // tgen
};
//SIG(1 S9173C1) C1{ BC2{ vd v3 v4 Fc[32] FC3{ m Fp Fi FC4{ m} FC5{ m}}} BC6{ vd m} v1 v2}


void  S9173C1 ::v1(){vfunc_called(this, "_ZN7S9173C12v1Ev");}
void  S9173C1 ::v2(){vfunc_called(this, "_ZN7S9173C12v2Ev");}
S9173C1 ::~S9173C1(){ note_dtor("S9173C1", this);} // tgen
S9173C1 ::S9173C1(){ note_ctor("S9173C1", this);} // tgen

static void Test_S9173C1()
{
  extern Class_Descriptor cd_S9173C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,14)];
    init_test(&cd_S9173C1, buf);
    S9173C1 *dp, &lv = *(dp=new (buf) S9173C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S9173C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9173C1)");
    check_base_class_offset(lv, (S9173C2*), 0, "S9173C1");
    check_base_class_offset(lv, (S19169C11_nt*), ABISELECT(56,48), "S9173C1");
    test_class_info(&lv, &cd_S9173C1);
    dp->~S9173C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9173C1(Test_S9173C1, "S9173C1", ABISELECT(64,52));

#else // __cplusplus

extern void _ZN7S9173C1C1Ev();
extern void _ZN7S9173C1D1Ev();
Name_Map name_map_S9173C1[] = {
  NSPAIR(_ZN7S9173C1C1Ev),
  NSPAIR(_ZN7S9173C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9173C2;
extern VTBL_ENTRY _ZTI7S9173C2[];
extern  VTBL_ENTRY _ZTV7S9173C2[];
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
static Base_Class bases_S9173C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9173C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19169C11_nt,    ABISELECT(56,48), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9173C1[];
extern void _ZN7S9173C1D1Ev();
extern void _ZN7S9173C1D0Ev();
extern void _ZN7S9173C22v3Ev();
extern void _ZN7S9173C22v4Ev();
extern void _ZN7S9173C12v1Ev();
extern void _ZN7S9173C12v2Ev();
extern void ABISELECT(_ZThn56_N7S9173C1D1Ev,_ZThn48_N7S9173C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S9173C1D0Ev,_ZThn48_N7S9173C1D0Ev)();
static  VTBL_ENTRY vtc_S9173C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9173C1[0]),
  (VTBL_ENTRY)&_ZN7S9173C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9173C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9173C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9173C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9173C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9173C12v2Ev,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S9173C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S9173C1D1Ev,_ZThn48_N7S9173C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S9173C1D0Ev,_ZThn48_N7S9173C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S9173C1[];
extern  VTBL_ENTRY _ZTV7S9173C1[];
Class_Descriptor cd_S9173C1 = {  "S9173C1", // class name
  bases_S9173C1, 2,
  &(vtc_S9173C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,52), // object size
  NSPAIRA(_ZTI7S9173C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9173C1),12, //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  S9330C2  {
  ::S2014C20_nt s9330c2f0;
  int s9330c2f1[2];
  char s9330c2f2;
  virtual  ~S9330C2(); // _ZN7S9330C2D1Ev
  virtual void  v3(); // _ZN7S9330C22v3Ev
  virtual void  v4(); // _ZN7S9330C22v4Ev
  virtual void  v5(); // _ZN7S9330C22v5Ev
  S9330C2(); // tgen
};
//SIG(-1 S9330C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9330C2 ::~S9330C2(){ note_dtor("S9330C2", this);}
void  S9330C2 ::v3(){vfunc_called(this, "_ZN7S9330C22v3Ev");}
void  S9330C2 ::v4(){vfunc_called(this, "_ZN7S9330C22v4Ev");}
void  S9330C2 ::v5(){vfunc_called(this, "_ZN7S9330C22v5Ev");}
S9330C2 ::S9330C2(){ note_ctor("S9330C2", this);} // tgen

static void Test_S9330C2()
{
  extern Class_Descriptor cd_S9330C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9330C2, buf);
    S9330C2 *dp, &lv = *(dp=new (buf) S9330C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9330C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9330C2)");
    check_field_offset(lv, s9330c2f0, ABISELECT(8,4), "S9330C2.s9330c2f0");
    check_field_offset(lv, s9330c2f1, ABISELECT(24,16), "S9330C2.s9330c2f1");
    check_field_offset(lv, s9330c2f2, ABISELECT(32,24), "S9330C2.s9330c2f2");
    test_class_info(&lv, &cd_S9330C2);
    dp->~S9330C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9330C2(Test_S9330C2, "S9330C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9330C2C1Ev();
extern void _ZN7S9330C2D1Ev();
Name_Map name_map_S9330C2[] = {
  NSPAIR(_ZN7S9330C2C1Ev),
  NSPAIR(_ZN7S9330C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9330C2[];
extern void _ZN7S9330C2D1Ev();
extern void _ZN7S9330C2D0Ev();
extern void _ZN7S9330C22v3Ev();
extern void _ZN7S9330C22v4Ev();
extern void _ZN7S9330C22v5Ev();
static  VTBL_ENTRY vtc_S9330C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9330C2[0]),
  (VTBL_ENTRY)&_ZN7S9330C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9330C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9330C2[];
extern  VTBL_ENTRY _ZTV7S9330C2[];
Class_Descriptor cd_S9330C2 = {  "S9330C2", // class name
  0,0,//no base classes
  &(vtc_S9330C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9330C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9330C2),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  S9330C1  : S9330C2 {
  int s9330c1f0;
  void *s9330c1f1;
  virtual  ~S9330C1(); // _ZN7S9330C1D1Ev
  virtual void  v1(); // _ZN7S9330C12v1Ev
  virtual void  v2(); // _ZN7S9330C12v2Ev
  S9330C1(); // tgen
};
//SIG(1 S9330C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi Fp}


 S9330C1 ::~S9330C1(){ note_dtor("S9330C1", this);}
void  S9330C1 ::v1(){vfunc_called(this, "_ZN7S9330C12v1Ev");}
void  S9330C1 ::v2(){vfunc_called(this, "_ZN7S9330C12v2Ev");}
S9330C1 ::S9330C1(){ note_ctor("S9330C1", this);} // tgen

static void Test_S9330C1()
{
  extern Class_Descriptor cd_S9330C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9330C1, buf);
    S9330C1 *dp, &lv = *(dp=new (buf) S9330C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9330C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9330C1)");
    check_base_class_offset(lv, (S9330C2*), 0, "S9330C1");
    check_field_offset(lv, s9330c1f0, ABISELECT(36,28), "S9330C1.s9330c1f0");
    check_field_offset(lv, s9330c1f1, ABISELECT(40,32), "S9330C1.s9330c1f1");
    test_class_info(&lv, &cd_S9330C1);
    dp->~S9330C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9330C1(Test_S9330C1, "S9330C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9330C1C1Ev();
extern void _ZN7S9330C1D1Ev();
Name_Map name_map_S9330C1[] = {
  NSPAIR(_ZN7S9330C1C1Ev),
  NSPAIR(_ZN7S9330C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9330C2;
extern VTBL_ENTRY _ZTI7S9330C2[];
extern  VTBL_ENTRY _ZTV7S9330C2[];
static Base_Class bases_S9330C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9330C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9330C1[];
extern void _ZN7S9330C1D1Ev();
extern void _ZN7S9330C1D0Ev();
extern void _ZN7S9330C22v3Ev();
extern void _ZN7S9330C22v4Ev();
extern void _ZN7S9330C22v5Ev();
extern void _ZN7S9330C12v1Ev();
extern void _ZN7S9330C12v2Ev();
static  VTBL_ENTRY vtc_S9330C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9330C1[0]),
  (VTBL_ENTRY)&_ZN7S9330C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9330C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9330C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9330C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9330C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9330C1[];
extern  VTBL_ENTRY _ZTV7S9330C1[];
Class_Descriptor cd_S9330C1 = {  "S9330C1", // class name
  bases_S9330C1, 1,
  &(vtc_S9330C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9330C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9330C1),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  S3531C4  {
  virtual void  v6(); // _ZN7S3531C42v6Ev
  ~S3531C4(); // tgen
  S3531C4(); // tgen
};
//SIG(-1 S3531C4) C1{ v1}


void  S3531C4 ::v6(){vfunc_called(this, "_ZN7S3531C42v6Ev");}
S3531C4 ::~S3531C4(){ note_dtor("S3531C4", this);} // tgen
S3531C4 ::S3531C4(){ note_ctor("S3531C4", this);} // tgen

static void Test_S3531C4()
{
  extern Class_Descriptor cd_S3531C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3531C4, buf);
    S3531C4 *dp, &lv = *(dp=new (buf) S3531C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3531C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3531C4)");
    test_class_info(&lv, &cd_S3531C4);
    dp->~S3531C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3531C4(Test_S3531C4, "S3531C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3531C4C1Ev();
extern void _ZN7S3531C4D1Ev();
Name_Map name_map_S3531C4[] = {
  NSPAIR(_ZN7S3531C4C1Ev),
  NSPAIR(_ZN7S3531C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3531C4[];
extern void _ZN7S3531C42v6Ev();
static  VTBL_ENTRY vtc_S3531C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C4[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S3531C4[];
extern  VTBL_ENTRY _ZTV7S3531C4[];
Class_Descriptor cd_S3531C4 = {  "S3531C4", // class name
  0,0,//no base classes
  &(vtc_S3531C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3531C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3531C4),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  S3531C3  : virtual S3531C4 {
  int s3531c3f0;
  void *s3531c3f1;
  virtual  ~S3531C3(); // _ZN7S3531C3D2Ev
  virtual void  v7(); // _ZN7S3531C32v7Ev
  virtual void  v8(); // _ZN7S3531C32v8Ev
  S3531C3(); // tgen
};
//SIG(-1 S3531C3) C1{ VBC2{ v3} vd v1 v2 Fi Fp}


 S3531C3 ::~S3531C3(){ note_dtor("S3531C3", this);}
void  S3531C3 ::v7(){vfunc_called(this, "_ZN7S3531C32v7Ev");}
void  S3531C3 ::v8(){vfunc_called(this, "_ZN7S3531C32v8Ev");}
S3531C3 ::S3531C3(){ note_ctor("S3531C3", this);} // tgen

static void Test_S3531C3()
{
  extern Class_Descriptor cd_S3531C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3531C3, buf);
    S3531C3 *dp, &lv = *(dp=new (buf) S3531C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3531C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3531C3)");
    check_base_class_offset(lv, (S3531C4*), 0, "S3531C3");
    check_field_offset(lv, s3531c3f0, ABISELECT(8,4), "S3531C3.s3531c3f0");
    check_field_offset(lv, s3531c3f1, ABISELECT(16,8), "S3531C3.s3531c3f1");
    test_class_info(&lv, &cd_S3531C3);
    dp->~S3531C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3531C3(Test_S3531C3, "S3531C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3531C3C1Ev();
extern void _ZN7S3531C3D2Ev();
Name_Map name_map_S3531C3[] = {
  NSPAIR(_ZN7S3531C3C1Ev),
  NSPAIR(_ZN7S3531C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3531C4;
extern VTBL_ENTRY _ZTI7S3531C4[];
extern  VTBL_ENTRY _ZTV7S3531C4[];
static Base_Class bases_S3531C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3531C4,    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 _ZTI7S3531C3[];
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C3D1Ev();
extern void _ZN7S3531C3D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
static  VTBL_ENTRY vtc_S3531C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C3[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S3531C3[];
static  VTT_ENTRY vtt_S3531C3[] = {
  {&(_ZTV7S3531C3[4]),  4,9},
  {&(_ZTV7S3531C3[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S3531C3[];
extern  VTBL_ENTRY _ZTV7S3531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C3[];
Class_Descriptor cd_S3531C3 = {  "S3531C3", // class name
  bases_S3531C3, 1,
  &(vtc_S3531C3[0]), // expected_vtbl_contents
  &(vtt_S3531C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3531C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3531C3),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3531C3),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  S3531C2  : S3531C3 {
  long double s3531c2f0[8];
  virtual void  v9(); // _ZN7S3531C22v9Ev
  virtual void  v10(); // _ZN7S3531C23v10Ev
  ~S3531C2(); // tgen
  S3531C2(); // tgen
};
//SIG(-1 S3531C2) C1{ BC2{ VBC3{ v3} vd v4 v5 Fi Fp} v1 v2 FD[8]}


void  S3531C2 ::v9(){vfunc_called(this, "_ZN7S3531C22v9Ev");}
void  S3531C2 ::v10(){vfunc_called(this, "_ZN7S3531C23v10Ev");}
S3531C2 ::~S3531C2(){ note_dtor("S3531C2", this);} // tgen
S3531C2 ::S3531C2(){ note_ctor("S3531C2", this);} // tgen

static void Test_S3531C2()
{
  extern Class_Descriptor cd_S3531C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3531C2, buf);
    S3531C2 *dp, &lv = *(dp=new (buf) S3531C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3531C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3531C2)");
    check_base_class_offset(lv, (S3531C4*)(S3531C3*), 0, "S3531C2");
    check_base_class_offset(lv, (S3531C3*), 0, "S3531C2");
    check_field_offset(lv, s3531c2f0, ABISELECT(32,12), "S3531C2.s3531c2f0");
    test_class_info(&lv, &cd_S3531C2);
    dp->~S3531C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3531C2(Test_S3531C2, "S3531C2", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S3531C2C1Ev();
extern void _ZN7S3531C2D1Ev();
Name_Map name_map_S3531C2[] = {
  NSPAIR(_ZN7S3531C2C1Ev),
  NSPAIR(_ZN7S3531C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3531C4;
extern VTBL_ENTRY _ZTI7S3531C4[];
extern  VTBL_ENTRY _ZTV7S3531C4[];
extern Class_Descriptor cd_S3531C3;
extern VTBL_ENTRY _ZTI7S3531C3[];
extern  VTBL_ENTRY _ZTV7S3531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C3[];
static Base_Class bases_S3531C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3531C4,    0, //bcp->offset
    -1, //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_S3531C3,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3531C2[];
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C2D1Ev();
extern void _ZN7S3531C2D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
extern void _ZN7S3531C22v9Ev();
extern void _ZN7S3531C23v10Ev();
static  VTBL_ENTRY vtc_S3531C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C2[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3531C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3531C23v10Ev,
};
extern VTBL_ENTRY _ZTV7S3531C2[];
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C3D1Ev();
extern void _ZN7S3531C3D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3531C3__7S3531C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C3[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
};
static  VTT_ENTRY vtt_S3531C2[] = {
  {&(_ZTV7S3531C2[4]),  4,11},
  {&(_tg__ZTV7S3531C3__7S3531C2[4]),  4,9},
  {&(_tg__ZTV7S3531C3__7S3531C2[4]),  4,9},
  {&(_ZTV7S3531C2[4]),  4,11},
};
extern VTBL_ENTRY _ZTI7S3531C2[];
extern  VTBL_ENTRY _ZTV7S3531C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C2[];
Class_Descriptor cd_S3531C2 = {  "S3531C2", // class name
  bases_S3531C2, 2,
  &(vtc_S3531C2[0]), // expected_vtbl_contents
  &(vtt_S3531C2[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S3531C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3531C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3531C2),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  S3531C1  : S3531C2 {
  virtual void  v1(); // _ZN7S3531C12v1Ev
  virtual void  v2(); // _ZN7S3531C12v2Ev
  virtual void  v3(); // _ZN7S3531C12v3Ev
  virtual void  v4(); // _ZN7S3531C12v4Ev
  virtual void  v5(); // _ZN7S3531C12v5Ev
  ~S3531C1(); // tgen
  S3531C1(); // tgen
};
//SIG(1 S3531C1) C1{ BC2{ BC3{ VBC4{ v6} vd v7 v8 Fi Fp} v9 v10 FD[8]} v1 v2 v3 v4 v5}


void  S3531C1 ::v1(){vfunc_called(this, "_ZN7S3531C12v1Ev");}
void  S3531C1 ::v2(){vfunc_called(this, "_ZN7S3531C12v2Ev");}
void  S3531C1 ::v3(){vfunc_called(this, "_ZN7S3531C12v3Ev");}
void  S3531C1 ::v4(){vfunc_called(this, "_ZN7S3531C12v4Ev");}
void  S3531C1 ::v5(){vfunc_called(this, "_ZN7S3531C12v5Ev");}
S3531C1 ::~S3531C1(){ note_dtor("S3531C1", this);} // tgen
S3531C1 ::S3531C1(){ note_ctor("S3531C1", this);} // tgen

static void Test_S3531C1()
{
  extern Class_Descriptor cd_S3531C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3531C1, buf);
    S3531C1 *dp, &lv = *(dp=new (buf) S3531C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3531C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3531C1)");
    check_base_class_offset(lv, (S3531C4*)(S3531C3*)(S3531C2*), 0, "S3531C1");
    check_base_class_offset(lv, (S3531C3*)(S3531C2*), 0, "S3531C1");
    check_base_class_offset(lv, (S3531C2*), 0, "S3531C1");
    test_class_info(&lv, &cd_S3531C1);
    dp->~S3531C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3531C1(Test_S3531C1, "S3531C1", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S3531C1C1Ev();
extern void _ZN7S3531C1D1Ev();
Name_Map name_map_S3531C1[] = {
  NSPAIR(_ZN7S3531C1C1Ev),
  NSPAIR(_ZN7S3531C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3531C4;
extern VTBL_ENTRY _ZTI7S3531C4[];
extern  VTBL_ENTRY _ZTV7S3531C4[];
extern Class_Descriptor cd_S3531C3;
extern VTBL_ENTRY _ZTI7S3531C3[];
extern  VTBL_ENTRY _ZTV7S3531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C3[];
extern Class_Descriptor cd_S3531C2;
extern VTBL_ENTRY _ZTI7S3531C2[];
extern  VTBL_ENTRY _ZTV7S3531C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C2[];
static Base_Class bases_S3531C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3531C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S3531C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3531C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3531C1[];
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C1D1Ev();
extern void _ZN7S3531C1D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
extern void _ZN7S3531C22v9Ev();
extern void _ZN7S3531C23v10Ev();
extern void _ZN7S3531C12v1Ev();
extern void _ZN7S3531C12v2Ev();
extern void _ZN7S3531C12v3Ev();
extern void _ZN7S3531C12v4Ev();
extern void _ZN7S3531C12v5Ev();
static  VTBL_ENTRY vtc_S3531C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C1[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3531C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3531C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3531C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3531C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3531C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3531C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3531C12v5Ev,
};
extern VTBL_ENTRY _ZTV7S3531C1[];
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C2D1Ev();
extern void _ZN7S3531C2D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
extern void _ZN7S3531C22v9Ev();
extern void _ZN7S3531C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3531C2__7S3531C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C2[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3531C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3531C23v10Ev,
};
extern void _ZN7S3531C42v6Ev();
extern void _ZN7S3531C3D1Ev();
extern void _ZN7S3531C3D0Ev();
extern void _ZN7S3531C32v7Ev();
extern void _ZN7S3531C32v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3531C37S3531C2__7S3531C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3531C3[0]),
  (VTBL_ENTRY)&_ZN7S3531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3531C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3531C32v8Ev,
};
static  VTT_ENTRY vtt_S3531C1[] = {
  {&(_ZTV7S3531C1[4]),  4,16},
  {&(_tg__ZTV7S3531C2__7S3531C1[4]),  4,11},
  {&(_tg__ZTV7S3531C37S3531C2__7S3531C1[4]),  4,9},
  {&(_tg__ZTV7S3531C37S3531C2__7S3531C1[4]),  4,9},
  {&(_tg__ZTV7S3531C2__7S3531C1[4]),  4,11},
  {&(_ZTV7S3531C1[4]),  4,16},
};
extern VTBL_ENTRY _ZTI7S3531C1[];
extern  VTBL_ENTRY _ZTV7S3531C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3531C1[];
Class_Descriptor cd_S3531C1 = {  "S3531C1", // class name
  bases_S3531C1, 3,
  &(vtc_S3531C1[0]), // expected_vtbl_contents
  &(vtt_S3531C1[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S3531C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3531C1),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3531C1),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  S19379C3  {
  void *s19379c3f0;
  virtual void  v6(); // _ZN8S19379C32v6Ev
  virtual void  v7(); // _ZN8S19379C32v7Ev
  virtual void  v8(); // _ZN8S19379C32v8Ev
  virtual void  v9(); // _ZN8S19379C32v9Ev
  ~S19379C3(); // tgen
  S19379C3(); // tgen
};
//SIG(-1 S19379C3) C1{ v1 v2 v3 v4 Fp}


void  S19379C3 ::v6(){vfunc_called(this, "_ZN8S19379C32v6Ev");}
void  S19379C3 ::v7(){vfunc_called(this, "_ZN8S19379C32v7Ev");}
void  S19379C3 ::v8(){vfunc_called(this, "_ZN8S19379C32v8Ev");}
void  S19379C3 ::v9(){vfunc_called(this, "_ZN8S19379C32v9Ev");}
S19379C3 ::~S19379C3(){ note_dtor("S19379C3", this);} // tgen
S19379C3 ::S19379C3(){ note_ctor("S19379C3", this);} // tgen

static void Test_S19379C3()
{
  extern Class_Descriptor cd_S19379C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19379C3, buf);
    S19379C3 *dp, &lv = *(dp=new (buf) S19379C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19379C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19379C3)");
    check_field_offset(lv, s19379c3f0, ABISELECT(8,4), "S19379C3.s19379c3f0");
    test_class_info(&lv, &cd_S19379C3);
    dp->~S19379C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19379C3(Test_S19379C3, "S19379C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19379C3C1Ev();
extern void _ZN8S19379C3D1Ev();
Name_Map name_map_S19379C3[] = {
  NSPAIR(_ZN8S19379C3C1Ev),
  NSPAIR(_ZN8S19379C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19379C3[];
extern void _ZN8S19379C32v6Ev();
extern void _ZN8S19379C32v7Ev();
extern void _ZN8S19379C32v8Ev();
extern void _ZN8S19379C32v9Ev();
static  VTBL_ENTRY vtc_S19379C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19379C3[0]),
  (VTBL_ENTRY)&_ZN8S19379C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v9Ev,
};
extern VTBL_ENTRY _ZTI8S19379C3[];
extern  VTBL_ENTRY _ZTV8S19379C3[];
Class_Descriptor cd_S19379C3 = {  "S19379C3", // class name
  0,0,//no base classes
  &(vtc_S19379C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19379C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19379C3),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  S19379C2  : S19379C3 {
  void *s19379c2f0;
  __tsi64 s19379c2f1;
  virtual void  v10(); // _ZN8S19379C23v10Ev
  virtual void  v11(); // _ZN8S19379C23v11Ev
  ~S19379C2(); // tgen
  S19379C2(); // tgen
};
//SIG(-1 S19379C2) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S19379C2 ::v10(){vfunc_called(this, "_ZN8S19379C23v10Ev");}
void  S19379C2 ::v11(){vfunc_called(this, "_ZN8S19379C23v11Ev");}
S19379C2 ::~S19379C2(){ note_dtor("S19379C2", this);} // tgen
S19379C2 ::S19379C2(){ note_ctor("S19379C2", this);} // tgen

static void Test_S19379C2()
{
  extern Class_Descriptor cd_S19379C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19379C2, buf);
    S19379C2 *dp, &lv = *(dp=new (buf) S19379C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19379C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19379C2)");
    check_base_class_offset(lv, (S19379C3*), 0, "S19379C2");
    check_field_offset(lv, s19379c2f0, ABISELECT(16,8), "S19379C2.s19379c2f0");
    check_field_offset(lv, s19379c2f1, ABISELECT(24,12), "S19379C2.s19379c2f1");
    test_class_info(&lv, &cd_S19379C2);
    dp->~S19379C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19379C2(Test_S19379C2, "S19379C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19379C2C1Ev();
extern void _ZN8S19379C2D1Ev();
Name_Map name_map_S19379C2[] = {
  NSPAIR(_ZN8S19379C2C1Ev),
  NSPAIR(_ZN8S19379C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19379C3;
extern VTBL_ENTRY _ZTI8S19379C3[];
extern  VTBL_ENTRY _ZTV8S19379C3[];
static Base_Class bases_S19379C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19379C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19379C2[];
extern void _ZN8S19379C32v6Ev();
extern void _ZN8S19379C32v7Ev();
extern void _ZN8S19379C32v8Ev();
extern void _ZN8S19379C32v9Ev();
extern void _ZN8S19379C23v10Ev();
extern void _ZN8S19379C23v11Ev();
static  VTBL_ENTRY vtc_S19379C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19379C2[0]),
  (VTBL_ENTRY)&_ZN8S19379C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19379C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19379C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S19379C2[];
extern  VTBL_ENTRY _ZTV8S19379C2[];
Class_Descriptor cd_S19379C2 = {  "S19379C2", // class name
  bases_S19379C2, 1,
  &(vtc_S19379C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19379C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19379C2),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  S19379C1  : virtual S19379C2 {
  short s19379c1f0;
  __tsi64 s19379c1f1;
  virtual void  v1(); // _ZN8S19379C12v1Ev
  virtual void  v2(); // _ZN8S19379C12v2Ev
  virtual void  v3(); // _ZN8S19379C12v3Ev
  virtual void  v4(); // _ZN8S19379C12v4Ev
  virtual void  v5(); // _ZN8S19379C12v5Ev
  ~S19379C1(); // tgen
  S19379C1(); // tgen
};
//SIG(1 S19379C1) C1{ VBC2{ BC3{ v6 v7 v8 v9 Fp} v10 v11 Fp FL} v1 v2 v3 v4 v5 Fs FL}


void  S19379C1 ::v1(){vfunc_called(this, "_ZN8S19379C12v1Ev");}
void  S19379C1 ::v2(){vfunc_called(this, "_ZN8S19379C12v2Ev");}
void  S19379C1 ::v3(){vfunc_called(this, "_ZN8S19379C12v3Ev");}
void  S19379C1 ::v4(){vfunc_called(this, "_ZN8S19379C12v4Ev");}
void  S19379C1 ::v5(){vfunc_called(this, "_ZN8S19379C12v5Ev");}
S19379C1 ::~S19379C1(){ note_dtor("S19379C1", this);} // tgen
S19379C1 ::S19379C1(){ note_ctor("S19379C1", this);} // tgen

static void Test_S19379C1()
{
  extern Class_Descriptor cd_S19379C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S19379C1, buf);
    S19379C1 *dp, &lv = *(dp=new (buf) S19379C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S19379C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19379C1)");
    check_base_class_offset(lv, (S19379C3*)(S19379C2*), ABISELECT(24,16), "S19379C1");
    check_base_class_offset(lv, (S19379C2*), ABISELECT(24,16), "S19379C1");
    check_field_offset(lv, s19379c1f0, ABISELECT(8,4), "S19379C1.s19379c1f0");
    check_field_offset(lv, s19379c1f1, ABISELECT(16,8), "S19379C1.s19379c1f1");
    test_class_info(&lv, &cd_S19379C1);
    dp->~S19379C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19379C1(Test_S19379C1, "S19379C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S19379C1C1Ev();
extern void _ZN8S19379C1D1Ev();
Name_Map name_map_S19379C1[] = {
  NSPAIR(_ZN8S19379C1C1Ev),
  NSPAIR(_ZN8S19379C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19379C3;
extern VTBL_ENTRY _ZTI8S19379C3[];
extern  VTBL_ENTRY _ZTV8S19379C3[];
extern Class_Descriptor cd_S19379C2;
extern VTBL_ENTRY _ZTI8S19379C2[];
extern  VTBL_ENTRY _ZTV8S19379C2[];
static Base_Class bases_S19379C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19379C3,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19379C2,    ABISELECT(24,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //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 _ZTI8S19379C1[];
extern void _ZN8S19379C12v1Ev();
extern void _ZN8S19379C12v2Ev();
extern void _ZN8S19379C12v3Ev();
extern void _ZN8S19379C12v4Ev();
extern void _ZN8S19379C12v5Ev();
extern void _ZN8S19379C32v6Ev();
extern void _ZN8S19379C32v7Ev();
extern void _ZN8S19379C32v8Ev();
extern void _ZN8S19379C32v9Ev();
extern void _ZN8S19379C23v10Ev();
extern void _ZN8S19379C23v11Ev();
static  VTBL_ENTRY vtc_S19379C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19379C1[0]),
  (VTBL_ENTRY)&_ZN8S19379C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19379C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19379C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19379C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19379C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19379C1[0]),
  (VTBL_ENTRY)&_ZN8S19379C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19379C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19379C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19379C23v11Ev,
};
extern VTBL_ENTRY _ZTV8S19379C1[];
static  VTT_ENTRY vtt_S19379C1[] = {
  {&(_ZTV8S19379C1[3]),  3,22},
  {&(_ZTV8S19379C1[16]),  16,22},
};
extern VTBL_ENTRY _ZTI8S19379C1[];
extern  VTBL_ENTRY _ZTV8S19379C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19379C1[];
Class_Descriptor cd_S19379C1 = {  "S19379C1", // class name
  bases_S19379C1, 2,
  &(vtc_S19379C1[0]), // expected_vtbl_contents
  &(vtt_S19379C1[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S19379C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19379C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19379C1),2, //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  S3072C3  {
  virtual void  v2(); // _ZN7S3072C32v2Ev
  virtual void  v3(); // _ZN7S3072C32v3Ev
  virtual void  v4(); // _ZN7S3072C32v4Ev
  ~S3072C3(); // tgen
  S3072C3(); // tgen
};
//SIG(-1 S3072C3) C1{ v1 v2 v3}


void  S3072C3 ::v2(){vfunc_called(this, "_ZN7S3072C32v2Ev");}
void  S3072C3 ::v3(){vfunc_called(this, "_ZN7S3072C32v3Ev");}
void  S3072C3 ::v4(){vfunc_called(this, "_ZN7S3072C32v4Ev");}
S3072C3 ::~S3072C3(){ note_dtor("S3072C3", this);} // tgen
S3072C3 ::S3072C3(){ note_ctor("S3072C3", this);} // tgen

static void Test_S3072C3()
{
  extern Class_Descriptor cd_S3072C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3072C3, buf);
    S3072C3 *dp, &lv = *(dp=new (buf) S3072C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3072C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3072C3)");
    test_class_info(&lv, &cd_S3072C3);
    dp->~S3072C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3072C3(Test_S3072C3, "S3072C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3072C3C1Ev();
extern void _ZN7S3072C3D1Ev();
Name_Map name_map_S3072C3[] = {
  NSPAIR(_ZN7S3072C3C1Ev),
  NSPAIR(_ZN7S3072C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3072C3[];
extern void _ZN7S3072C32v2Ev();
extern void _ZN7S3072C32v3Ev();
extern void _ZN7S3072C32v4Ev();
static  VTBL_ENTRY vtc_S3072C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3072C3[0]),
  (VTBL_ENTRY)&_ZN7S3072C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S3072C3[];
extern  VTBL_ENTRY _ZTV7S3072C3[];
Class_Descriptor cd_S3072C3 = {  "S3072C3", // class name
  0,0,//no base classes
  &(vtc_S3072C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3072C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3072C3),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  S3072C2  : S3072C3 {
  ::S3072C3 s3072c2f0;
  virtual void  v5(); // _ZN7S3072C22v5Ev
  virtual void  v6(); // _ZN7S3072C22v6Ev
  virtual void  v7(); // _ZN7S3072C22v7Ev
  ~S3072C2(); // tgen
  S3072C2(); // tgen
};
//SIG(-1 S3072C2) C1{ BC2{ v4 v5 v6} v1 v2 v3 FC2}


void  S3072C2 ::v5(){vfunc_called(this, "_ZN7S3072C22v5Ev");}
void  S3072C2 ::v6(){vfunc_called(this, "_ZN7S3072C22v6Ev");}
void  S3072C2 ::v7(){vfunc_called(this, "_ZN7S3072C22v7Ev");}
S3072C2 ::~S3072C2(){ note_dtor("S3072C2", this);} // tgen
S3072C2 ::S3072C2(){ note_ctor("S3072C2", this);} // tgen

static void Test_S3072C2()
{
  extern Class_Descriptor cd_S3072C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3072C2, buf);
    S3072C2 *dp, &lv = *(dp=new (buf) S3072C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3072C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3072C2)");
    check_base_class_offset(lv, (S3072C3*), 0, "S3072C2");
    check_field_offset(lv, s3072c2f0, ABISELECT(8,4), "S3072C2.s3072c2f0");
    test_class_info(&lv, &cd_S3072C2);
    dp->~S3072C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3072C2(Test_S3072C2, "S3072C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3072C2C1Ev();
extern void _ZN7S3072C2D1Ev();
Name_Map name_map_S3072C2[] = {
  NSPAIR(_ZN7S3072C2C1Ev),
  NSPAIR(_ZN7S3072C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3072C3;
extern VTBL_ENTRY _ZTI7S3072C3[];
extern  VTBL_ENTRY _ZTV7S3072C3[];
static Base_Class bases_S3072C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3072C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3072C2[];
extern void _ZN7S3072C32v2Ev();
extern void _ZN7S3072C32v3Ev();
extern void _ZN7S3072C32v4Ev();
extern void _ZN7S3072C22v5Ev();
extern void _ZN7S3072C22v6Ev();
extern void _ZN7S3072C22v7Ev();
static  VTBL_ENTRY vtc_S3072C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3072C2[0]),
  (VTBL_ENTRY)&_ZN7S3072C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S3072C2[];
extern  VTBL_ENTRY _ZTV7S3072C2[];
Class_Descriptor cd_S3072C2 = {  "S3072C2", // class name
  bases_S3072C2, 1,
  &(vtc_S3072C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3072C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3072C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3072C4  {
  virtual  ~S3072C4(); // _ZN7S3072C4D1Ev
  virtual void  v8(); // _ZN7S3072C42v8Ev
  virtual void  v9(); // _ZN7S3072C42v9Ev
  virtual void  v10(); // _ZN7S3072C43v10Ev
  virtual void  v11(); // _ZN7S3072C43v11Ev
  S3072C4(); // tgen
};
//SIG(-1 S3072C4) C1{ vd v1 v2 v3 v4}


 S3072C4 ::~S3072C4(){ note_dtor("S3072C4", this);}
void  S3072C4 ::v8(){vfunc_called(this, "_ZN7S3072C42v8Ev");}
void  S3072C4 ::v9(){vfunc_called(this, "_ZN7S3072C42v9Ev");}
void  S3072C4 ::v10(){vfunc_called(this, "_ZN7S3072C43v10Ev");}
void  S3072C4 ::v11(){vfunc_called(this, "_ZN7S3072C43v11Ev");}
S3072C4 ::S3072C4(){ note_ctor("S3072C4", this);} // tgen

static void Test_S3072C4()
{
  extern Class_Descriptor cd_S3072C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3072C4, buf);
    S3072C4 *dp, &lv = *(dp=new (buf) S3072C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3072C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3072C4)");
    test_class_info(&lv, &cd_S3072C4);
    dp->~S3072C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3072C4(Test_S3072C4, "S3072C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3072C4C1Ev();
extern void _ZN7S3072C4D1Ev();
Name_Map name_map_S3072C4[] = {
  NSPAIR(_ZN7S3072C4C1Ev),
  NSPAIR(_ZN7S3072C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3072C4[];
extern void _ZN7S3072C4D1Ev();
extern void _ZN7S3072C4D0Ev();
extern void _ZN7S3072C42v8Ev();
extern void _ZN7S3072C42v9Ev();
extern void _ZN7S3072C43v10Ev();
extern void _ZN7S3072C43v11Ev();
static  VTBL_ENTRY vtc_S3072C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3072C4[0]),
  (VTBL_ENTRY)&_ZN7S3072C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3072C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3072C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3072C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3072C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3072C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S3072C4[];
extern  VTBL_ENTRY _ZTV7S3072C4[];
Class_Descriptor cd_S3072C4 = {  "S3072C4", // class name
  0,0,//no base classes
  &(vtc_S3072C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3072C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3072C4),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  S3072C1  : S3072C2 , virtual S3072C4 {
  virtual  ~S3072C1(); // _ZN7S3072C1D2Ev
  virtual void  v1(); // _ZN7S3072C12v1Ev
  S3072C1(); // tgen
};
//SIG(1 S3072C1) C1{ BC2{ BC3{ v2 v3 v4} v5 v6 v7 FC3} VBC4{ vd v8 v9 v10 v11} vd v1}


 S3072C1 ::~S3072C1(){ note_dtor("S3072C1", this);}
void  S3072C1 ::v1(){vfunc_called(this, "_ZN7S3072C12v1Ev");}
S3072C1 ::S3072C1(){ note_ctor("S3072C1", this);} // tgen

static void Test_S3072C1()
{
  extern Class_Descriptor cd_S3072C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3072C1, buf);
    S3072C1 *dp, &lv = *(dp=new (buf) S3072C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3072C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3072C1)");
    check_base_class_offset(lv, (S3072C3*)(S3072C2*), 0, "S3072C1");
    check_base_class_offset(lv, (S3072C2*), 0, "S3072C1");
    check_base_class_offset(lv, (S3072C4*), ABISELECT(16,8), "S3072C1");
    test_class_info(&lv, &cd_S3072C1);
    dp->~S3072C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3072C1(Test_S3072C1, "S3072C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3072C1C1Ev();
extern void _ZN7S3072C1D2Ev();
Name_Map name_map_S3072C1[] = {
  NSPAIR(_ZN7S3072C1C1Ev),
  NSPAIR(_ZN7S3072C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3072C3;
extern VTBL_ENTRY _ZTI7S3072C3[];
extern  VTBL_ENTRY _ZTV7S3072C3[];
extern Class_Descriptor cd_S3072C2;
extern VTBL_ENTRY _ZTI7S3072C2[];
extern  VTBL_ENTRY _ZTV7S3072C2[];
extern Class_Descriptor cd_S3072C4;
extern VTBL_ENTRY _ZTI7S3072C4[];
extern  VTBL_ENTRY _ZTV7S3072C4[];
static Base_Class bases_S3072C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3072C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S3072C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3072C4,    ABISELECT(16,8), //bcp->offset
    12, //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 _ZTI7S3072C1[];
extern void _ZN7S3072C32v2Ev();
extern void _ZN7S3072C32v3Ev();
extern void _ZN7S3072C32v4Ev();
extern void _ZN7S3072C22v5Ev();
extern void _ZN7S3072C22v6Ev();
extern void _ZN7S3072C22v7Ev();
extern void _ZN7S3072C1D1Ev();
extern void _ZN7S3072C1D0Ev();
extern void _ZN7S3072C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S3072C1D1Ev,_ZTv0_n12_N7S3072C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S3072C1D1Ev,_ZThn8_N7S3072C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3072C1D0Ev,_ZTv0_n12_N7S3072C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S3072C1D0Ev,_ZThn8_N7S3072C1D0Ev)() __attribute__((weak));
extern void _ZN7S3072C42v8Ev();
extern void _ZN7S3072C42v9Ev();
extern void _ZN7S3072C43v10Ev();
extern void _ZN7S3072C43v11Ev();
static  VTBL_ENTRY vtc_S3072C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3072C1[0]),
  (VTBL_ENTRY)&_ZN7S3072C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3072C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3072C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3072C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3072C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3072C12v1Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3072C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3072C1D1Ev,_ZTv0_n12_N7S3072C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3072C1D0Ev,_ZTv0_n12_N7S3072C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3072C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3072C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3072C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3072C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S3072C1[];
static  VTT_ENTRY vtt_S3072C1[] = {
  {&(_ZTV7S3072C1[3]),  3,25},
  {&(_ZTV7S3072C1[19]),  19,25},
};
extern VTBL_ENTRY _ZTI7S3072C1[];
extern  VTBL_ENTRY _ZTV7S3072C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3072C1[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3072C1D0Ev,_ZTv0_n12_N7S3072C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3072C1D0Ev,_ZThn8_N7S3072C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3072C1D1Ev,_ZTv0_n12_N7S3072C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3072C1D1Ev,_ZThn8_N7S3072C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3072C1 = {  "S3072C1", // class name
  bases_S3072C1, 3,
  &(vtc_S3072C1[0]), // expected_vtbl_contents
  &(vtt_S3072C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3072C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3072C1),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3072C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3267C3  {
  void *s3267c3f0;
  virtual void  v5(); // _ZN7S3267C32v5Ev
  virtual void  v6(); // _ZN7S3267C32v6Ev
  virtual void  v7(); // _ZN7S3267C32v7Ev
  virtual void  v8(); // _ZN7S3267C32v8Ev
  ~S3267C3(); // tgen
  S3267C3(); // tgen
};
//SIG(-1 S3267C3) C1{ v1 v2 v3 v4 Fp}


void  S3267C3 ::v5(){vfunc_called(this, "_ZN7S3267C32v5Ev");}
void  S3267C3 ::v6(){vfunc_called(this, "_ZN7S3267C32v6Ev");}
void  S3267C3 ::v7(){vfunc_called(this, "_ZN7S3267C32v7Ev");}
void  S3267C3 ::v8(){vfunc_called(this, "_ZN7S3267C32v8Ev");}
S3267C3 ::~S3267C3(){ note_dtor("S3267C3", this);} // tgen
S3267C3 ::S3267C3(){ note_ctor("S3267C3", this);} // tgen

static void Test_S3267C3()
{
  extern Class_Descriptor cd_S3267C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3267C3, buf);
    S3267C3 *dp, &lv = *(dp=new (buf) S3267C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3267C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3267C3)");
    check_field_offset(lv, s3267c3f0, ABISELECT(8,4), "S3267C3.s3267c3f0");
    test_class_info(&lv, &cd_S3267C3);
    dp->~S3267C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3267C3(Test_S3267C3, "S3267C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3267C3C1Ev();
extern void _ZN7S3267C3D1Ev();
Name_Map name_map_S3267C3[] = {
  NSPAIR(_ZN7S3267C3C1Ev),
  NSPAIR(_ZN7S3267C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3267C3[];
extern void _ZN7S3267C32v5Ev();
extern void _ZN7S3267C32v6Ev();
extern void _ZN7S3267C32v7Ev();
extern void _ZN7S3267C32v8Ev();
static  VTBL_ENTRY vtc_S3267C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3267C3[0]),
  (VTBL_ENTRY)&_ZN7S3267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S3267C3[];
extern  VTBL_ENTRY _ZTV7S3267C3[];
Class_Descriptor cd_S3267C3 = {  "S3267C3", // class name
  0,0,//no base classes
  &(vtc_S3267C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3267C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3267C3),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  S3267C2  : S3267C3 {
  virtual void  v9(); // _ZN7S3267C22v9Ev
  virtual void  v10(); // _ZN7S3267C23v10Ev
  virtual void  v11(); // _ZN7S3267C23v11Ev
  virtual void  v12(); // _ZN7S3267C23v12Ev
  virtual void  v13(); // _ZN7S3267C23v13Ev
  virtual void  v14(); // _ZN7S3267C23v14Ev
  ~S3267C2(); // tgen
  S3267C2(); // tgen
};
//SIG(-1 S3267C2) C1{ BC2{ v7 v8 v9 v10 Fp} v1 v2 v3 v4 v5 v6}


void  S3267C2 ::v9(){vfunc_called(this, "_ZN7S3267C22v9Ev");}
void  S3267C2 ::v10(){vfunc_called(this, "_ZN7S3267C23v10Ev");}
void  S3267C2 ::v11(){vfunc_called(this, "_ZN7S3267C23v11Ev");}
void  S3267C2 ::v12(){vfunc_called(this, "_ZN7S3267C23v12Ev");}
void  S3267C2 ::v13(){vfunc_called(this, "_ZN7S3267C23v13Ev");}
void  S3267C2 ::v14(){vfunc_called(this, "_ZN7S3267C23v14Ev");}
S3267C2 ::~S3267C2(){ note_dtor("S3267C2", this);} // tgen
S3267C2 ::S3267C2(){ note_ctor("S3267C2", this);} // tgen

static void Test_S3267C2()
{
  extern Class_Descriptor cd_S3267C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3267C2, buf);
    S3267C2 *dp, &lv = *(dp=new (buf) S3267C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3267C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3267C2)");
    check_base_class_offset(lv, (S3267C3*), 0, "S3267C2");
    test_class_info(&lv, &cd_S3267C2);
    dp->~S3267C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3267C2(Test_S3267C2, "S3267C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3267C2C1Ev();
extern void _ZN7S3267C2D1Ev();
Name_Map name_map_S3267C2[] = {
  NSPAIR(_ZN7S3267C2C1Ev),
  NSPAIR(_ZN7S3267C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3267C3;
extern VTBL_ENTRY _ZTI7S3267C3[];
extern  VTBL_ENTRY _ZTV7S3267C3[];
static Base_Class bases_S3267C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3267C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3267C2[];
extern void _ZN7S3267C32v5Ev();
extern void _ZN7S3267C32v6Ev();
extern void _ZN7S3267C32v7Ev();
extern void _ZN7S3267C32v8Ev();
extern void _ZN7S3267C22v9Ev();
extern void _ZN7S3267C23v10Ev();
extern void _ZN7S3267C23v11Ev();
extern void _ZN7S3267C23v12Ev();
extern void _ZN7S3267C23v13Ev();
extern void _ZN7S3267C23v14Ev();
static  VTBL_ENTRY vtc_S3267C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3267C2[0]),
  (VTBL_ENTRY)&_ZN7S3267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3267C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S3267C2[];
extern  VTBL_ENTRY _ZTV7S3267C2[];
Class_Descriptor cd_S3267C2 = {  "S3267C2", // class name
  bases_S3267C2, 1,
  &(vtc_S3267C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3267C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3267C2),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  S3267C1  : S3267C2 {
  virtual void  v1(); // _ZN7S3267C12v1Ev
  virtual void  v2(); // _ZN7S3267C12v2Ev
  virtual void  v3(); // _ZN7S3267C12v3Ev
  virtual void  v4(); // _ZN7S3267C12v4Ev
  ~S3267C1(); // tgen
  S3267C1(); // tgen
};
//SIG(1 S3267C1) C1{ BC2{ BC3{ v5 v6 v7 v8 Fp} v9 v10 v11 v12 v13 v14} v1 v2 v3 v4}


void  S3267C1 ::v1(){vfunc_called(this, "_ZN7S3267C12v1Ev");}
void  S3267C1 ::v2(){vfunc_called(this, "_ZN7S3267C12v2Ev");}
void  S3267C1 ::v3(){vfunc_called(this, "_ZN7S3267C12v3Ev");}
void  S3267C1 ::v4(){vfunc_called(this, "_ZN7S3267C12v4Ev");}
S3267C1 ::~S3267C1(){ note_dtor("S3267C1", this);} // tgen
S3267C1 ::S3267C1(){ note_ctor("S3267C1", this);} // tgen

static void Test_S3267C1()
{
  extern Class_Descriptor cd_S3267C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3267C1, buf);
    S3267C1 *dp, &lv = *(dp=new (buf) S3267C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3267C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3267C1)");
    check_base_class_offset(lv, (S3267C3*)(S3267C2*), 0, "S3267C1");
    check_base_class_offset(lv, (S3267C2*), 0, "S3267C1");
    test_class_info(&lv, &cd_S3267C1);
    dp->~S3267C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3267C1(Test_S3267C1, "S3267C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3267C1C1Ev();
extern void _ZN7S3267C1D1Ev();
Name_Map name_map_S3267C1[] = {
  NSPAIR(_ZN7S3267C1C1Ev),
  NSPAIR(_ZN7S3267C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3267C3;
extern VTBL_ENTRY _ZTI7S3267C3[];
extern  VTBL_ENTRY _ZTV7S3267C3[];
extern Class_Descriptor cd_S3267C2;
extern VTBL_ENTRY _ZTI7S3267C2[];
extern  VTBL_ENTRY _ZTV7S3267C2[];
static Base_Class bases_S3267C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3267C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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_S3267C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S3267C1[];
extern void _ZN7S3267C32v5Ev();
extern void _ZN7S3267C32v6Ev();
extern void _ZN7S3267C32v7Ev();
extern void _ZN7S3267C32v8Ev();
extern void _ZN7S3267C22v9Ev();
extern void _ZN7S3267C23v10Ev();
extern void _ZN7S3267C23v11Ev();
extern void _ZN7S3267C23v12Ev();
extern void _ZN7S3267C23v13Ev();
extern void _ZN7S3267C23v14Ev();
extern void _ZN7S3267C12v1Ev();
extern void _ZN7S3267C12v2Ev();
extern void _ZN7S3267C12v3Ev();
extern void _ZN7S3267C12v4Ev();
static  VTBL_ENTRY vtc_S3267C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3267C1[0]),
  (VTBL_ENTRY)&_ZN7S3267C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3267C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3267C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3267C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3267C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3267C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3267C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3267C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3267C1[];
extern  VTBL_ENTRY _ZTV7S3267C1[];
Class_Descriptor cd_S3267C1 = {  "S3267C1", // class name
  bases_S3267C1, 2,
  &(vtc_S3267C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3267C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3267C1),16, //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  S9464C2  {
  void *s9464c2f0;
  ::S15222C4 s9464c2f1;
  ::S15222C4 s9464c2f2;
  char s9464c2f3;
  virtual  ~S9464C2(); // _ZN7S9464C2D1Ev
  virtual void  v3(); // _ZN7S9464C22v3Ev
  virtual void  v4(); // _ZN7S9464C22v4Ev
  virtual void  v5(); // _ZN7S9464C22v5Ev
  virtual void  v6(); // _ZN7S9464C22v6Ev
  virtual void  v7(); // _ZN7S9464C22v7Ev
  virtual void  v8(); // _ZN7S9464C22v8Ev
  S9464C2(); // tgen
};
//SIG(-1 S9464C2) C1{ vd v1 v2 v3 v4 v5 v6 Fp FU2{ Fp FL Fc} FU2 Fc}


 S9464C2 ::~S9464C2(){ note_dtor("S9464C2", this);}
void  S9464C2 ::v3(){vfunc_called(this, "_ZN7S9464C22v3Ev");}
void  S9464C2 ::v4(){vfunc_called(this, "_ZN7S9464C22v4Ev");}
void  S9464C2 ::v5(){vfunc_called(this, "_ZN7S9464C22v5Ev");}
void  S9464C2 ::v6(){vfunc_called(this, "_ZN7S9464C22v6Ev");}
void  S9464C2 ::v7(){vfunc_called(this, "_ZN7S9464C22v7Ev");}
void  S9464C2 ::v8(){vfunc_called(this, "_ZN7S9464C22v8Ev");}
S9464C2 ::S9464C2(){ note_ctor("S9464C2", this);} // tgen

static void Test_S9464C2()
{
  extern Class_Descriptor cd_S9464C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9464C2, buf);
    S9464C2 *dp, &lv = *(dp=new (buf) S9464C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9464C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9464C2)");
    check_field_offset(lv, s9464c2f0, ABISELECT(8,4), "S9464C2.s9464c2f0");
    check_field_offset(lv, s9464c2f1, ABISELECT(16,8), "S9464C2.s9464c2f1");
    check_field_offset(lv, s9464c2f2, ABISELECT(24,16), "S9464C2.s9464c2f2");
    check_field_offset(lv, s9464c2f3, ABISELECT(32,24), "S9464C2.s9464c2f3");
    test_class_info(&lv, &cd_S9464C2);
    dp->~S9464C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9464C2(Test_S9464C2, "S9464C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9464C2C1Ev();
extern void _ZN7S9464C2D1Ev();
Name_Map name_map_S9464C2[] = {
  NSPAIR(_ZN7S9464C2C1Ev),
  NSPAIR(_ZN7S9464C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9464C2[];
extern void _ZN7S9464C2D1Ev();
extern void _ZN7S9464C2D0Ev();
extern void _ZN7S9464C22v3Ev();
extern void _ZN7S9464C22v4Ev();
extern void _ZN7S9464C22v5Ev();
extern void _ZN7S9464C22v6Ev();
extern void _ZN7S9464C22v7Ev();
extern void _ZN7S9464C22v8Ev();
static  VTBL_ENTRY vtc_S9464C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9464C2[0]),
  (VTBL_ENTRY)&_ZN7S9464C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9464C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9464C2[];
extern  VTBL_ENTRY _ZTV7S9464C2[];
Class_Descriptor cd_S9464C2 = {  "S9464C2", // class name
  0,0,//no base classes
  &(vtc_S9464C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9464C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9464C2),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  S9464C1  : S9464C2 {
  virtual  ~S9464C1(); // _ZN7S9464C1D1Ev
  virtual void  v1(); // _ZN7S9464C12v1Ev
  virtual void  v2(); // _ZN7S9464C12v2Ev
  S9464C1(); // tgen
};
//SIG(1 S9464C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 Fp FU3{ Fp FL Fc} FU3 Fc} vd v1 v2}


 S9464C1 ::~S9464C1(){ note_dtor("S9464C1", this);}
void  S9464C1 ::v1(){vfunc_called(this, "_ZN7S9464C12v1Ev");}
void  S9464C1 ::v2(){vfunc_called(this, "_ZN7S9464C12v2Ev");}
S9464C1 ::S9464C1(){ note_ctor("S9464C1", this);} // tgen

static void Test_S9464C1()
{
  extern Class_Descriptor cd_S9464C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9464C1, buf);
    S9464C1 *dp, &lv = *(dp=new (buf) S9464C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9464C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9464C1)");
    check_base_class_offset(lv, (S9464C2*), 0, "S9464C1");
    test_class_info(&lv, &cd_S9464C1);
    dp->~S9464C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9464C1(Test_S9464C1, "S9464C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9464C1C1Ev();
extern void _ZN7S9464C1D1Ev();
Name_Map name_map_S9464C1[] = {
  NSPAIR(_ZN7S9464C1C1Ev),
  NSPAIR(_ZN7S9464C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9464C2;
extern VTBL_ENTRY _ZTI7S9464C2[];
extern  VTBL_ENTRY _ZTV7S9464C2[];
static Base_Class bases_S9464C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9464C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9464C1[];
extern void _ZN7S9464C1D1Ev();
extern void _ZN7S9464C1D0Ev();
extern void _ZN7S9464C22v3Ev();
extern void _ZN7S9464C22v4Ev();
extern void _ZN7S9464C22v5Ev();
extern void _ZN7S9464C22v6Ev();
extern void _ZN7S9464C22v7Ev();
extern void _ZN7S9464C22v8Ev();
extern void _ZN7S9464C12v1Ev();
extern void _ZN7S9464C12v2Ev();
static  VTBL_ENTRY vtc_S9464C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9464C1[0]),
  (VTBL_ENTRY)&_ZN7S9464C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9464C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9464C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9464C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9464C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9464C1[];
extern  VTBL_ENTRY _ZTV7S9464C1[];
Class_Descriptor cd_S9464C1 = {  "S9464C1", // class name
  bases_S9464C1, 1,
  &(vtc_S9464C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9464C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9464C1),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  S19362C3  {
  void *s19362c3f0;
  virtual void  v5(); // _ZN8S19362C32v5Ev
  virtual void  v6(); // _ZN8S19362C32v6Ev
  virtual void  v7(); // _ZN8S19362C32v7Ev
  virtual void  v8(); // _ZN8S19362C32v8Ev
  ~S19362C3(); // tgen
  S19362C3(); // tgen
};
//SIG(-1 S19362C3) C1{ v1 v2 v3 v4 Fp}


void  S19362C3 ::v5(){vfunc_called(this, "_ZN8S19362C32v5Ev");}
void  S19362C3 ::v6(){vfunc_called(this, "_ZN8S19362C32v6Ev");}
void  S19362C3 ::v7(){vfunc_called(this, "_ZN8S19362C32v7Ev");}
void  S19362C3 ::v8(){vfunc_called(this, "_ZN8S19362C32v8Ev");}
S19362C3 ::~S19362C3(){ note_dtor("S19362C3", this);} // tgen
S19362C3 ::S19362C3(){ note_ctor("S19362C3", this);} // tgen

static void Test_S19362C3()
{
  extern Class_Descriptor cd_S19362C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19362C3, buf);
    S19362C3 *dp, &lv = *(dp=new (buf) S19362C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19362C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19362C3)");
    check_field_offset(lv, s19362c3f0, ABISELECT(8,4), "S19362C3.s19362c3f0");
    test_class_info(&lv, &cd_S19362C3);
    dp->~S19362C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19362C3(Test_S19362C3, "S19362C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19362C3C1Ev();
extern void _ZN8S19362C3D1Ev();
Name_Map name_map_S19362C3[] = {
  NSPAIR(_ZN8S19362C3C1Ev),
  NSPAIR(_ZN8S19362C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19362C3[];
extern void _ZN8S19362C32v5Ev();
extern void _ZN8S19362C32v6Ev();
extern void _ZN8S19362C32v7Ev();
extern void _ZN8S19362C32v8Ev();
static  VTBL_ENTRY vtc_S19362C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19362C3[0]),
  (VTBL_ENTRY)&_ZN8S19362C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v8Ev,
};
extern VTBL_ENTRY _ZTI8S19362C3[];
extern  VTBL_ENTRY _ZTV8S19362C3[];
Class_Descriptor cd_S19362C3 = {  "S19362C3", // class name
  0,0,//no base classes
  &(vtc_S19362C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19362C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19362C3),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  S19362C2  : S19362C3 {
  void *s19362c2f0;
  __tsi64 s19362c2f1;
  virtual void  v9(); // _ZN8S19362C22v9Ev
  virtual void  v10(); // _ZN8S19362C23v10Ev
  ~S19362C2(); // tgen
  S19362C2(); // tgen
};
//SIG(-1 S19362C2) C1{ BC2{ v3 v4 v5 v6 Fp} v1 v2 Fp FL}


void  S19362C2 ::v9(){vfunc_called(this, "_ZN8S19362C22v9Ev");}
void  S19362C2 ::v10(){vfunc_called(this, "_ZN8S19362C23v10Ev");}
S19362C2 ::~S19362C2(){ note_dtor("S19362C2", this);} // tgen
S19362C2 ::S19362C2(){ note_ctor("S19362C2", this);} // tgen

static void Test_S19362C2()
{
  extern Class_Descriptor cd_S19362C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19362C2, buf);
    S19362C2 *dp, &lv = *(dp=new (buf) S19362C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19362C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19362C2)");
    check_base_class_offset(lv, (S19362C3*), 0, "S19362C2");
    check_field_offset(lv, s19362c2f0, ABISELECT(16,8), "S19362C2.s19362c2f0");
    check_field_offset(lv, s19362c2f1, ABISELECT(24,12), "S19362C2.s19362c2f1");
    test_class_info(&lv, &cd_S19362C2);
    dp->~S19362C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19362C2(Test_S19362C2, "S19362C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19362C2C1Ev();
extern void _ZN8S19362C2D1Ev();
Name_Map name_map_S19362C2[] = {
  NSPAIR(_ZN8S19362C2C1Ev),
  NSPAIR(_ZN8S19362C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19362C3;
extern VTBL_ENTRY _ZTI8S19362C3[];
extern  VTBL_ENTRY _ZTV8S19362C3[];
static Base_Class bases_S19362C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19362C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19362C2[];
extern void _ZN8S19362C32v5Ev();
extern void _ZN8S19362C32v6Ev();
extern void _ZN8S19362C32v7Ev();
extern void _ZN8S19362C32v8Ev();
extern void _ZN8S19362C22v9Ev();
extern void _ZN8S19362C23v10Ev();
static  VTBL_ENTRY vtc_S19362C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19362C2[0]),
  (VTBL_ENTRY)&_ZN8S19362C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19362C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19362C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19362C2[];
extern  VTBL_ENTRY _ZTV8S19362C2[];
Class_Descriptor cd_S19362C2 = {  "S19362C2", // class name
  bases_S19362C2, 1,
  &(vtc_S19362C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19362C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19362C2),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  S19362C1  : virtual S19362C2 , S19362C3 {
  __tsi64 s19362c1f0;
  virtual void  v1(); // _ZN8S19362C12v1Ev
  virtual void  v2(); // _ZN8S19362C12v2Ev
  virtual void  v3(); // _ZN8S19362C12v3Ev
  virtual void  v4(); // _ZN8S19362C12v4Ev
  ~S19362C1(); // tgen
  S19362C1(); // tgen
};
//SIG(1 S19362C1) C1{ VBC2{ BC3{ v5 v6 v7 v8 Fp} v9 v10 Fp FL} BC3 v1 v2 v3 v4 FL}


void  S19362C1 ::v1(){vfunc_called(this, "_ZN8S19362C12v1Ev");}
void  S19362C1 ::v2(){vfunc_called(this, "_ZN8S19362C12v2Ev");}
void  S19362C1 ::v3(){vfunc_called(this, "_ZN8S19362C12v3Ev");}
void  S19362C1 ::v4(){vfunc_called(this, "_ZN8S19362C12v4Ev");}
S19362C1 ::~S19362C1(){ note_dtor("S19362C1", this);} // tgen
S19362C1 ::S19362C1(){ note_ctor("S19362C1", this);} // tgen

static void Test_S19362C1()
{
  extern Class_Descriptor cd_S19362C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S19362C1, buf);
    S19362C1 *dp, &lv = *(dp=new (buf) S19362C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S19362C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19362C1)");
    check_base_class_offset(lv, (S19362C3*)(S19362C2*), ABISELECT(24,16), "S19362C1");
    check_base_class_offset(lv, (S19362C2*), ABISELECT(24,16), "S19362C1");
    /*is_ambiguous_... S19362C1::S19362C3 */ AMB_check_base_class_offset(lv, (S19362C3*), 0, "S19362C1");
    check_field_offset(lv, s19362c1f0, ABISELECT(16,8), "S19362C1.s19362c1f0");
    test_class_info(&lv, &cd_S19362C1);
    dp->~S19362C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19362C1(Test_S19362C1, "S19362C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S19362C1C1Ev();
extern void _ZN8S19362C1D1Ev();
Name_Map name_map_S19362C1[] = {
  NSPAIR(_ZN8S19362C1C1Ev),
  NSPAIR(_ZN8S19362C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19362C3;
extern VTBL_ENTRY _ZTI8S19362C3[];
extern  VTBL_ENTRY _ZTV8S19362C3[];
extern Class_Descriptor cd_S19362C2;
extern VTBL_ENTRY _ZTI8S19362C2[];
extern  VTBL_ENTRY _ZTV8S19362C2[];
extern Class_Descriptor cd_S19362C3;
extern VTBL_ENTRY _ZTI8S19362C3[];
extern  VTBL_ENTRY _ZTV8S19362C3[];
static Base_Class bases_S19362C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19362C3,    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
    1, //immediately_derived
  0, 0},
  {&cd_S19362C2,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //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_S19362C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19362C1[];
extern void _ZN8S19362C32v5Ev();
extern void _ZN8S19362C32v6Ev();
extern void _ZN8S19362C32v7Ev();
extern void _ZN8S19362C32v8Ev();
extern void _ZN8S19362C12v1Ev();
extern void _ZN8S19362C12v2Ev();
extern void _ZN8S19362C12v3Ev();
extern void _ZN8S19362C12v4Ev();
extern void _ZN8S19362C32v5Ev();
extern void _ZN8S19362C32v6Ev();
extern void _ZN8S19362C32v7Ev();
extern void _ZN8S19362C32v8Ev();
extern void _ZN8S19362C22v9Ev();
extern void _ZN8S19362C23v10Ev();
static  VTBL_ENTRY vtc_S19362C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19362C1[0]),
  (VTBL_ENTRY)&_ZN8S19362C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19362C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19362C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19362C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19362C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19362C1[0]),
  (VTBL_ENTRY)&_ZN8S19362C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19362C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19362C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19362C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19362C1[];
static  VTT_ENTRY vtt_S19362C1[] = {
  {&(_ZTV8S19362C1[3]),  3,25},
  {&(_ZTV8S19362C1[19]),  19,25},
};
extern VTBL_ENTRY _ZTI8S19362C1[];
extern  VTBL_ENTRY _ZTV8S19362C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19362C1[];
Class_Descriptor cd_S19362C1 = {  "S19362C1", // class name
  bases_S19362C1, 3,
  &(vtc_S19362C1[0]), // expected_vtbl_contents
  &(vtt_S19362C1[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S19362C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19362C1),25, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19362C1),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  S8962C2  {
  void *s8962c2f0;
  ::S15222C4 s8962c2f1;
  ::S15222C4 s8962c2f2;
  char s8962c2f3;
  virtual  ~S8962C2(); // _ZN7S8962C2D1Ev
  virtual void  v2(); // _ZN7S8962C22v2Ev
  virtual void  v3(); // _ZN7S8962C22v3Ev
  virtual void  v4(); // _ZN7S8962C22v4Ev
  virtual void  v5(); // _ZN7S8962C22v5Ev
  virtual void  v6(); // _ZN7S8962C22v6Ev
  virtual void  v7(); // _ZN7S8962C22v7Ev
  S8962C2(); // tgen
};
//SIG(-1 S8962C2) C1{ vd v1 v2 v3 v4 v5 v6 Fp FU2{ Fp FL Fc} FU2 Fc}


 S8962C2 ::~S8962C2(){ note_dtor("S8962C2", this);}
void  S8962C2 ::v2(){vfunc_called(this, "_ZN7S8962C22v2Ev");}
void  S8962C2 ::v3(){vfunc_called(this, "_ZN7S8962C22v3Ev");}
void  S8962C2 ::v4(){vfunc_called(this, "_ZN7S8962C22v4Ev");}
void  S8962C2 ::v5(){vfunc_called(this, "_ZN7S8962C22v5Ev");}
void  S8962C2 ::v6(){vfunc_called(this, "_ZN7S8962C22v6Ev");}
void  S8962C2 ::v7(){vfunc_called(this, "_ZN7S8962C22v7Ev");}
S8962C2 ::S8962C2(){ note_ctor("S8962C2", this);} // tgen

static void Test_S8962C2()
{
  extern Class_Descriptor cd_S8962C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S8962C2, buf);
    S8962C2 *dp, &lv = *(dp=new (buf) S8962C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S8962C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8962C2)");
    check_field_offset(lv, s8962c2f0, ABISELECT(8,4), "S8962C2.s8962c2f0");
    check_field_offset(lv, s8962c2f1, ABISELECT(16,8), "S8962C2.s8962c2f1");
    check_field_offset(lv, s8962c2f2, ABISELECT(24,16), "S8962C2.s8962c2f2");
    check_field_offset(lv, s8962c2f3, ABISELECT(32,24), "S8962C2.s8962c2f3");
    test_class_info(&lv, &cd_S8962C2);
    dp->~S8962C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8962C2(Test_S8962C2, "S8962C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S8962C2C1Ev();
extern void _ZN7S8962C2D1Ev();
Name_Map name_map_S8962C2[] = {
  NSPAIR(_ZN7S8962C2C1Ev),
  NSPAIR(_ZN7S8962C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8962C2[];
extern void _ZN7S8962C2D1Ev();
extern void _ZN7S8962C2D0Ev();
extern void _ZN7S8962C22v2Ev();
extern void _ZN7S8962C22v3Ev();
extern void _ZN7S8962C22v4Ev();
extern void _ZN7S8962C22v5Ev();
extern void _ZN7S8962C22v6Ev();
extern void _ZN7S8962C22v7Ev();
static  VTBL_ENTRY vtc_S8962C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8962C2[0]),
  (VTBL_ENTRY)&_ZN7S8962C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8962C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v6Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S8962C2[];
extern  VTBL_ENTRY _ZTV7S8962C2[];
Class_Descriptor cd_S8962C2 = {  "S8962C2", // class name
  0,0,//no base classes
  &(vtc_S8962C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S8962C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8962C2),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  S8962C1  : S8962C2 {
  virtual  ~S8962C1(); // _ZN7S8962C1D1Ev
  virtual void  v1(); // _ZN7S8962C12v1Ev
  S8962C1(); // tgen
};
//SIG(1 S8962C1) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 Fp FU3{ Fp FL Fc} FU3 Fc} vd v1}


 S8962C1 ::~S8962C1(){ note_dtor("S8962C1", this);}
void  S8962C1 ::v1(){vfunc_called(this, "_ZN7S8962C12v1Ev");}
S8962C1 ::S8962C1(){ note_ctor("S8962C1", this);} // tgen

static void Test_S8962C1()
{
  extern Class_Descriptor cd_S8962C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S8962C1, buf);
    S8962C1 *dp, &lv = *(dp=new (buf) S8962C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S8962C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8962C1)");
    check_base_class_offset(lv, (S8962C2*), 0, "S8962C1");
    test_class_info(&lv, &cd_S8962C1);
    dp->~S8962C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8962C1(Test_S8962C1, "S8962C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S8962C1C1Ev();
extern void _ZN7S8962C1D1Ev();
Name_Map name_map_S8962C1[] = {
  NSPAIR(_ZN7S8962C1C1Ev),
  NSPAIR(_ZN7S8962C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8962C2;
extern VTBL_ENTRY _ZTI7S8962C2[];
extern  VTBL_ENTRY _ZTV7S8962C2[];
static Base_Class bases_S8962C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8962C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S8962C1[];
extern void _ZN7S8962C1D1Ev();
extern void _ZN7S8962C1D0Ev();
extern void _ZN7S8962C22v2Ev();
extern void _ZN7S8962C22v3Ev();
extern void _ZN7S8962C22v4Ev();
extern void _ZN7S8962C22v5Ev();
extern void _ZN7S8962C22v6Ev();
extern void _ZN7S8962C22v7Ev();
extern void _ZN7S8962C12v1Ev();
static  VTBL_ENTRY vtc_S8962C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8962C1[0]),
  (VTBL_ENTRY)&_ZN7S8962C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8962C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v6Ev,
  (VTBL_ENTRY)&_ZN7S8962C22v7Ev,
  (VTBL_ENTRY)&_ZN7S8962C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8962C1[];
extern  VTBL_ENTRY _ZTV7S8962C1[];
Class_Descriptor cd_S8962C1 = {  "S8962C1", // class name
  bases_S8962C1, 1,
  &(vtc_S8962C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S8962C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8962C1),11, //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  S6387C2  {
  char s6387c2f0;
  void *s6387c2f1[3];
  unsigned char s6387c2f2:1;
  short s6387c2f3:6;
  virtual void  v1(); // _ZN7S6387C22v1Ev
  virtual void  v2(); // _ZN7S6387C22v2Ev
  ~S6387C2(); // tgen
  S6387C2(); // tgen
};
//SIG(-1 S6387C2) C1{ v1 v2 Fc Fp[3] Fc:1 Fs:6}


void  S6387C2 ::v1(){vfunc_called(this, "_ZN7S6387C22v1Ev");}
void  S6387C2 ::v2(){vfunc_called(this, "_ZN7S6387C22v2Ev");}
S6387C2 ::~S6387C2(){ note_dtor("S6387C2", this);} // tgen
S6387C2 ::S6387C2(){ note_ctor("S6387C2", this);} // tgen

static void Test_S6387C2()
{
  extern Class_Descriptor cd_S6387C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S6387C2, buf);
    S6387C2 *dp, &lv = *(dp=new (buf) S6387C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6387C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6387C2)");
    check_field_offset(lv, s6387c2f0, ABISELECT(8,4), "S6387C2.s6387c2f0");
    check_field_offset(lv, s6387c2f1, ABISELECT(16,8), "S6387C2.s6387c2f1");
    set_bf_and_test(lv, s6387c2f2, ABISELECT(40,20), 0, 1, 1, "S6387C2");
    set_bf_and_test(lv, s6387c2f3, ABISELECT(40,20), 1, 6, 1, "S6387C2");
    set_bf_and_test(lv, s6387c2f3, ABISELECT(40,20), 1, 6, hide_sll(1LL<<5), "S6387C2");
    test_class_info(&lv, &cd_S6387C2);
    dp->~S6387C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6387C2(Test_S6387C2, "S6387C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6387C2C1Ev();
extern void _ZN7S6387C2D1Ev();
Name_Map name_map_S6387C2[] = {
  NSPAIR(_ZN7S6387C2C1Ev),
  NSPAIR(_ZN7S6387C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6387C2[];
extern void _ZN7S6387C22v1Ev();
extern void _ZN7S6387C22v2Ev();
static  VTBL_ENTRY vtc_S6387C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6387C2[0]),
  (VTBL_ENTRY)&_ZN7S6387C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6387C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6387C2[];
extern  VTBL_ENTRY _ZTV7S6387C2[];
Class_Descriptor cd_S6387C2 = {  "S6387C2", // class name
  0,0,//no base classes
  &(vtc_S6387C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6387C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6387C2),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  S6387C1  : S6387C2 {
  int s6387c1f0[3];
  __tsi64 s6387c1f1;
  char s6387c1f2;
  long double s6387c1f3;
  ::S6387C2 s6387c1f4;
  void *s6387c1f5;
  __tsi64 s6387c1f6;
  ~S6387C1(); // tgen
  S6387C1(); // tgen
};
//SIG(1 S6387C1) C1{ BC2{ v1 v2 Fc Fp[3] Fc:1 Fs:6} Fi[3] FL Fc FD FC2 Fp FL}


S6387C1 ::~S6387C1(){ note_dtor("S6387C1", this);} // tgen
S6387C1 ::S6387C1(){ note_ctor("S6387C1", this);} // tgen

static void Test_S6387C1()
{
  extern Class_Descriptor cd_S6387C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,25)];
    init_test(&cd_S6387C1, buf);
    S6387C1 *dp, &lv = *(dp=new (buf) S6387C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,96), "sizeof(S6387C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6387C1)");
    check_base_class_offset(lv, (S6387C2*), 0, "S6387C1");
    check_field_offset(lv, s6387c1f0, ABISELECT(44,24), "S6387C1.s6387c1f0");
    check_field_offset(lv, s6387c1f1, ABISELECT(56,36), "S6387C1.s6387c1f1");
    check_field_offset(lv, s6387c1f2, ABISELECT(64,44), "S6387C1.s6387c1f2");
    check_field_offset(lv, s6387c1f3, ABISELECT(80,48), "S6387C1.s6387c1f3");
    check_field_offset(lv, s6387c1f4, ABISELECT(96,60), "S6387C1.s6387c1f4");
    check_field_offset(lv, s6387c1f5, ABISELECT(144,84), "S6387C1.s6387c1f5");
    check_field_offset(lv, s6387c1f6, ABISELECT(152,88), "S6387C1.s6387c1f6");
    test_class_info(&lv, &cd_S6387C1);
    dp->~S6387C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6387C1(Test_S6387C1, "S6387C1", ABISELECT(160,96));

#else // __cplusplus

extern void _ZN7S6387C1C1Ev();
extern void _ZN7S6387C1D1Ev();
Name_Map name_map_S6387C1[] = {
  NSPAIR(_ZN7S6387C1C1Ev),
  NSPAIR(_ZN7S6387C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6387C2;
extern VTBL_ENTRY _ZTI7S6387C2[];
extern  VTBL_ENTRY _ZTV7S6387C2[];
static Base_Class bases_S6387C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6387C2,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6387C1[];
extern void _ZN7S6387C22v1Ev();
extern void _ZN7S6387C22v2Ev();
static  VTBL_ENTRY vtc_S6387C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6387C1[0]),
  (VTBL_ENTRY)&_ZN7S6387C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6387C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6387C1[];
extern  VTBL_ENTRY _ZTV7S6387C1[];
Class_Descriptor cd_S6387C1 = {  "S6387C1", // class name
  bases_S6387C1, 1,
  &(vtc_S6387C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,96), // object size
  NSPAIRA(_ZTI7S6387C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6387C1),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  S3380C3  {
  short s3380c3f0[6];
  virtual void  v7(); // _ZN7S3380C32v7Ev
  virtual void  v8(); // _ZN7S3380C32v8Ev
  ~S3380C3(); // tgen
  S3380C3(); // tgen
};
//SIG(-1 S3380C3) C1{ v1 v2 Fs[6]}


void  S3380C3 ::v7(){vfunc_called(this, "_ZN7S3380C32v7Ev");}
void  S3380C3 ::v8(){vfunc_called(this, "_ZN7S3380C32v8Ev");}
S3380C3 ::~S3380C3(){ note_dtor("S3380C3", this);} // tgen
S3380C3 ::S3380C3(){ note_ctor("S3380C3", this);} // tgen

static void Test_S3380C3()
{
  extern Class_Descriptor cd_S3380C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3380C3, buf);
    S3380C3 *dp, &lv = *(dp=new (buf) S3380C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3380C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3380C3)");
    check_field_offset(lv, s3380c3f0, ABISELECT(8,4), "S3380C3.s3380c3f0");
    test_class_info(&lv, &cd_S3380C3);
    dp->~S3380C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3380C3(Test_S3380C3, "S3380C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3380C3C1Ev();
extern void _ZN7S3380C3D1Ev();
Name_Map name_map_S3380C3[] = {
  NSPAIR(_ZN7S3380C3C1Ev),
  NSPAIR(_ZN7S3380C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3380C3[];
extern void _ZN7S3380C32v7Ev();
extern void _ZN7S3380C32v8Ev();
static  VTBL_ENTRY vtc_S3380C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3380C3[0]),
  (VTBL_ENTRY)&_ZN7S3380C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3380C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S3380C3[];
extern  VTBL_ENTRY _ZTV7S3380C3[];
Class_Descriptor cd_S3380C3 = {  "S3380C3", // class name
  0,0,//no base classes
  &(vtc_S3380C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3380C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3380C3),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  S3380C2  : S3380C3 {
  void *s3380c2f0;
  virtual void  v9(); // _ZN7S3380C22v9Ev
  virtual void  v10(); // _ZN7S3380C23v10Ev
  ~S3380C2(); // tgen
  S3380C2(); // tgen
};
//SIG(-1 S3380C2) C1{ BC2{ v3 v4 Fs[6]} v1 v2 Fp}


void  S3380C2 ::v9(){vfunc_called(this, "_ZN7S3380C22v9Ev");}
void  S3380C2 ::v10(){vfunc_called(this, "_ZN7S3380C23v10Ev");}
S3380C2 ::~S3380C2(){ note_dtor("S3380C2", this);} // tgen
S3380C2 ::S3380C2(){ note_ctor("S3380C2", this);} // tgen

static void Test_S3380C2()
{
  extern Class_Descriptor cd_S3380C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3380C2, buf);
    S3380C2 *dp, &lv = *(dp=new (buf) S3380C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3380C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3380C2)");
    check_base_class_offset(lv, (S3380C3*), 0, "S3380C2");
    check_field_offset(lv, s3380c2f0, ABISELECT(24,16), "S3380C2.s3380c2f0");
    test_class_info(&lv, &cd_S3380C2);
    dp->~S3380C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3380C2(Test_S3380C2, "S3380C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3380C2C1Ev();
extern void _ZN7S3380C2D1Ev();
Name_Map name_map_S3380C2[] = {
  NSPAIR(_ZN7S3380C2C1Ev),
  NSPAIR(_ZN7S3380C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3380C3;
extern VTBL_ENTRY _ZTI7S3380C3[];
extern  VTBL_ENTRY _ZTV7S3380C3[];
static Base_Class bases_S3380C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S3380C2[];
extern void _ZN7S3380C32v7Ev();
extern void _ZN7S3380C32v8Ev();
extern void _ZN7S3380C22v9Ev();
extern void _ZN7S3380C23v10Ev();
static  VTBL_ENTRY vtc_S3380C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3380C2[0]),
  (VTBL_ENTRY)&_ZN7S3380C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3380C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3380C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3380C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S3380C2[];
extern  VTBL_ENTRY _ZTV7S3380C2[];
Class_Descriptor cd_S3380C2 = {  "S3380C2", // class name
  bases_S3380C2, 1,
  &(vtc_S3380C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3380C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3380C2),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  S3380C1  : S3380C2 , virtual S3380C3 {
  virtual void  v1(); // _ZN7S3380C12v1Ev
  virtual void  v2(); // _ZN7S3380C12v2Ev
  virtual void  v3(); // _ZN7S3380C12v3Ev
  virtual void  v4(); // _ZN7S3380C12v4Ev
  virtual void  v5(); // _ZN7S3380C12v5Ev
  virtual void  v6(); // _ZN7S3380C12v6Ev
  ~S3380C1(); // tgen
  S3380C1(); // tgen
};
//SIG(1 S3380C1) C1{ BC2{ BC3{ v7 v8 Fs[6]} v9 v10 Fp} VBC3 v1 v2 v3 v4 v5 v6}


void  S3380C1 ::v1(){vfunc_called(this, "_ZN7S3380C12v1Ev");}
void  S3380C1 ::v2(){vfunc_called(this, "_ZN7S3380C12v2Ev");}
void  S3380C1 ::v3(){vfunc_called(this, "_ZN7S3380C12v3Ev");}
void  S3380C1 ::v4(){vfunc_called(this, "_ZN7S3380C12v4Ev");}
void  S3380C1 ::v5(){vfunc_called(this, "_ZN7S3380C12v5Ev");}
void  S3380C1 ::v6(){vfunc_called(this, "_ZN7S3380C12v6Ev");}
S3380C1 ::~S3380C1(){ note_dtor("S3380C1", this);} // tgen
S3380C1 ::S3380C1(){ note_ctor("S3380C1", this);} // tgen

static void Test_S3380C1()
{
  extern Class_Descriptor cd_S3380C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3380C1, buf);
    S3380C1 *dp, &lv = *(dp=new (buf) S3380C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3380C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3380C1)");
    check_base_class_offset(lv, (S3380C3*)(S3380C2*), 0, "S3380C1");
    check_base_class_offset(lv, (S3380C2*), 0, "S3380C1");
    /*is_ambiguous_... S3380C1::S3380C3 */ AMB_check_base_class_offset(lv, (S3380C3*), ABISELECT(32,20), "S3380C1");
    test_class_info(&lv, &cd_S3380C1);
    dp->~S3380C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3380C1(Test_S3380C1, "S3380C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3380C1C1Ev();
extern void _ZN7S3380C1D1Ev();
Name_Map name_map_S3380C1[] = {
  NSPAIR(_ZN7S3380C1C1Ev),
  NSPAIR(_ZN7S3380C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3380C3;
extern VTBL_ENTRY _ZTI7S3380C3[];
extern  VTBL_ENTRY _ZTV7S3380C3[];
extern Class_Descriptor cd_S3380C2;
extern VTBL_ENTRY _ZTI7S3380C2[];
extern  VTBL_ENTRY _ZTV7S3380C2[];
extern Class_Descriptor cd_S3380C3;
extern VTBL_ENTRY _ZTI7S3380C3[];
extern  VTBL_ENTRY _ZTV7S3380C3[];
static Base_Class bases_S3380C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S3380C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3380C3,    ABISELECT(32,20), //bcp->offset
    13, //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},
  {0}};
extern VTBL_ENTRY _ZTI7S3380C1[];
extern void _ZN7S3380C32v7Ev();
extern void _ZN7S3380C32v8Ev();
extern void _ZN7S3380C22v9Ev();
extern void _ZN7S3380C23v10Ev();
extern void _ZN7S3380C12v1Ev();
extern void _ZN7S3380C12v2Ev();
extern void _ZN7S3380C12v3Ev();
extern void _ZN7S3380C12v4Ev();
extern void _ZN7S3380C12v5Ev();
extern void _ZN7S3380C12v6Ev();
extern void _ZN7S3380C32v7Ev();
extern void _ZN7S3380C32v8Ev();
static  VTBL_ENTRY vtc_S3380C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3380C1[0]),
  (VTBL_ENTRY)&_ZN7S3380C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3380C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3380C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3380C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3380C12v6Ev,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3380C1[0]),
  (VTBL_ENTRY)&_ZN7S3380C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3380C32v8Ev,
};
extern VTBL_ENTRY _ZTV7S3380C1[];
static  VTT_ENTRY vtt_S3380C1[] = {
  {&(_ZTV7S3380C1[3]),  3,19},
  {&(_ZTV7S3380C1[17]),  17,19},
};
extern VTBL_ENTRY _ZTI7S3380C1[];
extern  VTBL_ENTRY _ZTV7S3380C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3380C1[];
Class_Descriptor cd_S3380C1 = {  "S3380C1", // class name
  bases_S3380C1, 3,
  &(vtc_S3380C1[0]), // expected_vtbl_contents
  &(vtt_S3380C1[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3380C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3380C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3380C1),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  S19180C4  : virtual S19169C6_nt {
  __tsi64 s19180c4f0;
  ~S19180C4(); // tgen
  S19180C4(); // tgen
};
//SIG(-1 S19180C4) C1{ VBC2{ m Fp[6]} FL}


S19180C4 ::~S19180C4(){ note_dtor("S19180C4", this);} // tgen
S19180C4 ::S19180C4(){ note_ctor("S19180C4", this);} // tgen

static void Test_S19180C4()
{
  extern Class_Descriptor cd_S19180C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19180C4, buf);
    S19180C4 *dp, &lv = *(dp=new (buf) S19180C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19180C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19180C4)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S19180C4");
    check_field_offset(lv, s19180c4f0, ABISELECT(8,4), "S19180C4.s19180c4f0");
    test_class_info(&lv, &cd_S19180C4);
    dp->~S19180C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19180C4(Test_S19180C4, "S19180C4", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19180C4C1Ev();
extern void _ZN8S19180C4D1Ev();
Name_Map name_map_S19180C4[] = {
  NSPAIR(_ZN8S19180C4C1Ev),
  NSPAIR(_ZN8S19180C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19180C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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},
  {0}};
extern VTBL_ENTRY _ZTI8S19180C4[];
static  VTBL_ENTRY vtc_S19180C4[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C4[0]),
};
extern VTBL_ENTRY _ZTV8S19180C4[];
static  VTT_ENTRY vtt_S19180C4[] = {
  {&(_ZTV8S19180C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19180C4[];
extern  VTBL_ENTRY _ZTV8S19180C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C4[];
Class_Descriptor cd_S19180C4 = {  "S19180C4", // class name
  bases_S19180C4, 1,
  &(vtc_S19180C4[0]), // expected_vtbl_contents
  &(vtt_S19180C4[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19180C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19180C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19180C4),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  S19180C5  : virtual S19169C6_nt {
  ~S19180C5(); // tgen
  S19180C5(); // tgen
};
//SIG(-1 S19180C5) C1{ VBC2{ m Fp[6]}}


S19180C5 ::~S19180C5(){ note_dtor("S19180C5", this);} // tgen
S19180C5 ::S19180C5(){ note_ctor("S19180C5", this);} // tgen

static void Test_S19180C5()
{
  extern Class_Descriptor cd_S19180C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19180C5, buf);
    S19180C5 *dp, &lv = *(dp=new (buf) S19180C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19180C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19180C5)");
    check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(8,4), "S19180C5");
    test_class_info(&lv, &cd_S19180C5);
    dp->~S19180C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19180C5(Test_S19180C5, "S19180C5", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19180C5C1Ev();
extern void _ZN8S19180C5D1Ev();
Name_Map name_map_S19180C5[] = {
  NSPAIR(_ZN8S19180C5C1Ev),
  NSPAIR(_ZN8S19180C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
static Base_Class bases_S19180C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19180C5[];
static  VTBL_ENTRY vtc_S19180C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C5[0]),
};
extern VTBL_ENTRY _ZTV8S19180C5[];
static  VTT_ENTRY vtt_S19180C5[] = {
  {&(_ZTV8S19180C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19180C5[];
extern  VTBL_ENTRY _ZTV8S19180C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C5[];
Class_Descriptor cd_S19180C5 = {  "S19180C5", // class name
  bases_S19180C5, 1,
  &(vtc_S19180C5[0]), // expected_vtbl_contents
  &(vtt_S19180C5[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19180C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19180C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19180C5),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  S19180C2  : S19169C6_nt , S19180C4 , virtual S19180C5 {
  ~S19180C2(); // tgen
  S19180C2(); // tgen
};
//SIG(-1 S19180C2) C1{ BC2{ m Fp[6]} BC3{ VBC2 FL} VBC4{ VBC2}}


S19180C2 ::~S19180C2(){ note_dtor("S19180C2", this);} // tgen
S19180C2 ::S19180C2(){ note_ctor("S19180C2", this);} // tgen

static void Test_S19180C2()
{
  extern Class_Descriptor cd_S19180C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19180C2, buf);
    S19180C2 *dp, &lv = *(dp=new (buf) S19180C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19180C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19180C2)");
    /*is_ambiguous_... S19180C2::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*), ABISELECT(16,12), "S19180C2");
    check_base_class_offset(lv, (S19169C6_nt*)(S19180C4*), ABISELECT(64,36), "S19180C2");
    check_base_class_offset(lv, (S19169C6_nt*)(S19180C5*), ABISELECT(64,36), "S19180C2");
    check_base_class_offset(lv, (S19180C4*), 0, "S19180C2");
    check_base_class_offset(lv, (S19180C5*), ABISELECT(112,60), "S19180C2");
    test_class_info(&lv, &cd_S19180C2);
    dp->~S19180C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19180C2(Test_S19180C2, "S19180C2", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S19180C2C1Ev();
extern void _ZN8S19180C2D1Ev();
Name_Map name_map_S19180C2[] = {
  NSPAIR(_ZN8S19180C2C1Ev),
  NSPAIR(_ZN8S19180C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19180C4;
extern VTBL_ENTRY _ZTI8S19180C4[];
extern  VTBL_ENTRY _ZTV8S19180C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C4[];
extern Class_Descriptor cd_S19180C5;
extern VTBL_ENTRY _ZTI8S19180C5[];
extern  VTBL_ENTRY _ZTV8S19180C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C5[];
static Base_Class bases_S19180C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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_S19169C6_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
    2, //immediately_derived
  0, 1},
  {&cd_S19180C4,    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_S19180C5,    ABISELECT(112,60), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19180C2[];
static  VTBL_ENTRY vtc_S19180C2[] = {
  ABISELECT(112,60),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C2[0]),
  ABISELECT(-48,-24),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19180C2[0]),
};
extern VTBL_ENTRY _ZTV8S19180C2[];
static  VTBL_ENTRY _tg__ZTV8S19180C4__8S19180C2[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19180C5__8S19180C2[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C5[0]),
};
static  VTT_ENTRY vtt_S19180C2[] = {
  {&(_ZTV8S19180C2[4]),  4,7},
  {&(_tg__ZTV8S19180C4__8S19180C2[3]),  3,3},
  {&(_ZTV8S19180C2[7]),  7,7},
  {&(_tg__ZTV8S19180C5__8S19180C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19180C2[];
extern  VTBL_ENTRY _ZTV8S19180C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C2[];
Class_Descriptor cd_S19180C2 = {  "S19180C2", // class name
  bases_S19180C2, 4,
  &(vtc_S19180C2[0]), // expected_vtbl_contents
  &(vtt_S19180C2[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S19180C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19180C2),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19180C2),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  S19180C1  : virtual S19180C2 , virtual S19169C16_nt {
  ~S19180C1(); // tgen
  S19180C1(); // tgen
};
//SIG(1 S19180C1) C1{ VBC2{ BC3{ m Fp[6]} BC4{ VBC3 FL} VBC5{ VBC3}} VBC6{ m FC7{ VBC3 FL}}}


S19180C1 ::~S19180C1(){ note_dtor("S19180C1", this);} // tgen
S19180C1 ::S19180C1(){ note_ctor("S19180C1", this);} // tgen

static void Test_S19180C1()
{
  extern Class_Descriptor cd_S19180C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,26)];
    init_test(&cd_S19180C1, buf);
    S19180C1 *dp, &lv = *(dp=new (buf) S19180C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,100), "sizeof(S19180C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19180C1)");
    /*is_ambiguous_... S19180C2::S19169C6_nt */ AMB_check_base_class_offset(lv, (S19169C6_nt*)(S19180C2*), ABISELECT(24,16), "S19180C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19180C4*)(S19180C2*), ABISELECT(72,40), "S19180C1");
    check_base_class_offset(lv, (S19169C6_nt*)(S19180C5*), ABISELECT(72,40), "S19180C1");
    check_base_class_offset(lv, (S19180C4*)(S19180C2*), ABISELECT(8,4), "S19180C1");
    check_base_class_offset(lv, (S19180C5*)(S19180C2*), 0, "S19180C1");
    check_base_class_offset(lv, (S19180C2*), ABISELECT(8,4), "S19180C1");
    check_base_class_offset(lv, (S19169C16_nt*), ABISELECT(120,64), "S19180C1");
    test_class_info(&lv, &cd_S19180C1);
    dp->~S19180C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19180C1(Test_S19180C1, "S19180C1", ABISELECT(184,100));

#else // __cplusplus

extern void _ZN8S19180C1C1Ev();
extern void _ZN8S19180C1D1Ev();
Name_Map name_map_S19180C1[] = {
  NSPAIR(_ZN8S19180C1C1Ev),
  NSPAIR(_ZN8S19180C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19169C6_nt;
extern VTBL_ENTRY _ZTI11S19169C6_nt[];
extern Class_Descriptor cd_S19180C4;
extern VTBL_ENTRY _ZTI8S19180C4[];
extern  VTBL_ENTRY _ZTV8S19180C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C4[];
extern Class_Descriptor cd_S19180C5;
extern VTBL_ENTRY _ZTI8S19180C5[];
extern  VTBL_ENTRY _ZTV8S19180C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C5[];
extern Class_Descriptor cd_S19180C2;
extern VTBL_ENTRY _ZTI8S19180C2[];
extern  VTBL_ENTRY _ZTV8S19180C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C2[];
extern Class_Descriptor cd_S19169C16_nt;
extern VTBL_ENTRY _ZTI12S19169C16_nt[];
static Base_Class bases_S19180C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C6_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
    4, //immediately_derived
  0, 0},
  {&cd_S19169C6_nt,    ABISELECT(72,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
    2, //immediately_derived
  0, 1},
  {&cd_S19180C4,    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
    4, //immediately_derived
  0, 0},
  {&cd_S19180C5,    0, //bcp->offset
    -1, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19180C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S19169C16_nt,    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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19180C1[];
static  VTBL_ENTRY vtc_S19180C1[] = {
  ABISELECT(120,64),
  0,
  ABISELECT(8,4),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19180C1[0]),
};
extern VTBL_ENTRY _ZTV8S19180C1[];
static  VTBL_ENTRY _tg__ZTV8S19180C2__8S19180C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19180C48S19180C2__8S19180C1[] = {
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19180C5__8S19180C2__8S19180C1[] = {
  ABISELECT(72,40),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19180C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19180C5__8S19180C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19180C5[0]),
};
static  VTT_ENTRY vtt_S19180C1[] = {
  {&(_ZTV8S19180C1[6]),  6,10},
  {&(_ZTV8S19180C1[10]),  10,10},
  {&(_ZTV8S19180C1[6]),  6,10},
  {&(_tg__ZTV8S19180C2__8S19180C1[4]),  4,4},
  {&(_tg__ZTV8S19180C48S19180C2__8S19180C1[3]),  3,3},
  {&(_tg__ZTV8S19180C5__8S19180C2__8S19180C1[3]),  3,3},
  {&(_tg__ZTV8S19180C5__8S19180C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19180C1[];
extern  VTBL_ENTRY _ZTV8S19180C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19180C1[];
Class_Descriptor cd_S19180C1 = {  "S19180C1", // class name
  bases_S19180C1, 6,
  &(vtc_S19180C1[0]), // expected_vtbl_contents
  &(vtt_S19180C1[0]), // expected_vtt_contents
  ABISELECT(184,100), // object size
  NSPAIRA(_ZTI8S19180C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19180C1),10, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19180C1),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  S19310C3  {
  virtual void  v2(); // _ZN8S19310C32v2Ev
  virtual void  v3(); // _ZN8S19310C32v3Ev
  virtual void  v4(); // _ZN8S19310C32v4Ev
  ~S19310C3(); // tgen
  S19310C3(); // tgen
};
//SIG(-1 S19310C3) C1{ v1 v2 v3}


void  S19310C3 ::v2(){vfunc_called(this, "_ZN8S19310C32v2Ev");}
void  S19310C3 ::v3(){vfunc_called(this, "_ZN8S19310C32v3Ev");}
void  S19310C3 ::v4(){vfunc_called(this, "_ZN8S19310C32v4Ev");}
S19310C3 ::~S19310C3(){ note_dtor("S19310C3", this);} // tgen
S19310C3 ::S19310C3(){ note_ctor("S19310C3", this);} // tgen

static void Test_S19310C3()
{
  extern Class_Descriptor cd_S19310C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19310C3, buf);
    S19310C3 *dp, &lv = *(dp=new (buf) S19310C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19310C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19310C3)");
    test_class_info(&lv, &cd_S19310C3);
    dp->~S19310C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19310C3(Test_S19310C3, "S19310C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19310C3C1Ev();
extern void _ZN8S19310C3D1Ev();
Name_Map name_map_S19310C3[] = {
  NSPAIR(_ZN8S19310C3C1Ev),
  NSPAIR(_ZN8S19310C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19310C3[];
extern void _ZN8S19310C32v2Ev();
extern void _ZN8S19310C32v3Ev();
extern void _ZN8S19310C32v4Ev();
static  VTBL_ENTRY vtc_S19310C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19310C3[0]),
  (VTBL_ENTRY)&_ZN8S19310C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S19310C3[];
extern  VTBL_ENTRY _ZTV8S19310C3[];
Class_Descriptor cd_S19310C3 = {  "S19310C3", // class name
  0,0,//no base classes
  &(vtc_S19310C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19310C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19310C3),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  S19310C2  : S19310C3 {
  ::S19310C3 s19310c2f0;
  virtual void  v5(); // _ZN8S19310C22v5Ev
  virtual void  v6(); // _ZN8S19310C22v6Ev
  virtual void  v7(); // _ZN8S19310C22v7Ev
  ~S19310C2(); // tgen
  S19310C2(); // tgen
};
//SIG(-1 S19310C2) C1{ BC2{ v4 v5 v6} v1 v2 v3 FC2}


void  S19310C2 ::v5(){vfunc_called(this, "_ZN8S19310C22v5Ev");}
void  S19310C2 ::v6(){vfunc_called(this, "_ZN8S19310C22v6Ev");}
void  S19310C2 ::v7(){vfunc_called(this, "_ZN8S19310C22v7Ev");}
S19310C2 ::~S19310C2(){ note_dtor("S19310C2", this);} // tgen
S19310C2 ::S19310C2(){ note_ctor("S19310C2", this);} // tgen

static void Test_S19310C2()
{
  extern Class_Descriptor cd_S19310C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19310C2, buf);
    S19310C2 *dp, &lv = *(dp=new (buf) S19310C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19310C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19310C2)");
    check_base_class_offset(lv, (S19310C3*), 0, "S19310C2");
    check_field_offset(lv, s19310c2f0, ABISELECT(8,4), "S19310C2.s19310c2f0");
    test_class_info(&lv, &cd_S19310C2);
    dp->~S19310C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19310C2(Test_S19310C2, "S19310C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19310C2C1Ev();
extern void _ZN8S19310C2D1Ev();
Name_Map name_map_S19310C2[] = {
  NSPAIR(_ZN8S19310C2C1Ev),
  NSPAIR(_ZN8S19310C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19310C3;
extern VTBL_ENTRY _ZTI8S19310C3[];
extern  VTBL_ENTRY _ZTV8S19310C3[];
static Base_Class bases_S19310C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19310C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI8S19310C2[];
extern void _ZN8S19310C32v2Ev();
extern void _ZN8S19310C32v3Ev();
extern void _ZN8S19310C32v4Ev();
extern void _ZN8S19310C22v5Ev();
extern void _ZN8S19310C22v6Ev();
extern void _ZN8S19310C22v7Ev();
static  VTBL_ENTRY vtc_S19310C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19310C2[0]),
  (VTBL_ENTRY)&_ZN8S19310C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v5Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v6Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S19310C2[];
extern  VTBL_ENTRY _ZTV8S19310C2[];
Class_Descriptor cd_S19310C2 = {  "S19310C2", // class name
  bases_S19310C2, 1,
  &(vtc_S19310C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19310C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19310C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19310C4  {
  virtual void  v8(); // _ZN8S19310C42v8Ev
  virtual void  v9(); // _ZN8S19310C42v9Ev
  ~S19310C4(); // tgen
  S19310C4(); // tgen
};
//SIG(-1 S19310C4) C1{ v1 v2}


void  S19310C4 ::v8(){vfunc_called(this, "_ZN8S19310C42v8Ev");}
void  S19310C4 ::v9(){vfunc_called(this, "_ZN8S19310C42v9Ev");}
S19310C4 ::~S19310C4(){ note_dtor("S19310C4", this);} // tgen
S19310C4 ::S19310C4(){ note_ctor("S19310C4", this);} // tgen

static void Test_S19310C4()
{
  extern Class_Descriptor cd_S19310C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19310C4, buf);
    S19310C4 *dp, &lv = *(dp=new (buf) S19310C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19310C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19310C4)");
    test_class_info(&lv, &cd_S19310C4);
    dp->~S19310C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19310C4(Test_S19310C4, "S19310C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19310C4C1Ev();
extern void _ZN8S19310C4D1Ev();
Name_Map name_map_S19310C4[] = {
  NSPAIR(_ZN8S19310C4C1Ev),
  NSPAIR(_ZN8S19310C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19310C4[];
extern void _ZN8S19310C42v8Ev();
extern void _ZN8S19310C42v9Ev();
static  VTBL_ENTRY vtc_S19310C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19310C4[0]),
  (VTBL_ENTRY)&_ZN8S19310C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19310C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S19310C4[];
extern  VTBL_ENTRY _ZTV8S19310C4[];
Class_Descriptor cd_S19310C4 = {  "S19310C4", // class name
  0,0,//no base classes
  &(vtc_S19310C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19310C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19310C4),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  S19310C1  : virtual S19310C2 , virtual S19310C4 {
  virtual  ~S19310C1(); // _ZN8S19310C1D2Ev
  virtual void  v1(); // _ZN8S19310C12v1Ev
  S19310C1(); // tgen
};
//SIG(1 S19310C1) C1{ VBC2{ BC3{ v2 v3 v4} v5 v6 v7 FC3} VBC4{ v8 v9} vd v1}


 S19310C1 ::~S19310C1(){ note_dtor("S19310C1", this);}
void  S19310C1 ::v1(){vfunc_called(this, "_ZN8S19310C12v1Ev");}
S19310C1 ::S19310C1(){ note_ctor("S19310C1", this);} // tgen

static void Test_S19310C1()
{
  extern Class_Descriptor cd_S19310C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19310C1, buf);
    S19310C1 *dp, &lv = *(dp=new (buf) S19310C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19310C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19310C1)");
    check_base_class_offset(lv, (S19310C3*)(S19310C2*), ABISELECT(8,4), "S19310C1");
    check_base_class_offset(lv, (S19310C2*), ABISELECT(8,4), "S19310C1");
    check_base_class_offset(lv, (S19310C4*), 0, "S19310C1");
    test_class_info(&lv, &cd_S19310C1);
    dp->~S19310C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19310C1(Test_S19310C1, "S19310C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19310C1C1Ev();
extern void _ZN8S19310C1D2Ev();
Name_Map name_map_S19310C1[] = {
  NSPAIR(_ZN8S19310C1C1Ev),
  NSPAIR(_ZN8S19310C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19310C3;
extern VTBL_ENTRY _ZTI8S19310C3[];
extern  VTBL_ENTRY _ZTV8S19310C3[];
extern Class_Descriptor cd_S19310C2;
extern VTBL_ENTRY _ZTI8S19310C2[];
extern  VTBL_ENTRY _ZTV8S19310C2[];
extern Class_Descriptor cd_S19310C4;
extern VTBL_ENTRY _ZTI8S19310C4[];
extern  VTBL_ENTRY _ZTV8S19310C4[];
static Base_Class bases_S19310C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19310C3,    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_S19310C2,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //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_S19310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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 _ZTI8S19310C1[];
extern void _ZN8S19310C42v8Ev();
extern void _ZN8S19310C42v9Ev();
extern void _ZN8S19310C1D1Ev();
extern void _ZN8S19310C1D0Ev();
extern void _ZN8S19310C12v1Ev();
extern void _ZN8S19310C32v2Ev();
extern void _ZN8S19310C32v3Ev();
extern void _ZN8S19310C32v4Ev();
extern void _ZN8S19310C22v5Ev();
extern void _ZN8S19310C22v6Ev();
extern void _ZN8S19310C22v7Ev();
static  VTBL_ENTRY vtc_S19310C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19310C1[0]),
  (VTBL_ENTRY)&_ZN8S19310C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19310C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19310C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19310C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19310C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19310C1[0]),
  (VTBL_ENTRY)&_ZN8S19310C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19310C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v5Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v6Ev,
  (VTBL_ENTRY)&_ZN8S19310C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S19310C1[];
static  VTT_ENTRY vtt_S19310C1[] = {
  {&(_ZTV8S19310C1[6]),  6,25},
  {&(_ZTV8S19310C1[19]),  19,25},
  {&(_ZTV8S19310C1[6]),  6,25},
};
extern VTBL_ENTRY _ZTI8S19310C1[];
extern  VTBL_ENTRY _ZTV8S19310C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19310C1[];
Class_Descriptor cd_S19310C1 = {  "S19310C1", // class name
  bases_S19310C1, 3,
  &(vtc_S19310C1[0]), // expected_vtbl_contents
  &(vtt_S19310C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19310C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19310C1),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19310C1),3, //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  S21449C1  {
  ::S2014C26 s21449c1f0;
  ::S4952C8_nt s21449c1f1;
  char s21449c1f2;
  int s21449c1f3;
  void  mf21449c1(); // _ZN8S21449C19mf21449c1Ev
  virtual  ~S21449C1(); // _ZN8S21449C1D1Ev
  S21449C1(); // tgen
};
//SIG(1 S21449C1) C1{ vd m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m FL[4]} Fc Fi}


void  S21449C1 ::mf21449c1(){}
 S21449C1 ::~S21449C1(){ note_dtor("S21449C1", this);}
S21449C1 ::S21449C1(){ note_ctor("S21449C1", this);} // tgen

static void Test_S21449C1()
{
  extern Class_Descriptor cd_S21449C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,15)];
    init_test(&cd_S21449C1, buf);
    S21449C1 *dp, &lv = *(dp=new (buf) S21449C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S21449C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21449C1)");
    check_field_offset(lv, s21449c1f0, ABISELECT(8,4), "S21449C1.s21449c1f0");
    check_field_offset(lv, s21449c1f1, ABISELECT(24,16), "S21449C1.s21449c1f1");
    check_field_offset(lv, s21449c1f2, ABISELECT(56,48), "S21449C1.s21449c1f2");
    check_field_offset(lv, s21449c1f3, ABISELECT(60,52), "S21449C1.s21449c1f3");
    test_class_info(&lv, &cd_S21449C1);
    dp->~S21449C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21449C1(Test_S21449C1, "S21449C1", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN8S21449C1C1Ev();
extern void _ZN8S21449C1D1Ev();
Name_Map name_map_S21449C1[] = {
  NSPAIR(_ZN8S21449C1C1Ev),
  NSPAIR(_ZN8S21449C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21449C1[];
extern void _ZN8S21449C1D1Ev();
extern void _ZN8S21449C1D0Ev();
static  VTBL_ENTRY vtc_S21449C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21449C1[0]),
  (VTBL_ENTRY)&_ZN8S21449C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21449C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21449C1[];
extern  VTBL_ENTRY _ZTV8S21449C1[];
Class_Descriptor cd_S21449C1 = {  "S21449C1", // class name
  0,0,//no base classes
  &(vtc_S21449C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI8S21449C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21449C1),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  S7135C2  {
  void *s7135c2f0;
  virtual void  v8(); // _ZN7S7135C22v8Ev
  virtual void  v9(); // _ZN7S7135C22v9Ev
  virtual void  v10(); // _ZN7S7135C23v10Ev
  virtual void  v11(); // _ZN7S7135C23v11Ev
  ~S7135C2(); // tgen
  S7135C2(); // tgen
};
//SIG(-1 S7135C2) C1{ v1 v2 v3 v4 Fp}


void  S7135C2 ::v8(){vfunc_called(this, "_ZN7S7135C22v8Ev");}
void  S7135C2 ::v9(){vfunc_called(this, "_ZN7S7135C22v9Ev");}
void  S7135C2 ::v10(){vfunc_called(this, "_ZN7S7135C23v10Ev");}
void  S7135C2 ::v11(){vfunc_called(this, "_ZN7S7135C23v11Ev");}
S7135C2 ::~S7135C2(){ note_dtor("S7135C2", this);} // tgen
S7135C2 ::S7135C2(){ note_ctor("S7135C2", this);} // tgen

static void Test_S7135C2()
{
  extern Class_Descriptor cd_S7135C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7135C2, buf);
    S7135C2 *dp, &lv = *(dp=new (buf) S7135C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7135C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7135C2)");
    check_field_offset(lv, s7135c2f0, ABISELECT(8,4), "S7135C2.s7135c2f0");
    test_class_info(&lv, &cd_S7135C2);
    dp->~S7135C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7135C2(Test_S7135C2, "S7135C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7135C2C1Ev();
extern void _ZN7S7135C2D1Ev();
Name_Map name_map_S7135C2[] = {
  NSPAIR(_ZN7S7135C2C1Ev),
  NSPAIR(_ZN7S7135C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7135C2[];
extern void _ZN7S7135C22v8Ev();
extern void _ZN7S7135C22v9Ev();
extern void _ZN7S7135C23v10Ev();
extern void _ZN7S7135C23v11Ev();
static  VTBL_ENTRY vtc_S7135C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7135C2[0]),
  (VTBL_ENTRY)&_ZN7S7135C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7135C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7135C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7135C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S7135C2[];
extern  VTBL_ENTRY _ZTV7S7135C2[];
Class_Descriptor cd_S7135C2 = {  "S7135C2", // class name
  0,0,//no base classes
  &(vtc_S7135C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7135C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7135C2),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  S7135C1  : S7135C2 {
  int s7135c1f0[2];
  virtual void  v1(); // _ZN7S7135C12v1Ev
  virtual void  v2(); // _ZN7S7135C12v2Ev
  virtual void  v3(); // _ZN7S7135C12v3Ev
  virtual void  v4(); // _ZN7S7135C12v4Ev
  virtual void  v5(); // _ZN7S7135C12v5Ev
  virtual void  v6(); // _ZN7S7135C12v6Ev
  virtual void  v7(); // _ZN7S7135C12v7Ev
  ~S7135C1(); // tgen
  S7135C1(); // tgen
};
//SIG(1 S7135C1) C1{ BC2{ v8 v9 v10 v11 Fp} v1 v2 v3 v4 v5 v6 v7 Fi[2]}


void  S7135C1 ::v1(){vfunc_called(this, "_ZN7S7135C12v1Ev");}
void  S7135C1 ::v2(){vfunc_called(this, "_ZN7S7135C12v2Ev");}
void  S7135C1 ::v3(){vfunc_called(this, "_ZN7S7135C12v3Ev");}
void  S7135C1 ::v4(){vfunc_called(this, "_ZN7S7135C12v4Ev");}
void  S7135C1 ::v5(){vfunc_called(this, "_ZN7S7135C12v5Ev");}
void  S7135C1 ::v6(){vfunc_called(this, "_ZN7S7135C12v6Ev");}
void  S7135C1 ::v7(){vfunc_called(this, "_ZN7S7135C12v7Ev");}
S7135C1 ::~S7135C1(){ note_dtor("S7135C1", this);} // tgen
S7135C1 ::S7135C1(){ note_ctor("S7135C1", this);} // tgen

static void Test_S7135C1()
{
  extern Class_Descriptor cd_S7135C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7135C1, buf);
    S7135C1 *dp, &lv = *(dp=new (buf) S7135C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7135C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7135C1)");
    check_base_class_offset(lv, (S7135C2*), 0, "S7135C1");
    check_field_offset(lv, s7135c1f0, ABISELECT(16,8), "S7135C1.s7135c1f0");
    test_class_info(&lv, &cd_S7135C1);
    dp->~S7135C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7135C1(Test_S7135C1, "S7135C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7135C1C1Ev();
extern void _ZN7S7135C1D1Ev();
Name_Map name_map_S7135C1[] = {
  NSPAIR(_ZN7S7135C1C1Ev),
  NSPAIR(_ZN7S7135C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7135C2;
extern VTBL_ENTRY _ZTI7S7135C2[];
extern  VTBL_ENTRY _ZTV7S7135C2[];
static Base_Class bases_S7135C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7135C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7135C1[];
extern void _ZN7S7135C22v8Ev();
extern void _ZN7S7135C22v9Ev();
extern void _ZN7S7135C23v10Ev();
extern void _ZN7S7135C23v11Ev();
extern void _ZN7S7135C12v1Ev();
extern void _ZN7S7135C12v2Ev();
extern void _ZN7S7135C12v3Ev();
extern void _ZN7S7135C12v4Ev();
extern void _ZN7S7135C12v5Ev();
extern void _ZN7S7135C12v6Ev();
extern void _ZN7S7135C12v7Ev();
static  VTBL_ENTRY vtc_S7135C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7135C1[0]),
  (VTBL_ENTRY)&_ZN7S7135C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7135C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7135C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7135C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7135C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S7135C1[];
extern  VTBL_ENTRY _ZTV7S7135C1[];
Class_Descriptor cd_S7135C1 = {  "S7135C1", // class name
  bases_S7135C1, 1,
  &(vtc_S7135C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7135C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7135C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7173C2  {
  long s7173c2f0[5];
  void *s7173c2f1;
  virtual void  v9(); // _ZN7S7173C22v9Ev
  virtual void  v10(); // _ZN7S7173C23v10Ev
  ~S7173C2(); // tgen
  S7173C2(); // tgen
};
//SIG(-1 S7173C2) C1{ v1 v2 Fl[5] Fp}


void  S7173C2 ::v9(){vfunc_called(this, "_ZN7S7173C22v9Ev");}
void  S7173C2 ::v10(){vfunc_called(this, "_ZN7S7173C23v10Ev");}
S7173C2 ::~S7173C2(){ note_dtor("S7173C2", this);} // tgen
S7173C2 ::S7173C2(){ note_ctor("S7173C2", this);} // tgen

static void Test_S7173C2()
{
  extern Class_Descriptor cd_S7173C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S7173C2, buf);
    S7173C2 *dp, &lv = *(dp=new (buf) S7173C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S7173C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7173C2)");
    check_field_offset(lv, s7173c2f0, ABISELECT(8,4), "S7173C2.s7173c2f0");
    check_field_offset(lv, s7173c2f1, ABISELECT(48,24), "S7173C2.s7173c2f1");
    test_class_info(&lv, &cd_S7173C2);
    dp->~S7173C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7173C2(Test_S7173C2, "S7173C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S7173C2C1Ev();
extern void _ZN7S7173C2D1Ev();
Name_Map name_map_S7173C2[] = {
  NSPAIR(_ZN7S7173C2C1Ev),
  NSPAIR(_ZN7S7173C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7173C2[];
extern void _ZN7S7173C22v9Ev();
extern void _ZN7S7173C23v10Ev();
static  VTBL_ENTRY vtc_S7173C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7173C2[0]),
  (VTBL_ENTRY)&_ZN7S7173C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7173C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7173C2[];
extern  VTBL_ENTRY _ZTV7S7173C2[];
Class_Descriptor cd_S7173C2 = {  "S7173C2", // class name
  0,0,//no base classes
  &(vtc_S7173C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S7173C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7173C2),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  S7173C1  : S7173C2 {
  int s7173c1f0;
  virtual void  v1(); // _ZN7S7173C12v1Ev
  virtual void  v2(); // _ZN7S7173C12v2Ev
  virtual void  v3(); // _ZN7S7173C12v3Ev
  virtual void  v4(); // _ZN7S7173C12v4Ev
  virtual void  v5(); // _ZN7S7173C12v5Ev
  virtual void  v6(); // _ZN7S7173C12v6Ev
  virtual void  v7(); // _ZN7S7173C12v7Ev
  virtual void  v8(); // _ZN7S7173C12v8Ev
  ~S7173C1(); // tgen
  S7173C1(); // tgen
};
//SIG(1 S7173C1) C1{ BC2{ v9 v10 Fl[5] Fp} v1 v2 v3 v4 v5 v6 v7 v8 Fi}


void  S7173C1 ::v1(){vfunc_called(this, "_ZN7S7173C12v1Ev");}
void  S7173C1 ::v2(){vfunc_called(this, "_ZN7S7173C12v2Ev");}
void  S7173C1 ::v3(){vfunc_called(this, "_ZN7S7173C12v3Ev");}
void  S7173C1 ::v4(){vfunc_called(this, "_ZN7S7173C12v4Ev");}
void  S7173C1 ::v5(){vfunc_called(this, "_ZN7S7173C12v5Ev");}
void  S7173C1 ::v6(){vfunc_called(this, "_ZN7S7173C12v6Ev");}
void  S7173C1 ::v7(){vfunc_called(this, "_ZN7S7173C12v7Ev");}
void  S7173C1 ::v8(){vfunc_called(this, "_ZN7S7173C12v8Ev");}
S7173C1 ::~S7173C1(){ note_dtor("S7173C1", this);} // tgen
S7173C1 ::S7173C1(){ note_ctor("S7173C1", this);} // tgen

static void Test_S7173C1()
{
  extern Class_Descriptor cd_S7173C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7173C1, buf);
    S7173C1 *dp, &lv = *(dp=new (buf) S7173C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7173C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7173C1)");
    check_base_class_offset(lv, (S7173C2*), 0, "S7173C1");
    check_field_offset(lv, s7173c1f0, ABISELECT(56,28), "S7173C1.s7173c1f0");
    test_class_info(&lv, &cd_S7173C1);
    dp->~S7173C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7173C1(Test_S7173C1, "S7173C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7173C1C1Ev();
extern void _ZN7S7173C1D1Ev();
Name_Map name_map_S7173C1[] = {
  NSPAIR(_ZN7S7173C1C1Ev),
  NSPAIR(_ZN7S7173C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7173C2;
extern VTBL_ENTRY _ZTI7S7173C2[];
extern  VTBL_ENTRY _ZTV7S7173C2[];
static Base_Class bases_S7173C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7173C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S7173C1[];
extern void _ZN7S7173C22v9Ev();
extern void _ZN7S7173C23v10Ev();
extern void _ZN7S7173C12v1Ev();
extern void _ZN7S7173C12v2Ev();
extern void _ZN7S7173C12v3Ev();
extern void _ZN7S7173C12v4Ev();
extern void _ZN7S7173C12v5Ev();
extern void _ZN7S7173C12v6Ev();
extern void _ZN7S7173C12v7Ev();
extern void _ZN7S7173C12v8Ev();
static  VTBL_ENTRY vtc_S7173C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7173C1[0]),
  (VTBL_ENTRY)&_ZN7S7173C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7173C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7173C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S7173C1[];
extern  VTBL_ENTRY _ZTV7S7173C1[];
Class_Descriptor cd_S7173C1 = {  "S7173C1", // class name
  bases_S7173C1, 1,
  &(vtc_S7173C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7173C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7173C1),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  S11548C2  {
  int s11548c2f0[2];
  __tsi64 s11548c2f1;
  int s11548c2f2[2];
  char s11548c2f3[8];
};
//SIG(-1 S11548C2) C1{ Fi[2] FL Fi[2] Fc[8]}



static void Test_S11548C2()
{
  {
    init_simple_test("S11548C2");
    S11548C2 lv;
    check2(sizeof(lv), 32, "sizeof(S11548C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11548C2)");
    check_field_offset(lv, s11548c2f0, 0, "S11548C2.s11548c2f0");
    check_field_offset(lv, s11548c2f1, 8, "S11548C2.s11548c2f1");
    check_field_offset(lv, s11548c2f2, 16, "S11548C2.s11548c2f2");
    check_field_offset(lv, s11548c2f3, 24, "S11548C2.s11548c2f3");
  }
}
static Arrange_To_Call_Me vS11548C2(Test_S11548C2, "S11548C2", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11548C1  {
  ::S11548C2 s11548c1f0;
  __tsi64 s11548c1f1;
  void *s11548c1f2;
  int s11548c1f3[2];
  void *s11548c1f4;
  int s11548c1f5[2];
};
//SIG(1 S11548C1) C1{ FC2{ Fi[2] FL Fi[2] Fc[8]} FL Fp Fi[2] Fp Fi[2]}



static void Test_S11548C1()
{
  {
    init_simple_test("S11548C1");
    S11548C1 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S11548C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11548C1)");
    check_field_offset(lv, s11548c1f0, 0, "S11548C1.s11548c1f0");
    check_field_offset(lv, s11548c1f1, 32, "S11548C1.s11548c1f1");
    check_field_offset(lv, s11548c1f2, 40, "S11548C1.s11548c1f2");
    check_field_offset(lv, s11548c1f3, ABISELECT(48,44), "S11548C1.s11548c1f3");
    check_field_offset(lv, s11548c1f4, ABISELECT(56,52), "S11548C1.s11548c1f4");
    check_field_offset(lv, s11548c1f5, ABISELECT(64,56), "S11548C1.s11548c1f5");
  }
}
static Arrange_To_Call_Me vS11548C1(Test_S11548C1, "S11548C1", ABISELECT(72,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16262C1  {
  ::S2014C20_nt s16262c1f0;
  int s16262c1f1;
  char s16262c1f2[3];
  ::S3639C14_nt s16262c1f3;
  int s16262c1f4;
  void  mf16262c1(); // _ZN8S16262C19mf16262c1Ev
};
//SIG(1 S16262C1) C1{ m FC2{ m Fp Fi FC3{ m}} Fi Fc[3] FC4{ m Fp[2]} Fi}


void  S16262C1 ::mf16262c1(){}

static void Test_S16262C1()
{
  {
    init_simple_test("S16262C1");
    S16262C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S16262C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16262C1)");
    check_field_offset(lv, s16262c1f0, 0, "S16262C1.s16262c1f0");
    check_field_offset(lv, s16262c1f1, ABISELECT(16,12), "S16262C1.s16262c1f1");
    check_field_offset(lv, s16262c1f2, ABISELECT(20,16), "S16262C1.s16262c1f2");
    check_field_offset(lv, s16262c1f3, ABISELECT(24,20), "S16262C1.s16262c1f3");
    check_field_offset(lv, s16262c1f4, ABISELECT(40,28), "S16262C1.s16262c1f4");
  }
}
static Arrange_To_Call_Me vS16262C1(Test_S16262C1, "S16262C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S409C4  : S2014C41_nt {
  char s409c4f0;
};
//SIG(-1 S409C4) C1{ BC2{ m FL} Fc}



static void Test_S409C4()
{
  extern Class_Descriptor cd_S409C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S409C4, buf);
    S409C4 &lv = *(new (buf) S409C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S409C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S409C4)");
    check_base_class_offset(lv, (S2014C41_nt*), 0, "S409C4");
    check_field_offset(lv, s409c4f0, 8, "S409C4.s409c4f0");
    test_class_info(&lv, &cd_S409C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS409C4(Test_S409C4, "S409C4", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
static Base_Class bases_S409C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S409C4 = {  "S409C4", // class name
  bases_S409C4, 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  S409C3  : S409C4 {
  int s409c3f0;
};
//SIG(-1 S409C3) C1{ BC2{ BC3{ m FL} Fc} Fi}



static void Test_S409C3()
{
  extern Class_Descriptor cd_S409C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S409C3, buf);
    S409C3 &lv = *(new (buf) S409C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S409C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S409C3)");
    check_base_class_offset(lv, (S2014C41_nt*)(S409C4*), 0, "S409C3");
    check_base_class_offset(lv, (S409C4*), 0, "S409C3");
    check_field_offset(lv, s409c3f0, 12, "S409C3.s409c3f0");
    test_class_info(&lv, &cd_S409C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS409C3(Test_S409C3, "S409C3", 16);

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S409C4;
static Base_Class bases_S409C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S409C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S409C3 = {  "S409C3", // class name
  bases_S409C3, 2,
  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  S409C2  : S409C3 {
  ::S3222C4_nt s409c2f0;
};
//SIG(-1 S409C2) C1{ BC2{ BC3{ BC4{ m FL} Fc} Fi} FC5{ m Fi[2]}}



static void Test_S409C2()
{
  extern Class_Descriptor cd_S409C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,7)];
    init_test(&cd_S409C2, buf);
    S409C2 &lv = *(new (buf) S409C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 24, "sizeof(S409C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S409C2)");
    check_base_class_offset(lv, (S2014C41_nt*)(S409C4*)(S409C3*), 0, "S409C2");
    check_base_class_offset(lv, (S409C4*)(S409C3*), 0, "S409C2");
    check_base_class_offset(lv, (S409C3*), 0, "S409C2");
    check_field_offset(lv, s409c2f0, 16, "S409C2.s409c2f0");
    test_class_info(&lv, &cd_S409C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS409C2(Test_S409C2, "S409C2", 24);

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S409C4;
extern Class_Descriptor cd_S409C3;
static Base_Class bases_S409C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S409C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S409C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S409C2 = {  "S409C2", // class name
  bases_S409C2, 3,
  0, // no vftv
  0, //no vtt
  24, // 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  S409C1  : S409C2 {
  ::S3222C4_nt s409c1f0;
};
//SIG(1 S409C1) C1{ BC2{ BC3{ BC4{ BC5{ m FL} Fc} Fi} FC6{ m Fi[2]}} FC6}



static void Test_S409C1()
{
  extern Class_Descriptor cd_S409C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,9)];
    init_test(&cd_S409C1, buf);
    S409C1 &lv = *(new (buf) S409C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 32, "sizeof(S409C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S409C1)");
    check_base_class_offset(lv, (S2014C41_nt*)(S409C4*)(S409C3*)(S409C2*), 0, "S409C1");
    check_base_class_offset(lv, (S409C4*)(S409C3*)(S409C2*), 0, "S409C1");
    check_base_class_offset(lv, (S409C3*)(S409C2*), 0, "S409C1");
    check_base_class_offset(lv, (S409C2*), 0, "S409C1");
    check_field_offset(lv, s409c1f0, 24, "S409C1.s409c1f0");
    test_class_info(&lv, &cd_S409C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS409C1(Test_S409C1, "S409C1", 32);

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S409C4;
extern Class_Descriptor cd_S409C3;
extern Class_Descriptor cd_S409C2;
static Base_Class bases_S409C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S409C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S409C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S409C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S409C1 = {  "S409C1", // class name
  bases_S409C1, 4,
  0, // no vftv
  0, //no vtt
  32, // 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  S3515C4  {
  virtual void  v1(); // _ZN7S3515C42v1Ev
  ~S3515C4(); // tgen
  S3515C4(); // tgen
};
//SIG(-1 S3515C4) C1{ v1}


void  S3515C4 ::v1(){vfunc_called(this, "_ZN7S3515C42v1Ev");}
S3515C4 ::~S3515C4(){ note_dtor("S3515C4", this);} // tgen
S3515C4 ::S3515C4(){ note_ctor("S3515C4", this);} // tgen

static void Test_S3515C4()
{
  extern Class_Descriptor cd_S3515C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3515C4, buf);
    S3515C4 *dp, &lv = *(dp=new (buf) S3515C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3515C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3515C4)");
    test_class_info(&lv, &cd_S3515C4);
    dp->~S3515C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3515C4(Test_S3515C4, "S3515C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3515C4C1Ev();
extern void _ZN7S3515C4D1Ev();
Name_Map name_map_S3515C4[] = {
  NSPAIR(_ZN7S3515C4C1Ev),
  NSPAIR(_ZN7S3515C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3515C4[];
extern void _ZN7S3515C42v1Ev();
static  VTBL_ENTRY vtc_S3515C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C4[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S3515C4[];
extern  VTBL_ENTRY _ZTV7S3515C4[];
Class_Descriptor cd_S3515C4 = {  "S3515C4", // class name
  0,0,//no base classes
  &(vtc_S3515C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3515C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3515C4),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  S3515C3  : virtual S3515C4 {
  int s3515c3f0;
  void *s3515c3f1;
  virtual  ~S3515C3(); // _ZN7S3515C3D2Ev
  virtual void  v2(); // _ZN7S3515C32v2Ev
  virtual void  v3(); // _ZN7S3515C32v3Ev
  S3515C3(); // tgen
};
//SIG(-1 S3515C3) C1{ VBC2{ v3} vd v1 v2 Fi Fp}


 S3515C3 ::~S3515C3(){ note_dtor("S3515C3", this);}
void  S3515C3 ::v2(){vfunc_called(this, "_ZN7S3515C32v2Ev");}
void  S3515C3 ::v3(){vfunc_called(this, "_ZN7S3515C32v3Ev");}
S3515C3 ::S3515C3(){ note_ctor("S3515C3", this);} // tgen

static void Test_S3515C3()
{
  extern Class_Descriptor cd_S3515C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3515C3, buf);
    S3515C3 *dp, &lv = *(dp=new (buf) S3515C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3515C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3515C3)");
    check_base_class_offset(lv, (S3515C4*), 0, "S3515C3");
    check_field_offset(lv, s3515c3f0, ABISELECT(8,4), "S3515C3.s3515c3f0");
    check_field_offset(lv, s3515c3f1, ABISELECT(16,8), "S3515C3.s3515c3f1");
    test_class_info(&lv, &cd_S3515C3);
    dp->~S3515C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3515C3(Test_S3515C3, "S3515C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3515C3C1Ev();
extern void _ZN7S3515C3D2Ev();
Name_Map name_map_S3515C3[] = {
  NSPAIR(_ZN7S3515C3C1Ev),
  NSPAIR(_ZN7S3515C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3515C4;
extern VTBL_ENTRY _ZTI7S3515C4[];
extern  VTBL_ENTRY _ZTV7S3515C4[];
static Base_Class bases_S3515C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3515C4,    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 _ZTI7S3515C3[];
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C3D1Ev();
extern void _ZN7S3515C3D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
static  VTBL_ENTRY vtc_S3515C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C3[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
};
extern VTBL_ENTRY _ZTV7S3515C3[];
static  VTT_ENTRY vtt_S3515C3[] = {
  {&(_ZTV7S3515C3[4]),  4,9},
  {&(_ZTV7S3515C3[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S3515C3[];
extern  VTBL_ENTRY _ZTV7S3515C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C3[];
Class_Descriptor cd_S3515C3 = {  "S3515C3", // class name
  bases_S3515C3, 1,
  &(vtc_S3515C3[0]), // expected_vtbl_contents
  &(vtt_S3515C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3515C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3515C3),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3515C3),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  S3515C2  : S3515C3 {
  long double s3515c2f0[8];
  virtual void  v4(); // _ZN7S3515C22v4Ev
  virtual void  v5(); // _ZN7S3515C22v5Ev
  ~S3515C2(); // tgen
  S3515C2(); // tgen
};
//SIG(-1 S3515C2) C1{ BC2{ VBC3{ v3} vd v4 v5 Fi Fp} v1 v2 FD[8]}


void  S3515C2 ::v4(){vfunc_called(this, "_ZN7S3515C22v4Ev");}
void  S3515C2 ::v5(){vfunc_called(this, "_ZN7S3515C22v5Ev");}
S3515C2 ::~S3515C2(){ note_dtor("S3515C2", this);} // tgen
S3515C2 ::S3515C2(){ note_ctor("S3515C2", this);} // tgen

static void Test_S3515C2()
{
  extern Class_Descriptor cd_S3515C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3515C2, buf);
    S3515C2 *dp, &lv = *(dp=new (buf) S3515C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3515C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3515C2)");
    check_base_class_offset(lv, (S3515C4*)(S3515C3*), 0, "S3515C2");
    check_base_class_offset(lv, (S3515C3*), 0, "S3515C2");
    check_field_offset(lv, s3515c2f0, ABISELECT(32,12), "S3515C2.s3515c2f0");
    test_class_info(&lv, &cd_S3515C2);
    dp->~S3515C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3515C2(Test_S3515C2, "S3515C2", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S3515C2C1Ev();
extern void _ZN7S3515C2D1Ev();
Name_Map name_map_S3515C2[] = {
  NSPAIR(_ZN7S3515C2C1Ev),
  NSPAIR(_ZN7S3515C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3515C4;
extern VTBL_ENTRY _ZTI7S3515C4[];
extern  VTBL_ENTRY _ZTV7S3515C4[];
extern Class_Descriptor cd_S3515C3;
extern VTBL_ENTRY _ZTI7S3515C3[];
extern  VTBL_ENTRY _ZTV7S3515C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C3[];
static Base_Class bases_S3515C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3515C4,    0, //bcp->offset
    -1, //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_S3515C3,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3515C2[];
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C2D1Ev();
extern void _ZN7S3515C2D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
extern void _ZN7S3515C22v4Ev();
extern void _ZN7S3515C22v5Ev();
static  VTBL_ENTRY vtc_S3515C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C2[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v5Ev,
};
extern VTBL_ENTRY _ZTV7S3515C2[];
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C3D1Ev();
extern void _ZN7S3515C3D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3515C3__7S3515C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C3[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
};
static  VTT_ENTRY vtt_S3515C2[] = {
  {&(_ZTV7S3515C2[4]),  4,11},
  {&(_tg__ZTV7S3515C3__7S3515C2[4]),  4,9},
  {&(_tg__ZTV7S3515C3__7S3515C2[4]),  4,9},
  {&(_ZTV7S3515C2[4]),  4,11},
};
extern VTBL_ENTRY _ZTI7S3515C2[];
extern  VTBL_ENTRY _ZTV7S3515C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C2[];
Class_Descriptor cd_S3515C2 = {  "S3515C2", // class name
  bases_S3515C2, 2,
  &(vtc_S3515C2[0]), // expected_vtbl_contents
  &(vtt_S3515C2[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S3515C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3515C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3515C2),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  S3515C1  : S3515C2 {
  ~S3515C1(); // tgen
  S3515C1(); // tgen
};
//SIG(1 S3515C1) C1{ BC2{ BC3{ VBC4{ v1} vd v2 v3 Fi Fp} v4 v5 FD[8]}}


S3515C1 ::~S3515C1(){ note_dtor("S3515C1", this);} // tgen
S3515C1 ::S3515C1(){ note_ctor("S3515C1", this);} // tgen

static void Test_S3515C1()
{
  extern Class_Descriptor cd_S3515C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3515C1, buf);
    S3515C1 *dp, &lv = *(dp=new (buf) S3515C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3515C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3515C1)");
    check_base_class_offset(lv, (S3515C4*)(S3515C3*)(S3515C2*), 0, "S3515C1");
    check_base_class_offset(lv, (S3515C3*)(S3515C2*), 0, "S3515C1");
    check_base_class_offset(lv, (S3515C2*), 0, "S3515C1");
    test_class_info(&lv, &cd_S3515C1);
    dp->~S3515C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3515C1(Test_S3515C1, "S3515C1", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S3515C1C1Ev();
extern void _ZN7S3515C1D1Ev();
Name_Map name_map_S3515C1[] = {
  NSPAIR(_ZN7S3515C1C1Ev),
  NSPAIR(_ZN7S3515C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3515C4;
extern VTBL_ENTRY _ZTI7S3515C4[];
extern  VTBL_ENTRY _ZTV7S3515C4[];
extern Class_Descriptor cd_S3515C3;
extern VTBL_ENTRY _ZTI7S3515C3[];
extern  VTBL_ENTRY _ZTV7S3515C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C3[];
extern Class_Descriptor cd_S3515C2;
extern VTBL_ENTRY _ZTI7S3515C2[];
extern  VTBL_ENTRY _ZTV7S3515C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C2[];
static Base_Class bases_S3515C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3515C4,    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
    1, //immediately_derived
  0, 1},
  {&cd_S3515C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3515C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3515C1[];
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C1D1Ev();
extern void _ZN7S3515C1D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
extern void _ZN7S3515C22v4Ev();
extern void _ZN7S3515C22v5Ev();
static  VTBL_ENTRY vtc_S3515C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C1[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v5Ev,
};
extern VTBL_ENTRY _ZTV7S3515C1[];
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C2D1Ev();
extern void _ZN7S3515C2D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
extern void _ZN7S3515C22v4Ev();
extern void _ZN7S3515C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3515C2__7S3515C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C2[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3515C22v5Ev,
};
extern void _ZN7S3515C42v1Ev();
extern void _ZN7S3515C3D1Ev();
extern void _ZN7S3515C3D0Ev();
extern void _ZN7S3515C32v2Ev();
extern void _ZN7S3515C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3515C37S3515C2__7S3515C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3515C3[0]),
  (VTBL_ENTRY)&_ZN7S3515C42v1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3515C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3515C32v3Ev,
};
static  VTT_ENTRY vtt_S3515C1[] = {
  {&(_ZTV7S3515C1[4]),  4,11},
  {&(_tg__ZTV7S3515C2__7S3515C1[4]),  4,11},
  {&(_tg__ZTV7S3515C37S3515C2__7S3515C1[4]),  4,9},
  {&(_tg__ZTV7S3515C37S3515C2__7S3515C1[4]),  4,9},
  {&(_tg__ZTV7S3515C2__7S3515C1[4]),  4,11},
  {&(_ZTV7S3515C1[4]),  4,11},
};
extern VTBL_ENTRY _ZTI7S3515C1[];
extern  VTBL_ENTRY _ZTV7S3515C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3515C1[];
Class_Descriptor cd_S3515C1 = {  "S3515C1", // class name
  bases_S3515C1, 3,
  &(vtc_S3515C1[0]), // expected_vtbl_contents
  &(vtt_S3515C1[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S3515C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3515C1),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3515C1),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  S11632C2  {
  int s11632c2f0[4];
  __tsi64 s11632c2f1;
  int s11632c2f2[2];
  char s11632c2f3[8];
};
//SIG(-1 S11632C2) C1{ Fi[4] FL Fi[2] Fc[8]}



static void Test_S11632C2()
{
  {
    init_simple_test("S11632C2");
    S11632C2 lv;
    check2(sizeof(lv), 40, "sizeof(S11632C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11632C2)");
    check_field_offset(lv, s11632c2f0, 0, "S11632C2.s11632c2f0");
    check_field_offset(lv, s11632c2f1, 16, "S11632C2.s11632c2f1");
    check_field_offset(lv, s11632c2f2, 24, "S11632C2.s11632c2f2");
    check_field_offset(lv, s11632c2f3, 32, "S11632C2.s11632c2f3");
  }
}
static Arrange_To_Call_Me vS11632C2(Test_S11632C2, "S11632C2", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11632C1  {
  ::S11632C2 s11632c1f0;
  __tsi64 s11632c1f1;
  int s11632c1f2[3];
  void *s11632c1f3;
  int s11632c1f4[2];
};
//SIG(1 S11632C1) C1{ FC2{ Fi[4] FL Fi[2] Fc[8]} FL Fi[3] Fp Fi[2]}



static void Test_S11632C1()
{
  {
    init_simple_test("S11632C1");
    S11632C1 lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S11632C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11632C1)");
    check_field_offset(lv, s11632c1f0, 0, "S11632C1.s11632c1f0");
    check_field_offset(lv, s11632c1f1, 40, "S11632C1.s11632c1f1");
    check_field_offset(lv, s11632c1f2, 48, "S11632C1.s11632c1f2");
    check_field_offset(lv, s11632c1f3, ABISELECT(64,60), "S11632C1.s11632c1f3");
    check_field_offset(lv, s11632c1f4, ABISELECT(72,64), "S11632C1.s11632c1f4");
  }
}
static Arrange_To_Call_Me vS11632C1(Test_S11632C1, "S11632C1", ABISELECT(80,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6597C2  {
  virtual  ~S6597C2(); // _ZN7S6597C2D1Ev
  virtual void  v2(); // _ZN7S6597C22v2Ev
  S6597C2(); // tgen
};
//SIG(-1 S6597C2) C1{ vd v1}


 S6597C2 ::~S6597C2(){ note_dtor("S6597C2", this);}
void  S6597C2 ::v2(){vfunc_called(this, "_ZN7S6597C22v2Ev");}
S6597C2 ::S6597C2(){ note_ctor("S6597C2", this);} // tgen

static void Test_S6597C2()
{
  extern Class_Descriptor cd_S6597C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6597C2, buf);
    S6597C2 *dp, &lv = *(dp=new (buf) S6597C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6597C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6597C2)");
    test_class_info(&lv, &cd_S6597C2);
    dp->~S6597C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6597C2(Test_S6597C2, "S6597C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6597C2C1Ev();
extern void _ZN7S6597C2D1Ev();
Name_Map name_map_S6597C2[] = {
  NSPAIR(_ZN7S6597C2C1Ev),
  NSPAIR(_ZN7S6597C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6597C2[];
extern void _ZN7S6597C2D1Ev();
extern void _ZN7S6597C2D0Ev();
extern void _ZN7S6597C22v2Ev();
static  VTBL_ENTRY vtc_S6597C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6597C2[0]),
  (VTBL_ENTRY)&_ZN7S6597C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6597C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6597C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6597C2[];
extern  VTBL_ENTRY _ZTV7S6597C2[];
Class_Descriptor cd_S6597C2 = {  "S6597C2", // class name
  0,0,//no base classes
  &(vtc_S6597C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6597C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6597C2),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  S6597C1  : S6597C2 {
  void *s6597c1f0[7];
  ::S2014C20_nt s6597c1f1;
  virtual  ~S6597C1(); // _ZN7S6597C1D1Ev
  virtual void  v1(); // _ZN7S6597C12v1Ev
  S6597C1(); // tgen
};
//SIG(1 S6597C1) C1{ BC2{ vd v2} vd v1 Fp[7] FC3{ m Fp Fi FC4{ m}}}


 S6597C1 ::~S6597C1(){ note_dtor("S6597C1", this);}
void  S6597C1 ::v1(){vfunc_called(this, "_ZN7S6597C12v1Ev");}
S6597C1 ::S6597C1(){ note_ctor("S6597C1", this);} // tgen

static void Test_S6597C1()
{
  extern Class_Descriptor cd_S6597C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S6597C1, buf);
    S6597C1 *dp, &lv = *(dp=new (buf) S6597C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S6597C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6597C1)");
    check_base_class_offset(lv, (S6597C2*), 0, "S6597C1");
    check_field_offset(lv, s6597c1f0, ABISELECT(8,4), "S6597C1.s6597c1f0");
    check_field_offset(lv, s6597c1f1, ABISELECT(64,32), "S6597C1.s6597c1f1");
    test_class_info(&lv, &cd_S6597C1);
    dp->~S6597C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6597C1(Test_S6597C1, "S6597C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S6597C1C1Ev();
extern void _ZN7S6597C1D1Ev();
Name_Map name_map_S6597C1[] = {
  NSPAIR(_ZN7S6597C1C1Ev),
  NSPAIR(_ZN7S6597C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6597C2;
extern VTBL_ENTRY _ZTI7S6597C2[];
extern  VTBL_ENTRY _ZTV7S6597C2[];
static Base_Class bases_S6597C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6597C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6597C1[];
extern void _ZN7S6597C1D1Ev();
extern void _ZN7S6597C1D0Ev();
extern void _ZN7S6597C22v2Ev();
extern void _ZN7S6597C12v1Ev();
static  VTBL_ENTRY vtc_S6597C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6597C1[0]),
  (VTBL_ENTRY)&_ZN7S6597C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6597C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6597C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6597C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6597C1[];
extern  VTBL_ENTRY _ZTV7S6597C1[];
Class_Descriptor cd_S6597C1 = {  "S6597C1", // class name
  bases_S6597C1, 1,
  &(vtc_S6597C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S6597C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6597C1),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  S14512C2  {
  void *s14512c2f0[3];
  int s14512c2f1[3];
  char s14512c2f2[3];
};
//SIG(-1 S14512C2) C1{ Fp[3] Fi[3] Fc[3]}



static void Test_S14512C2()
{
  {
    init_simple_test("S14512C2");
    S14512C2 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S14512C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14512C2)");
    check_field_offset(lv, s14512c2f0, 0, "S14512C2.s14512c2f0");
    check_field_offset(lv, s14512c2f1, ABISELECT(24,12), "S14512C2.s14512c2f1");
    check_field_offset(lv, s14512c2f2, ABISELECT(36,24), "S14512C2.s14512c2f2");
  }
}
static Arrange_To_Call_Me vS14512C2(Test_S14512C2, "S14512C2", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14512C1  {
  void *s14512c1f0[2];
  int s14512c1f1;
  void *s14512c1f2;
  int s14512c1f3[3];
  ::S14512C2 s14512c1f4;
};
//SIG(1 S14512C1) C1{ Fp[2] Fi Fp Fi[3] FC2{ Fp[3] Fi[3] Fc[3]}}



static void Test_S14512C1()
{
  {
    init_simple_test("S14512C1");
    S14512C1 lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S14512C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14512C1)");
    check_field_offset(lv, s14512c1f0, 0, "S14512C1.s14512c1f0");
    check_field_offset(lv, s14512c1f1, ABISELECT(16,8), "S14512C1.s14512c1f1");
    check_field_offset(lv, s14512c1f2, ABISELECT(24,12), "S14512C1.s14512c1f2");
    check_field_offset(lv, s14512c1f3, ABISELECT(32,16), "S14512C1.s14512c1f3");
    check_field_offset(lv, s14512c1f4, ABISELECT(48,28), "S14512C1.s14512c1f4");
  }
}
static Arrange_To_Call_Me vS14512C1(Test_S14512C1, "S14512C1", ABISELECT(88,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12054C1  {
  ::S3222C4_nt s12054c1f0;
  int s12054c1f1[2];
  ::S4531C12_nt s12054c1f2;
  int s12054c1f3[9];
  unsigned int s12054c1f4:1;
};
//SIG(1 S12054C1) C1{ FC2{ m Fi[2]} Fi[2] FC3{ m Fi[4]} Fi[9] Fi:1}



static void Test_S12054C1()
{
  {
    init_simple_test("S12054C1");
    static S12054C1 lv;
    check2(sizeof(lv), 72, "sizeof(S12054C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12054C1)");
    check_field_offset(lv, s12054c1f0, 0, "S12054C1.s12054c1f0");
    check_field_offset(lv, s12054c1f1, 8, "S12054C1.s12054c1f1");
    check_field_offset(lv, s12054c1f2, 16, "S12054C1.s12054c1f2");
    check_field_offset(lv, s12054c1f3, 32, "S12054C1.s12054c1f3");
    set_bf_and_test(lv, s12054c1f4, 68, 0, 1, 1, "S12054C1");
  }
}
static Arrange_To_Call_Me vS12054C1(Test_S12054C1, "S12054C1", 72);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11547C1  {
  ::S11548C2 s11547c1f0;
  int s11547c1f1[2];
  void *s11547c1f2;
  int s11547c1f3[2];
};
//SIG(1 S11547C1) C1{ FC2{ Fi[2] FL Fi[2] Fc[8]} Fi[2] Fp Fi[2]}



static void Test_S11547C1()
{
  {
    init_simple_test("S11547C1");
    S11547C1 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S11547C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11547C1)");
    check_field_offset(lv, s11547c1f0, 0, "S11547C1.s11547c1f0");
    check_field_offset(lv, s11547c1f1, 32, "S11547C1.s11547c1f1");
    check_field_offset(lv, s11547c1f2, 40, "S11547C1.s11547c1f2");
    check_field_offset(lv, s11547c1f3, ABISELECT(48,44), "S11547C1.s11547c1f3");
  }
}
static Arrange_To_Call_Me vS11547C1(Test_S11547C1, "S11547C1", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11549C1  {
  ::S11548C2 s11549c1f0;
  __tsi64 s11549c1f1;
  void *s11549c1f2[2];
  int s11549c1f3[2];
};
//SIG(1 S11549C1) C1{ FC2{ Fi[2] FL Fi[2] Fc[8]} FL Fp[2] Fi[2]}



static void Test_S11549C1()
{
  {
    init_simple_test("S11549C1");
    S11549C1 lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S11549C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11549C1)");
    check_field_offset(lv, s11549c1f0, 0, "S11549C1.s11549c1f0");
    check_field_offset(lv, s11549c1f1, 32, "S11549C1.s11549c1f1");
    check_field_offset(lv, s11549c1f2, 40, "S11549C1.s11549c1f2");
    check_field_offset(lv, s11549c1f3, ABISELECT(56,48), "S11549C1.s11549c1f3");
  }
}
static Arrange_To_Call_Me vS11549C1(Test_S11549C1, "S11549C1", ABISELECT(64,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17858C1  {
  void *s17858c1f0[2];
  char s17858c1f1;
  ::S3222C17 s17858c1f2;
  int s17858c1f3;
  void  mf17858c1(); // _ZN8S17858C19mf17858c1Ev
};
//SIG(1 S17858C1) C1{ m Fp[2] Fc FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi}


void  S17858C1 ::mf17858c1(){}

static void Test_S17858C1()
{
  {
    init_simple_test("S17858C1");
    S17858C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S17858C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17858C1)");
    check_field_offset(lv, s17858c1f0, 0, "S17858C1.s17858c1f0");
    check_field_offset(lv, s17858c1f1, ABISELECT(16,8), "S17858C1.s17858c1f1");
    check_field_offset(lv, s17858c1f2, ABISELECT(24,12), "S17858C1.s17858c1f2");
    check_field_offset(lv, s17858c1f3, ABISELECT(40,24), "S17858C1.s17858c1f3");
  }
}
static Arrange_To_Call_Me vS17858C1(Test_S17858C1, "S17858C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S137C5  : S2014C41_nt {
  char s137c5f0;
};
//SIG(-1 S137C5) C1{ BC2{ m FL} Fc}



static void Test_S137C5()
{
  extern Class_Descriptor cd_S137C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S137C5, buf);
    S137C5 &lv = *(new (buf) S137C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S137C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S137C5)");
    check_base_class_offset(lv, (S2014C41_nt*), 0, "S137C5");
    check_field_offset(lv, s137c5f0, 8, "S137C5.s137c5f0");
    test_class_info(&lv, &cd_S137C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS137C5(Test_S137C5, "S137C5", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
static Base_Class bases_S137C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S137C5 = {  "S137C5", // class name
  bases_S137C5, 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  S137C4  : S137C5 {
  int s137c4f0;
};
//SIG(-1 S137C4) C1{ BC2{ BC3{ m FL} Fc} Fi}



static void Test_S137C4()
{
  extern Class_Descriptor cd_S137C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S137C4, buf);
    S137C4 &lv = *(new (buf) S137C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S137C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S137C4)");
    check_base_class_offset(lv, (S2014C41_nt*)(S137C5*), 0, "S137C4");
    check_base_class_offset(lv, (S137C5*), 0, "S137C4");
    check_field_offset(lv, s137c4f0, 12, "S137C4.s137c4f0");
    test_class_info(&lv, &cd_S137C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS137C4(Test_S137C4, "S137C4", 16);

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S137C5;
static Base_Class bases_S137C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S137C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S137C4 = {  "S137C4", // class name
  bases_S137C4, 2,
  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  S137C3  : S137C4 {
  void *s137c3f0;
};
//SIG(-1 S137C3) C1{ BC2{ BC3{ BC4{ m FL} Fc} Fi} Fp}



static void Test_S137C3()
{
  extern Class_Descriptor cd_S137C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S137C3, buf);
    S137C3 &lv = *(new (buf) S137C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S137C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S137C3)");
    check_base_class_offset(lv, (S2014C41_nt*)(S137C5*)(S137C4*), 0, "S137C3");
    check_base_class_offset(lv, (S137C5*)(S137C4*), 0, "S137C3");
    check_base_class_offset(lv, (S137C4*), 0, "S137C3");
    check_field_offset(lv, s137c3f0, 16, "S137C3.s137c3f0");
    test_class_info(&lv, &cd_S137C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS137C3(Test_S137C3, "S137C3", ABISELECT(24,20));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S137C5;
extern Class_Descriptor cd_S137C4;
static Base_Class bases_S137C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S137C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S137C3 = {  "S137C3", // class name
  bases_S137C3, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // 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  S137C2  : S137C3 {
  void *s137c2f0;
};
//SIG(-1 S137C2) C1{ BC2{ BC3{ BC4{ BC5{ m FL} Fc} Fi} Fp} Fp}



static void Test_S137C2()
{
  extern Class_Descriptor cd_S137C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S137C2, buf);
    S137C2 &lv = *(new (buf) S137C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S137C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S137C2)");
    check_base_class_offset(lv, (S2014C41_nt*)(S137C5*)(S137C4*)(S137C3*), 0, "S137C2");
    check_base_class_offset(lv, (S137C5*)(S137C4*)(S137C3*), 0, "S137C2");
    check_base_class_offset(lv, (S137C4*)(S137C3*), 0, "S137C2");
    check_base_class_offset(lv, (S137C3*), 0, "S137C2");
    check_field_offset(lv, s137c2f0, ABISELECT(24,20), "S137C2.s137c2f0");
    test_class_info(&lv, &cd_S137C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS137C2(Test_S137C2, "S137C2", ABISELECT(32,24));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S137C5;
extern Class_Descriptor cd_S137C4;
extern Class_Descriptor cd_S137C3;
static Base_Class bases_S137C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S137C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S137C2 = {  "S137C2", // class name
  bases_S137C2, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // 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  S137C1  : S137C2 {
};
//SIG(1 S137C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ m FL} Fc} Fi} Fp} Fp}}



static void Test_S137C1()
{
  extern Class_Descriptor cd_S137C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S137C1, buf);
    S137C1 &lv = *(new (buf) S137C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S137C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S137C1)");
    check_base_class_offset(lv, (S2014C41_nt*)(S137C5*)(S137C4*)(S137C3*)(S137C2*), 0, "S137C1");
    check_base_class_offset(lv, (S137C5*)(S137C4*)(S137C3*)(S137C2*), 0, "S137C1");
    check_base_class_offset(lv, (S137C4*)(S137C3*)(S137C2*), 0, "S137C1");
    check_base_class_offset(lv, (S137C3*)(S137C2*), 0, "S137C1");
    check_base_class_offset(lv, (S137C2*), 0, "S137C1");
    test_class_info(&lv, &cd_S137C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS137C1(Test_S137C1, "S137C1", ABISELECT(32,24));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S137C5;
extern Class_Descriptor cd_S137C4;
extern Class_Descriptor cd_S137C3;
extern Class_Descriptor cd_S137C2;
static Base_Class bases_S137C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S137C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S137C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S137C1 = {  "S137C1", // class name
  bases_S137C1, 5,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // 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  S9736C2  {
  void *s9736c2f0;
  char s9736c2f1;
  void *s9736c2f2;
  char s9736c2f3;
  virtual  ~S9736C2(); // _ZN7S9736C2D1Ev
  virtual void  v4(); // _ZN7S9736C22v4Ev
  virtual void  v5(); // _ZN7S9736C22v5Ev
  virtual void  v6(); // _ZN7S9736C22v6Ev
  S9736C2(); // tgen
};
//SIG(-1 S9736C2) C1{ vd v1 v2 v3 Fp Fc Fp Fc}


 S9736C2 ::~S9736C2(){ note_dtor("S9736C2", this);}
void  S9736C2 ::v4(){vfunc_called(this, "_ZN7S9736C22v4Ev");}
void  S9736C2 ::v5(){vfunc_called(this, "_ZN7S9736C22v5Ev");}
void  S9736C2 ::v6(){vfunc_called(this, "_ZN7S9736C22v6Ev");}
S9736C2 ::S9736C2(){ note_ctor("S9736C2", this);} // tgen

static void Test_S9736C2()
{
  extern Class_Descriptor cd_S9736C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9736C2, buf);
    S9736C2 *dp, &lv = *(dp=new (buf) S9736C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9736C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9736C2)");
    check_field_offset(lv, s9736c2f0, ABISELECT(8,4), "S9736C2.s9736c2f0");
    check_field_offset(lv, s9736c2f1, ABISELECT(16,8), "S9736C2.s9736c2f1");
    check_field_offset(lv, s9736c2f2, ABISELECT(24,12), "S9736C2.s9736c2f2");
    check_field_offset(lv, s9736c2f3, ABISELECT(32,16), "S9736C2.s9736c2f3");
    test_class_info(&lv, &cd_S9736C2);
    dp->~S9736C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9736C2(Test_S9736C2, "S9736C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9736C2C1Ev();
extern void _ZN7S9736C2D1Ev();
Name_Map name_map_S9736C2[] = {
  NSPAIR(_ZN7S9736C2C1Ev),
  NSPAIR(_ZN7S9736C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9736C2[];
extern void _ZN7S9736C2D1Ev();
extern void _ZN7S9736C2D0Ev();
extern void _ZN7S9736C22v4Ev();
extern void _ZN7S9736C22v5Ev();
extern void _ZN7S9736C22v6Ev();
static  VTBL_ENTRY vtc_S9736C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9736C2[0]),
  (VTBL_ENTRY)&_ZN7S9736C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9736C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9736C2[];
extern  VTBL_ENTRY _ZTV7S9736C2[];
Class_Descriptor cd_S9736C2 = {  "S9736C2", // class name
  0,0,//no base classes
  &(vtc_S9736C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9736C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9736C2),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  S9736C1  : S9736C2 {
  virtual void  v1(); // _ZN7S9736C12v1Ev
  virtual void  v2(); // _ZN7S9736C12v2Ev
  virtual void  v3(); // _ZN7S9736C12v3Ev
  ~S9736C1(); // tgen
  S9736C1(); // tgen
};
//SIG(1 S9736C1) C1{ BC2{ vd v4 v5 v6 Fp Fc Fp Fc} v1 v2 v3}


void  S9736C1 ::v1(){vfunc_called(this, "_ZN7S9736C12v1Ev");}
void  S9736C1 ::v2(){vfunc_called(this, "_ZN7S9736C12v2Ev");}
void  S9736C1 ::v3(){vfunc_called(this, "_ZN7S9736C12v3Ev");}
S9736C1 ::~S9736C1(){ note_dtor("S9736C1", this);} // tgen
S9736C1 ::S9736C1(){ note_ctor("S9736C1", this);} // tgen

static void Test_S9736C1()
{
  extern Class_Descriptor cd_S9736C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9736C1, buf);
    S9736C1 *dp, &lv = *(dp=new (buf) S9736C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9736C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9736C1)");
    check_base_class_offset(lv, (S9736C2*), 0, "S9736C1");
    test_class_info(&lv, &cd_S9736C1);
    dp->~S9736C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9736C1(Test_S9736C1, "S9736C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9736C1C1Ev();
extern void _ZN7S9736C1D1Ev();
Name_Map name_map_S9736C1[] = {
  NSPAIR(_ZN7S9736C1C1Ev),
  NSPAIR(_ZN7S9736C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9736C2;
extern VTBL_ENTRY _ZTI7S9736C2[];
extern  VTBL_ENTRY _ZTV7S9736C2[];
static Base_Class bases_S9736C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9736C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9736C1[];
extern void _ZN7S9736C1D1Ev();
extern void _ZN7S9736C1D0Ev();
extern void _ZN7S9736C22v4Ev();
extern void _ZN7S9736C22v5Ev();
extern void _ZN7S9736C22v6Ev();
extern void _ZN7S9736C12v1Ev();
extern void _ZN7S9736C12v2Ev();
extern void _ZN7S9736C12v3Ev();
static  VTBL_ENTRY vtc_S9736C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9736C1[0]),
  (VTBL_ENTRY)&_ZN7S9736C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9736C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9736C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9736C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9736C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9736C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9736C1[];
extern  VTBL_ENTRY _ZTV7S9736C1[];
Class_Descriptor cd_S9736C1 = {  "S9736C1", // class name
  bases_S9736C1, 1,
  &(vtc_S9736C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9736C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9736C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18277C3  {
  char s18277c3f0[14];
  void  mf18277c3(); // _ZN8S18277C39mf18277c3Ev
};
//SIG(-1 S18277C3) C1{ m Fc[14]}


void  S18277C3 ::mf18277c3(){}

static void Test_S18277C3()
{
  {
    init_simple_test("S18277C3");
    S18277C3 lv;
    check2(sizeof(lv), 14, "sizeof(S18277C3)");
    check2(__alignof__(lv), 1, "__alignof__(S18277C3)");
    check_field_offset(lv, s18277c3f0, 0, "S18277C3.s18277c3f0");
  }
}
static Arrange_To_Call_Me vS18277C3(Test_S18277C3, "S18277C3", 14);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18277C2  {
  void *s18277c2f0;
  ::S18277C3 s18277c2f1;
  void  mf18277c2(); // _ZN8S18277C29mf18277c2Ev
};
//SIG(-1 S18277C2) C1{ m Fp FC2{ m Fc[14]}}


void  S18277C2 ::mf18277c2(){}

static void Test_S18277C2()
{
  {
    init_simple_test("S18277C2");
    S18277C2 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S18277C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18277C2)");
    check_field_offset(lv, s18277c2f0, 0, "S18277C2.s18277c2f0");
    check_field_offset(lv, s18277c2f1, ABISELECT(8,4), "S18277C2.s18277c2f1");
  }
}
static Arrange_To_Call_Me vS18277C2(Test_S18277C2, "S18277C2", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18277C1  {
  void *s18277c1f0[3];
  ::S18277C2 s18277c1f1;
  char s18277c1f2[2];
  void  mf18277c1(); // _ZN8S18277C19mf18277c1Ev
};
//SIG(1 S18277C1) C1{ m Fp[3] FC2{ m Fp FC3{ m Fc[14]}} Fc[2]}


void  S18277C1 ::mf18277c1(){}

static void Test_S18277C1()
{
  {
    init_simple_test("S18277C1");
    S18277C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S18277C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18277C1)");
    check_field_offset(lv, s18277c1f0, 0, "S18277C1.s18277c1f0");
    check_field_offset(lv, s18277c1f1, ABISELECT(24,12), "S18277C1.s18277c1f1");
    check_field_offset(lv, s18277c1f2, ABISELECT(48,32), "S18277C1.s18277c1f2");
  }
}
static Arrange_To_Call_Me vS18277C1(Test_S18277C1, "S18277C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21932C1  {
  void *s21932c1f0[2];
  ::S3639C14_nt s21932c1f1;
  void *s21932c1f2[2];
  int s21932c1f3[2];
  virtual  ~S21932C1(); // _ZN8S21932C1D1Ev
  virtual void  v1(); // _ZN8S21932C12v1Ev
  S21932C1(); // tgen
};
//SIG(1 S21932C1) C1{ vd v1 Fp[2] FC2{ m Fp[2]} Fp[2] Fi[2]}


 S21932C1 ::~S21932C1(){ note_dtor("S21932C1", this);}
void  S21932C1 ::v1(){vfunc_called(this, "_ZN8S21932C12v1Ev");}
S21932C1 ::S21932C1(){ note_ctor("S21932C1", this);} // tgen

static void Test_S21932C1()
{
  extern Class_Descriptor cd_S21932C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S21932C1, buf);
    S21932C1 *dp, &lv = *(dp=new (buf) S21932C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21932C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21932C1)");
    check_field_offset(lv, s21932c1f0, ABISELECT(8,4), "S21932C1.s21932c1f0");
    check_field_offset(lv, s21932c1f1, ABISELECT(24,12), "S21932C1.s21932c1f1");
    check_field_offset(lv, s21932c1f2, ABISELECT(40,20), "S21932C1.s21932c1f2");
    check_field_offset(lv, s21932c1f3, ABISELECT(56,28), "S21932C1.s21932c1f3");
    test_class_info(&lv, &cd_S21932C1);
    dp->~S21932C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21932C1(Test_S21932C1, "S21932C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21932C1C1Ev();
extern void _ZN8S21932C1D1Ev();
Name_Map name_map_S21932C1[] = {
  NSPAIR(_ZN8S21932C1C1Ev),
  NSPAIR(_ZN8S21932C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21932C1[];
extern void _ZN8S21932C1D1Ev();
extern void _ZN8S21932C1D0Ev();
extern void _ZN8S21932C12v1Ev();
static  VTBL_ENTRY vtc_S21932C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21932C1[0]),
  (VTBL_ENTRY)&_ZN8S21932C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21932C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21932C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S21932C1[];
extern  VTBL_ENTRY _ZTV8S21932C1[];
Class_Descriptor cd_S21932C1 = {  "S21932C1", // class name
  0,0,//no base classes
  &(vtc_S21932C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21932C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21932C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14087C1  {
  void *s14087c1f0;
  ::S3222C17 s14087c1f1;
  ::S3222C17 s14087c1f2;
  int s14087c1f3;
};
//SIG(1 S14087C1) C1{ Fp FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC2 Fi}



static void Test_S14087C1()
{
  {
    init_simple_test("S14087C1");
    S14087C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S14087C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14087C1)");
    check_field_offset(lv, s14087c1f0, 0, "S14087C1.s14087c1f0");
    check_field_offset(lv, s14087c1f1, ABISELECT(8,4), "S14087C1.s14087c1f1");
    check_field_offset(lv, s14087c1f2, ABISELECT(24,16), "S14087C1.s14087c1f2");
    check_field_offset(lv, s14087c1f3, ABISELECT(40,28), "S14087C1.s14087c1f3");
  }
}
static Arrange_To_Call_Me vS14087C1(Test_S14087C1, "S14087C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20231C2  {
  long s20231c2f0[5];
  void *s20231c2f1;
  virtual void  v5(); // _ZN8S20231C22v5Ev
  virtual void  v6(); // _ZN8S20231C22v6Ev
  ~S20231C2(); // tgen
  S20231C2(); // tgen
};
//SIG(-1 S20231C2) C1{ v1 v2 Fl[5] Fp}


void  S20231C2 ::v5(){vfunc_called(this, "_ZN8S20231C22v5Ev");}
void  S20231C2 ::v6(){vfunc_called(this, "_ZN8S20231C22v6Ev");}
S20231C2 ::~S20231C2(){ note_dtor("S20231C2", this);} // tgen
S20231C2 ::S20231C2(){ note_ctor("S20231C2", this);} // tgen

static void Test_S20231C2()
{
  extern Class_Descriptor cd_S20231C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20231C2, buf);
    S20231C2 *dp, &lv = *(dp=new (buf) S20231C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20231C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20231C2)");
    check_field_offset(lv, s20231c2f0, ABISELECT(8,4), "S20231C2.s20231c2f0");
    check_field_offset(lv, s20231c2f1, ABISELECT(48,24), "S20231C2.s20231c2f1");
    test_class_info(&lv, &cd_S20231C2);
    dp->~S20231C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20231C2(Test_S20231C2, "S20231C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20231C2C1Ev();
extern void _ZN8S20231C2D1Ev();
Name_Map name_map_S20231C2[] = {
  NSPAIR(_ZN8S20231C2C1Ev),
  NSPAIR(_ZN8S20231C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20231C2[];
extern void _ZN8S20231C22v5Ev();
extern void _ZN8S20231C22v6Ev();
static  VTBL_ENTRY vtc_S20231C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20231C2[0]),
  (VTBL_ENTRY)&_ZN8S20231C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20231C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20231C2[];
extern  VTBL_ENTRY _ZTV8S20231C2[];
Class_Descriptor cd_S20231C2 = {  "S20231C2", // class name
  0,0,//no base classes
  &(vtc_S20231C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20231C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20231C2),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  S20231C1  : virtual S20231C2 {
  char s20231c1f0;
  virtual void  v1(); // _ZN8S20231C12v1Ev
  virtual void  v2(); // _ZN8S20231C12v2Ev
  virtual void  v3(); // _ZN8S20231C12v3Ev
  virtual void  v4(); // _ZN8S20231C12v4Ev
  ~S20231C1(); // tgen
  S20231C1(); // tgen
};
//SIG(1 S20231C1) C1{ VBC2{ v5 v6 Fl[5] Fp} v1 v2 v3 v4 Fc}


void  S20231C1 ::v1(){vfunc_called(this, "_ZN8S20231C12v1Ev");}
void  S20231C1 ::v2(){vfunc_called(this, "_ZN8S20231C12v2Ev");}
void  S20231C1 ::v3(){vfunc_called(this, "_ZN8S20231C12v3Ev");}
void  S20231C1 ::v4(){vfunc_called(this, "_ZN8S20231C12v4Ev");}
S20231C1 ::~S20231C1(){ note_dtor("S20231C1", this);} // tgen
S20231C1 ::S20231C1(){ note_ctor("S20231C1", this);} // tgen

static void Test_S20231C1()
{
  extern Class_Descriptor cd_S20231C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20231C1, buf);
    S20231C1 *dp, &lv = *(dp=new (buf) S20231C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20231C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20231C1)");
    check_base_class_offset(lv, (S20231C2*), ABISELECT(16,8), "S20231C1");
    check_field_offset(lv, s20231c1f0, ABISELECT(8,4), "S20231C1.s20231c1f0");
    test_class_info(&lv, &cd_S20231C1);
    dp->~S20231C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20231C1(Test_S20231C1, "S20231C1", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20231C1C1Ev();
extern void _ZN8S20231C1D1Ev();
Name_Map name_map_S20231C1[] = {
  NSPAIR(_ZN8S20231C1C1Ev),
  NSPAIR(_ZN8S20231C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20231C2;
extern VTBL_ENTRY _ZTI8S20231C2[];
extern  VTBL_ENTRY _ZTV8S20231C2[];
static Base_Class bases_S20231C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20231C2,    ABISELECT(16,8), //bcp->offset
    7, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S20231C1[];
extern void _ZN8S20231C12v1Ev();
extern void _ZN8S20231C12v2Ev();
extern void _ZN8S20231C12v3Ev();
extern void _ZN8S20231C12v4Ev();
extern void _ZN8S20231C22v5Ev();
extern void _ZN8S20231C22v6Ev();
static  VTBL_ENTRY vtc_S20231C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20231C1[0]),
  (VTBL_ENTRY)&_ZN8S20231C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20231C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20231C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20231C12v4Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20231C1[0]),
  (VTBL_ENTRY)&_ZN8S20231C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20231C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20231C1[];
static  VTT_ENTRY vtt_S20231C1[] = {
  {&(_ZTV8S20231C1[3]),  3,13},
  {&(_ZTV8S20231C1[11]),  11,13},
};
extern VTBL_ENTRY _ZTI8S20231C1[];
extern  VTBL_ENTRY _ZTV8S20231C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20231C1[];
Class_Descriptor cd_S20231C1 = {  "S20231C1", // class name
  bases_S20231C1, 1,
  &(vtc_S20231C1[0]), // expected_vtbl_contents
  &(vtt_S20231C1[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20231C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20231C1),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20231C1),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  S9747C2  {
  void *s9747c2f0[2];
  virtual  ~S9747C2(); // _ZN7S9747C2D1Ev
  virtual void  v4(); // _ZN7S9747C22v4Ev
  virtual void  v5(); // _ZN7S9747C22v5Ev
  virtual void  v6(); // _ZN7S9747C22v6Ev
  S9747C2(); // tgen
};
//SIG(-1 S9747C2) C1{ vd v1 v2 v3 Fp[2]}


 S9747C2 ::~S9747C2(){ note_dtor("S9747C2", this);}
void  S9747C2 ::v4(){vfunc_called(this, "_ZN7S9747C22v4Ev");}
void  S9747C2 ::v5(){vfunc_called(this, "_ZN7S9747C22v5Ev");}
void  S9747C2 ::v6(){vfunc_called(this, "_ZN7S9747C22v6Ev");}
S9747C2 ::S9747C2(){ note_ctor("S9747C2", this);} // tgen

static void Test_S9747C2()
{
  extern Class_Descriptor cd_S9747C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9747C2, buf);
    S9747C2 *dp, &lv = *(dp=new (buf) S9747C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9747C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9747C2)");
    check_field_offset(lv, s9747c2f0, ABISELECT(8,4), "S9747C2.s9747c2f0");
    test_class_info(&lv, &cd_S9747C2);
    dp->~S9747C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9747C2(Test_S9747C2, "S9747C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9747C2C1Ev();
extern void _ZN7S9747C2D1Ev();
Name_Map name_map_S9747C2[] = {
  NSPAIR(_ZN7S9747C2C1Ev),
  NSPAIR(_ZN7S9747C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9747C2[];
extern void _ZN7S9747C2D1Ev();
extern void _ZN7S9747C2D0Ev();
extern void _ZN7S9747C22v4Ev();
extern void _ZN7S9747C22v5Ev();
extern void _ZN7S9747C22v6Ev();
static  VTBL_ENTRY vtc_S9747C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9747C2[0]),
  (VTBL_ENTRY)&_ZN7S9747C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9747C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9747C2[];
extern  VTBL_ENTRY _ZTV7S9747C2[];
Class_Descriptor cd_S9747C2 = {  "S9747C2", // class name
  0,0,//no base classes
  &(vtc_S9747C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9747C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9747C2),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  S9747C1  : S9747C2 {
  virtual  ~S9747C1(); // _ZN7S9747C1D1Ev
  virtual void  v1(); // _ZN7S9747C12v1Ev
  virtual void  v2(); // _ZN7S9747C12v2Ev
  virtual void  v3(); // _ZN7S9747C12v3Ev
  S9747C1(); // tgen
};
//SIG(1 S9747C1) C1{ BC2{ vd v4 v5 v6 Fp[2]} vd v1 v2 v3}


 S9747C1 ::~S9747C1(){ note_dtor("S9747C1", this);}
void  S9747C1 ::v1(){vfunc_called(this, "_ZN7S9747C12v1Ev");}
void  S9747C1 ::v2(){vfunc_called(this, "_ZN7S9747C12v2Ev");}
void  S9747C1 ::v3(){vfunc_called(this, "_ZN7S9747C12v3Ev");}
S9747C1 ::S9747C1(){ note_ctor("S9747C1", this);} // tgen

static void Test_S9747C1()
{
  extern Class_Descriptor cd_S9747C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9747C1, buf);
    S9747C1 *dp, &lv = *(dp=new (buf) S9747C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9747C1)");
    check_base_class_offset(lv, (S9747C2*), 0, "S9747C1");
    test_class_info(&lv, &cd_S9747C1);
    dp->~S9747C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9747C1(Test_S9747C1, "S9747C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9747C1C1Ev();
extern void _ZN7S9747C1D1Ev();
Name_Map name_map_S9747C1[] = {
  NSPAIR(_ZN7S9747C1C1Ev),
  NSPAIR(_ZN7S9747C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9747C2;
extern VTBL_ENTRY _ZTI7S9747C2[];
extern  VTBL_ENTRY _ZTV7S9747C2[];
static Base_Class bases_S9747C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9747C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S9747C1[];
extern void _ZN7S9747C1D1Ev();
extern void _ZN7S9747C1D0Ev();
extern void _ZN7S9747C22v4Ev();
extern void _ZN7S9747C22v5Ev();
extern void _ZN7S9747C22v6Ev();
extern void _ZN7S9747C12v1Ev();
extern void _ZN7S9747C12v2Ev();
extern void _ZN7S9747C12v3Ev();
static  VTBL_ENTRY vtc_S9747C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9747C1[0]),
  (VTBL_ENTRY)&_ZN7S9747C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9747C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9747C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9747C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9747C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9747C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9747C1[];
extern  VTBL_ENTRY _ZTV7S9747C1[];
Class_Descriptor cd_S9747C1 = {  "S9747C1", // class name
  bases_S9747C1, 1,
  &(vtc_S9747C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9747C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9747C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15737C1  {
  ::S8710C8_nt s15737c1f0;
  void *s15737c1f1[2];
  short s15737c1f2;
  char s15737c1f3[2];
  void  mf15737c1(); // _ZN8S15737C19mf15737c1Ev
};
//SIG(1 S15737C1) C1{ m FC2{ m FC3{ FL[4]}} Fp[2] Fs Fc[2]}


void  S15737C1 ::mf15737c1(){}

static void Test_S15737C1()
{
  {
    init_simple_test("S15737C1");
    S15737C1 lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S15737C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15737C1)");
    check_field_offset(lv, s15737c1f0, 0, "S15737C1.s15737c1f0");
    check_field_offset(lv, s15737c1f1, 32, "S15737C1.s15737c1f1");
    check_field_offset(lv, s15737c1f2, ABISELECT(48,40), "S15737C1.s15737c1f2");
    check_field_offset(lv, s15737c1f3, ABISELECT(50,42), "S15737C1.s15737c1f3");
  }
}
static Arrange_To_Call_Me vS15737C1(Test_S15737C1, "S15737C1", ABISELECT(56,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18023C1  {
  void *s18023c1f0[2];
  ::S2014C20_nt s18023c1f1;
  int s18023c1f2;
  void *s18023c1f3;
  void  mf18023c1(); // _ZN8S18023C19mf18023c1Ev
};
//SIG(1 S18023C1) C1{ m Fp[2] FC2{ m Fp Fi FC3{ m}} Fi Fp}


void  S18023C1 ::mf18023c1(){}

static void Test_S18023C1()
{
  {
    init_simple_test("S18023C1");
    S18023C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18023C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18023C1)");
    check_field_offset(lv, s18023c1f0, 0, "S18023C1.s18023c1f0");
    check_field_offset(lv, s18023c1f1, ABISELECT(16,8), "S18023C1.s18023c1f1");
    check_field_offset(lv, s18023c1f2, ABISELECT(32,20), "S18023C1.s18023c1f2");
    check_field_offset(lv, s18023c1f3, ABISELECT(40,24), "S18023C1.s18023c1f3");
  }
}
static Arrange_To_Call_Me vS18023C1(Test_S18023C1, "S18023C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7596C3  {
  int s7596c3f0;
  void *s7596c3f1;
  virtual void  v4(); // _ZN7S7596C32v4Ev
  ~S7596C3(); // tgen
  S7596C3(); // tgen
};
//SIG(-1 S7596C3) C1{ v1 Fi Fp}


void  S7596C3 ::v4(){vfunc_called(this, "_ZN7S7596C32v4Ev");}
S7596C3 ::~S7596C3(){ note_dtor("S7596C3", this);} // tgen
S7596C3 ::S7596C3(){ note_ctor("S7596C3", this);} // tgen

static void Test_S7596C3()
{
  extern Class_Descriptor cd_S7596C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7596C3, buf);
    S7596C3 *dp, &lv = *(dp=new (buf) S7596C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7596C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7596C3)");
    check_field_offset(lv, s7596c3f0, ABISELECT(8,4), "S7596C3.s7596c3f0");
    check_field_offset(lv, s7596c3f1, ABISELECT(16,8), "S7596C3.s7596c3f1");
    test_class_info(&lv, &cd_S7596C3);
    dp->~S7596C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7596C3(Test_S7596C3, "S7596C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7596C3C1Ev();
extern void _ZN7S7596C3D1Ev();
Name_Map name_map_S7596C3[] = {
  NSPAIR(_ZN7S7596C3C1Ev),
  NSPAIR(_ZN7S7596C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7596C3[];
extern void _ZN7S7596C32v4Ev();
static  VTBL_ENTRY vtc_S7596C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7596C3[0]),
  (VTBL_ENTRY)&_ZN7S7596C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S7596C3[];
extern  VTBL_ENTRY _ZTV7S7596C3[];
Class_Descriptor cd_S7596C3 = {  "S7596C3", // class name
  0,0,//no base classes
  &(vtc_S7596C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7596C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7596C3),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  S7596C2  : virtual S7596C3 {
  virtual void  v5(); // _ZN7S7596C22v5Ev
  virtual void  v6(); // _ZN7S7596C22v6Ev
  ~S7596C2(); // tgen
  S7596C2(); // tgen
};
//SIG(-1 S7596C2) C1{ VBC2{ v3 Fi Fp} v1 v2}


void  S7596C2 ::v5(){vfunc_called(this, "_ZN7S7596C22v5Ev");}
void  S7596C2 ::v6(){vfunc_called(this, "_ZN7S7596C22v6Ev");}
S7596C2 ::~S7596C2(){ note_dtor("S7596C2", this);} // tgen
S7596C2 ::S7596C2(){ note_ctor("S7596C2", this);} // tgen

static void Test_S7596C2()
{
  extern Class_Descriptor cd_S7596C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7596C2, buf);
    S7596C2 *dp, &lv = *(dp=new (buf) S7596C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7596C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7596C2)");
    check_base_class_offset(lv, (S7596C3*), ABISELECT(8,4), "S7596C2");
    test_class_info(&lv, &cd_S7596C2);
    dp->~S7596C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7596C2(Test_S7596C2, "S7596C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7596C2C1Ev();
extern void _ZN7S7596C2D1Ev();
Name_Map name_map_S7596C2[] = {
  NSPAIR(_ZN7S7596C2C1Ev),
  NSPAIR(_ZN7S7596C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7596C3;
extern VTBL_ENTRY _ZTI7S7596C3[];
extern  VTBL_ENTRY _ZTV7S7596C3[];
static Base_Class bases_S7596C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7596C3,    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 _ZTI7S7596C2[];
extern void _ZN7S7596C22v5Ev();
extern void _ZN7S7596C22v6Ev();
extern void _ZN7S7596C32v4Ev();
static  VTBL_ENTRY vtc_S7596C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7596C2[0]),
  (VTBL_ENTRY)&_ZN7S7596C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7596C22v6Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7596C2[0]),
  (VTBL_ENTRY)&_ZN7S7596C32v4Ev,
};
extern VTBL_ENTRY _ZTV7S7596C2[];
static  VTT_ENTRY vtt_S7596C2[] = {
  {&(_ZTV7S7596C2[3]),  3,9},
  {&(_ZTV7S7596C2[8]),  8,9},
};
extern VTBL_ENTRY _ZTI7S7596C2[];
extern  VTBL_ENTRY _ZTV7S7596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7596C2[];
Class_Descriptor cd_S7596C2 = {  "S7596C2", // class name
  bases_S7596C2, 1,
  &(vtc_S7596C2[0]), // expected_vtbl_contents
  &(vtt_S7596C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7596C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7596C2),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7596C2),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  S7596C1  : S7596C2 {
  virtual void  v1(); // _ZN7S7596C12v1Ev
  virtual void  v2(); // _ZN7S7596C12v2Ev
  virtual void  v3(); // _ZN7S7596C12v3Ev
  ~S7596C1(); // tgen
  S7596C1(); // tgen
};
//SIG(1 S7596C1) C1{ BC2{ VBC3{ v4 Fi Fp} v5 v6} v1 v2 v3}


void  S7596C1 ::v1(){vfunc_called(this, "_ZN7S7596C12v1Ev");}
void  S7596C1 ::v2(){vfunc_called(this, "_ZN7S7596C12v2Ev");}
void  S7596C1 ::v3(){vfunc_called(this, "_ZN7S7596C12v3Ev");}
S7596C1 ::~S7596C1(){ note_dtor("S7596C1", this);} // tgen
S7596C1 ::S7596C1(){ note_ctor("S7596C1", this);} // tgen

static void Test_S7596C1()
{
  extern Class_Descriptor cd_S7596C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7596C1, buf);
    S7596C1 *dp, &lv = *(dp=new (buf) S7596C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7596C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7596C1)");
    check_base_class_offset(lv, (S7596C3*)(S7596C2*), ABISELECT(8,4), "S7596C1");
    check_base_class_offset(lv, (S7596C2*), 0, "S7596C1");
    test_class_info(&lv, &cd_S7596C1);
    dp->~S7596C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7596C1(Test_S7596C1, "S7596C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7596C1C1Ev();
extern void _ZN7S7596C1D1Ev();
Name_Map name_map_S7596C1[] = {
  NSPAIR(_ZN7S7596C1C1Ev),
  NSPAIR(_ZN7S7596C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7596C3;
extern VTBL_ENTRY _ZTI7S7596C3[];
extern  VTBL_ENTRY _ZTV7S7596C3[];
extern Class_Descriptor cd_S7596C2;
extern VTBL_ENTRY _ZTI7S7596C2[];
extern  VTBL_ENTRY _ZTV7S7596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7596C2[];
static Base_Class bases_S7596C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7596C3,    ABISELECT(8,4), //bcp->offset
    8, //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_S7596C2,    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 _ZTI7S7596C1[];
extern void _ZN7S7596C22v5Ev();
extern void _ZN7S7596C22v6Ev();
extern void _ZN7S7596C12v1Ev();
extern void _ZN7S7596C12v2Ev();
extern void _ZN7S7596C12v3Ev();
extern void _ZN7S7596C32v4Ev();
static  VTBL_ENTRY vtc_S7596C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7596C1[0]),
  (VTBL_ENTRY)&_ZN7S7596C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7596C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7596C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7596C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7596C12v3Ev,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7596C1[0]),
  (VTBL_ENTRY)&_ZN7S7596C32v4Ev,
};
extern VTBL_ENTRY _ZTV7S7596C1[];
extern void _ZN7S7596C22v5Ev();
extern void _ZN7S7596C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7596C2__7S7596C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7596C2[0]),
  (VTBL_ENTRY)&_ZN7S7596C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7596C22v6Ev,
};
extern void _ZN7S7596C32v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7596C3__7S7596C2__7S7596C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7596C2[0]),
  (VTBL_ENTRY)&_ZN7S7596C32v4Ev,
};
static  VTT_ENTRY vtt_S7596C1[] = {
  {&(_ZTV7S7596C1[3]),  3,12},
  {&(_tg__ZTV7S7596C2__7S7596C1[3]),  3,5},
  {&(_tg__ZTV7S7596C3__7S7596C2__7S7596C1[3]),  3,4},
  {&(_ZTV7S7596C1[11]),  11,12},
};
extern VTBL_ENTRY _ZTI7S7596C1[];
extern  VTBL_ENTRY _ZTV7S7596C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7596C1[];
Class_Descriptor cd_S7596C1 = {  "S7596C1", // class name
  bases_S7596C1, 2,
  &(vtc_S7596C1[0]), // expected_vtbl_contents
  &(vtt_S7596C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7596C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7596C1),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7596C1),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  S11414C2_nt  {
  int s11414c2f0;
  void *s11414c2f1[3];
  int s11414c2f2;
  void *s11414c2f3;
  int s11414c2f4[17];
};
//SIG(-1 S11414C2_nt) C1{ Fi Fp[3] Fi Fp Fi[17]}



//skip512 S11414C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11414C1  {
  ::S11414C2_nt s11414c1f0;
  int s11414c1f1[4];
};
//SIG(1 S11414C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} Fi[4]}



static void Test_S11414C1()
{
  {
    init_simple_test("S11414C1");
    S11414C1 lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S11414C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11414C1)");
    check_field_offset(lv, s11414c1f0, 0, "S11414C1.s11414c1f0");
    check_field_offset(lv, s11414c1f1, ABISELECT(120,92), "S11414C1.s11414c1f1");
  }
}
static Arrange_To_Call_Me vS11414C1(Test_S11414C1, "S11414C1", ABISELECT(136,108));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18685C1  {
  void *s18685c1f0;
  ::S20038C2 s18685c1f1;
  virtual void  v1(); // _ZN8S18685C12v1Ev
  virtual void  v2(); // _ZN8S18685C12v2Ev
  virtual void  v3(); // _ZN8S18685C12v3Ev
  virtual void  v4(); // _ZN8S18685C12v4Ev
  ~S18685C1(); // tgen
  S18685C1(); // tgen
};
//SIG(1 S18685C1) C1{ v1 v2 v3 v4 Fp FC2{ v5 v6 Fs[6]}}


void  S18685C1 ::v1(){vfunc_called(this, "_ZN8S18685C12v1Ev");}
void  S18685C1 ::v2(){vfunc_called(this, "_ZN8S18685C12v2Ev");}
void  S18685C1 ::v3(){vfunc_called(this, "_ZN8S18685C12v3Ev");}
void  S18685C1 ::v4(){vfunc_called(this, "_ZN8S18685C12v4Ev");}
S18685C1 ::~S18685C1(){ note_dtor("S18685C1", this);} // tgen
S18685C1 ::S18685C1(){ note_ctor("S18685C1", this);} // tgen

static void Test_S18685C1()
{
  extern Class_Descriptor cd_S18685C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S18685C1, buf);
    S18685C1 *dp, &lv = *(dp=new (buf) S18685C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18685C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18685C1)");
    check_field_offset(lv, s18685c1f0, ABISELECT(8,4), "S18685C1.s18685c1f0");
    check_field_offset(lv, s18685c1f1, ABISELECT(16,8), "S18685C1.s18685c1f1");
    test_class_info(&lv, &cd_S18685C1);
    dp->~S18685C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18685C1(Test_S18685C1, "S18685C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S18685C1C1Ev();
extern void _ZN8S18685C1D1Ev();
Name_Map name_map_S18685C1[] = {
  NSPAIR(_ZN8S18685C1C1Ev),
  NSPAIR(_ZN8S18685C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18685C1[];
extern void _ZN8S18685C12v1Ev();
extern void _ZN8S18685C12v2Ev();
extern void _ZN8S18685C12v3Ev();
extern void _ZN8S18685C12v4Ev();
static  VTBL_ENTRY vtc_S18685C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18685C1[0]),
  (VTBL_ENTRY)&_ZN8S18685C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18685C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18685C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18685C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18685C1[];
extern  VTBL_ENTRY _ZTV8S18685C1[];
Class_Descriptor cd_S18685C1 = {  "S18685C1", // class name
  0,0,//no base classes
  &(vtc_S18685C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S18685C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18685C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12455C2  {
  int s12455c2f0[3];
  short s12455c2f1;
  int s12455c2f2;
  char s12455c2f3;
  int s12455c2f4;
  void *s12455c2f5;
};
//SIG(-1 S12455C2) C1{ Fi[3] Fs Fi Fc Fi Fp}



static void Test_S12455C2()
{
  {
    init_simple_test("S12455C2");
    S12455C2 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S12455C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12455C2)");
    check_field_offset(lv, s12455c2f0, 0, "S12455C2.s12455c2f0");
    check_field_offset(lv, s12455c2f1, 12, "S12455C2.s12455c2f1");
    check_field_offset(lv, s12455c2f2, 16, "S12455C2.s12455c2f2");
    check_field_offset(lv, s12455c2f3, 20, "S12455C2.s12455c2f3");
    check_field_offset(lv, s12455c2f4, 24, "S12455C2.s12455c2f4");
    check_field_offset(lv, s12455c2f5, ABISELECT(32,28), "S12455C2.s12455c2f5");
  }
}
static Arrange_To_Call_Me vS12455C2(Test_S12455C2, "S12455C2", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12455C1  {
  int s12455c1f0;
  ::S12455C2 s12455c1f1;
  void *s12455c1f2;
};
//SIG(1 S12455C1) C1{ Fi FC2{ Fi[3] Fs Fi Fc Fi Fp} Fp}



static void Test_S12455C1()
{
  {
    init_simple_test("S12455C1");
    S12455C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S12455C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12455C1)");
    check_field_offset(lv, s12455c1f0, 0, "S12455C1.s12455c1f0");
    check_field_offset(lv, s12455c1f1, ABISELECT(8,4), "S12455C1.s12455c1f1");
    check_field_offset(lv, s12455c1f2, ABISELECT(48,36), "S12455C1.s12455c1f2");
  }
}
static Arrange_To_Call_Me vS12455C1(Test_S12455C1, "S12455C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13302C1  {
  int s13302c1f0[3];
  char s13302c1f1[2];
  int s13302c1f2;
  void *s13302c1f3;
  int s13302c1f4[2];
  short s13302c1f5[6];
};
//SIG(1 S13302C1) C1{ Fi[3] Fc[2] Fi Fp Fi[2] Fs[6]}



static void Test_S13302C1()
{
  {
    init_simple_test("S13302C1");
    S13302C1 lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S13302C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13302C1)");
    check_field_offset(lv, s13302c1f0, 0, "S13302C1.s13302c1f0");
    check_field_offset(lv, s13302c1f1, 12, "S13302C1.s13302c1f1");
    check_field_offset(lv, s13302c1f2, 16, "S13302C1.s13302c1f2");
    check_field_offset(lv, s13302c1f3, ABISELECT(24,20), "S13302C1.s13302c1f3");
    check_field_offset(lv, s13302c1f4, ABISELECT(32,24), "S13302C1.s13302c1f4");
    check_field_offset(lv, s13302c1f5, ABISELECT(40,32), "S13302C1.s13302c1f5");
  }
}
static Arrange_To_Call_Me vS13302C1(Test_S13302C1, "S13302C1", ABISELECT(56,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10972C1  {
  char s10972c1f0[6];
  int s10972c1f1[2];
  void *s10972c1f2[4];
  int s10972c1f3;
  short s10972c1f4[2];
  int s10972c1f5;
};
//SIG(1 S10972C1) C1{ Fc[6] Fi[2] Fp[4] Fi Fs[2] Fi}



static void Test_S10972C1()
{
  {
    init_simple_test("S10972C1");
    S10972C1 lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S10972C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10972C1)");
    check_field_offset(lv, s10972c1f0, 0, "S10972C1.s10972c1f0");
    check_field_offset(lv, s10972c1f1, 8, "S10972C1.s10972c1f1");
    check_field_offset(lv, s10972c1f2, 16, "S10972C1.s10972c1f2");
    check_field_offset(lv, s10972c1f3, ABISELECT(48,32), "S10972C1.s10972c1f3");
    check_field_offset(lv, s10972c1f4, ABISELECT(52,36), "S10972C1.s10972c1f4");
    check_field_offset(lv, s10972c1f5, ABISELECT(56,40), "S10972C1.s10972c1f5");
  }
}
static Arrange_To_Call_Me vS10972C1(Test_S10972C1, "S10972C1", ABISELECT(64,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8321C1  : S19169C11_nt {
  ::S3639C14_nt s8321c1f0[64];
  virtual  ~S8321C1(); // _ZN7S8321C1D1Ev
  S8321C1(); // tgen
};
//SIG(1 S8321C1) C1{ BC2{ vd m} vd FC3{ m Fp[2]}[64]}


 S8321C1 ::~S8321C1(){ note_dtor("S8321C1", this);}
S8321C1 ::S8321C1(){ note_ctor("S8321C1", this);} // tgen

static void Test_S8321C1()
{
  extern Class_Descriptor cd_S8321C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[130];
    init_test(&cd_S8321C1, buf);
    S8321C1 *dp, &lv = *(dp=new (buf) S8321C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1032,516), "sizeof(S8321C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8321C1)");
    check_base_class_offset(lv, (S19169C11_nt*), 0, "S8321C1");
    check_field_offset(lv, s8321c1f0, ABISELECT(8,4), "S8321C1.s8321c1f0");
    test_class_info(&lv, &cd_S8321C1);
    dp->~S8321C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8321C1(Test_S8321C1, "S8321C1", ABISELECT(1032,516));

#else // __cplusplus

extern void _ZN7S8321C1C1Ev();
extern void _ZN7S8321C1D1Ev();
Name_Map name_map_S8321C1[] = {
  NSPAIR(_ZN7S8321C1C1Ev),
  NSPAIR(_ZN7S8321C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19169C11_nt;
extern VTBL_ENTRY _ZTI12S19169C11_nt[];
extern  VTBL_ENTRY _ZTV12S19169C11_nt[];
static Base_Class bases_S8321C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19169C11_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 _ZTI7S8321C1[];
extern void _ZN7S8321C1D1Ev();
extern void _ZN7S8321C1D0Ev();
static  VTBL_ENTRY vtc_S8321C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8321C1[0]),
  (VTBL_ENTRY)&_ZN7S8321C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8321C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8321C1[];
extern  VTBL_ENTRY _ZTV7S8321C1[];
Class_Descriptor cd_S8321C1 = {  "S8321C1", // class name
  bases_S8321C1, 1,
  &(vtc_S8321C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1032,516), // object size
  NSPAIRA(_ZTI7S8321C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8321C1),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  S17290C1  {
  int s17290c1f0[7];
  ::S3222C18 s17290c1f1;
  void  mf17290c1(); // _ZN8S17290C19mf17290c1Ev
};
//SIG(1 S17290C1) C1{ m Fi[7] FC2{ BC3{ m Fp Fi[2]}}}


void  S17290C1 ::mf17290c1(){}

static void Test_S17290C1()
{
  {
    init_simple_test("S17290C1");
    S17290C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S17290C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17290C1)");
    check_field_offset(lv, s17290c1f0, 0, "S17290C1.s17290c1f0");
    check_field_offset(lv, s17290c1f1, ABISELECT(32,28), "S17290C1.s17290c1f1");
  }
}
static Arrange_To_Call_Me vS17290C1(Test_S17290C1, "S17290C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17036C2_nt  {
  void *s17036c2f0;
  int s17036c2f1;
  void  mf17036c2(); // _ZN11S17036C2_nt9mf17036c2Ev
};
//SIG(-1 S17036C2_nt) C1{ m Fp Fi}


void  S17036C2_nt ::mf17036c2(){}

//skip512 S17036C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17036C1  {
  int s17036c1f0[128];
  ::S17036C2_nt s17036c1f1;
  int s17036c1f2[2];
  void  mf17036c1(); // _ZN8S17036C19mf17036c1Ev
};
//SIG(1 S17036C1) C1{ m Fi[128] FC2{ m Fp Fi} Fi[2]}


void  S17036C1 ::mf17036c1(){}

static void Test_S17036C1()
{
  {
    init_simple_test("S17036C1");
    S17036C1 lv;
    check2(sizeof(lv), ABISELECT(536,528), "sizeof(S17036C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17036C1)");
    check_field_offset(lv, s17036c1f0, 0, "S17036C1.s17036c1f0");
    check_field_offset(lv, s17036c1f1, 512, "S17036C1.s17036c1f1");
    check_field_offset(lv, s17036c1f2, ABISELECT(528,520), "S17036C1.s17036c1f2");
  }
}
static Arrange_To_Call_Me vS17036C1(Test_S17036C1, "S17036C1", ABISELECT(536,528));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14269C3_nt  {
  int s14269c3f0;
  int s14269c3f1;
};
//SIG(1 S14269C3_nt) C1{ Fi[2]}



//skip512 S14269C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S14269C2  {
  int s14269c2f0;
  int s14269c2f1;
  ::S14269C3_nt s14269c2f2;
};
//SIG(1 S14269C2) U1{ Fi Fi FC2{ Fi Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S14269C1  {
  void *s14269c1f0;
  int s14269c1f1;
  ::S14269C2 s14269c1f2;
};
//SIG(1 S14269C1) C1{ Fp Fi FU2{ Fi Fi FC3{ Fi Fi}}}



static void Test_S14269C1()
{
  {
    init_simple_test("S14269C1");
    S14269C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S14269C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14269C1)");
    check_field_offset(lv, s14269c1f0, 0, "S14269C1.s14269c1f0");
    check_field_offset(lv, s14269c1f1, ABISELECT(8,4), "S14269C1.s14269c1f1");
    check_field_offset(lv, s14269c1f2, ABISELECT(12,8), "S14269C1.s14269c1f2");
  }
}
static Arrange_To_Call_Me vS14269C1(Test_S14269C1, "S14269C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16044C3_nt  {
  int s16044c3f0[3];
  void  mf16044c3(); // _ZN11S16044C3_nt9mf16044c3Ev
};
//SIG(-1 S16044C3_nt) C1{ m Fi[3]}


void  S16044C3_nt ::mf16044c3(){}

//skip512 S16044C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16044C1  {
  ::S3222C13_nt s16044c1f0;
  ::S16044C3_nt s16044c1f1;
  void  mf16044c1(); // _ZN8S16044C19mf16044c1Ev
};
//SIG(1 S16044C1) C1{ m FC2{ m Fi[3]} FC3{ m Fi[3]}}


void  S16044C1 ::mf16044c1(){}

static void Test_S16044C1()
{
  {
    init_simple_test("S16044C1");
    S16044C1 lv;
    check2(sizeof(lv), 24, "sizeof(S16044C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16044C1)");
    check_field_offset(lv, s16044c1f0, 0, "S16044C1.s16044c1f0");
    check_field_offset(lv, s16044c1f1, 12, "S16044C1.s16044c1f1");
  }
}
static Arrange_To_Call_Me vS16044C1(Test_S16044C1, "S16044C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13863C2_nt  {
  char s13863c2f0[16];
  int s13863c2f1;
};
//SIG(-1 S13863C2_nt) C1{ Fc[16] Fi}



//skip512 S13863C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13863C1  {
  __tsi64 s13863c1f0;
  short s13863c1f1;
  char s13863c1f2[2];
  ::S13863C2_nt s13863c1f3;
};
//SIG(1 S13863C1) C1{ FL Fs Fc[2] FC2{ Fc[16] Fi}}



static void Test_S13863C1()
{
  {
    init_simple_test("S13863C1");
    S13863C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13863C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13863C1)");
    check_field_offset(lv, s13863c1f0, 0, "S13863C1.s13863c1f0");
    check_field_offset(lv, s13863c1f1, 8, "S13863C1.s13863c1f1");
    check_field_offset(lv, s13863c1f2, 10, "S13863C1.s13863c1f2");
    check_field_offset(lv, s13863c1f3, 12, "S13863C1.s13863c1f3");
  }
}
static Arrange_To_Call_Me vS13863C1(Test_S13863C1, "S13863C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S12895C2  {
  void *s12895c2f0;
  void *s12895c2f1;
  void *s12895c2f2;
  void *s12895c2f3;
  void *s12895c2f4;
  void *s12895c2f5;
};
//SIG(1 S12895C2) U1{ Fp Fp Fp Fp Fp Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S12895C1  {
  int s12895c1f0;
  ::S12895C2 s12895c1f1;
};
//SIG(1 S12895C1) C1{ Fi FU2{ Fp Fp Fp Fp Fp Fp}}



static void Test_S12895C1()
{
  {
    init_simple_test("S12895C1");
    S12895C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S12895C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12895C1)");
    check_field_offset(lv, s12895c1f0, 0, "S12895C1.s12895c1f0");
    check_field_offset(lv, s12895c1f1, ABISELECT(8,4), "S12895C1.s12895c1f1");
  }
}
static Arrange_To_Call_Me vS12895C1(Test_S12895C1, "S12895C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11860C2  {
  void *s11860c2f0[2];
  int s11860c2f1[2];
  __tsi64 s11860c2f2[24];
};
//SIG(-1 S11860C2) C1{ Fp[2] Fi[2] FL[24]}



static void Test_S11860C2()
{
  {
    init_simple_test("S11860C2");
    S11860C2 lv;
    check2(sizeof(lv), ABISELECT(216,208), "sizeof(S11860C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11860C2)");
    check_field_offset(lv, s11860c2f0, 0, "S11860C2.s11860c2f0");
    check_field_offset(lv, s11860c2f1, ABISELECT(16,8), "S11860C2.s11860c2f1");
    check_field_offset(lv, s11860c2f2, ABISELECT(24,16), "S11860C2.s11860c2f2");
  }
}
static Arrange_To_Call_Me vS11860C2(Test_S11860C2, "S11860C2", ABISELECT(216,208));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11860C1  {
  ::S11860C2 s11860c1f0;
  int s11860c1f1;
};
//SIG(1 S11860C1) C1{ FC2{ Fp[2] Fi[2] FL[24]} Fi}



static void Test_S11860C1()
{
  {
    init_simple_test("S11860C1");
    S11860C1 lv;
    check2(sizeof(lv), ABISELECT(224,212), "sizeof(S11860C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11860C1)");
    check_field_offset(lv, s11860c1f0, 0, "S11860C1.s11860c1f0");
    check_field_offset(lv, s11860c1f1, ABISELECT(216,208), "S11860C1.s11860c1f1");
  }
}
static Arrange_To_Call_Me vS11860C1(Test_S11860C1, "S11860C1", ABISELECT(224,212));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19710C1  : virtual S3222C4_nt {
  virtual  ~S19710C1(); // _ZN8S19710C1D2Ev
  virtual void  v1(); // _ZN8S19710C12v1Ev
  virtual void  v2(); // _ZN8S19710C12v2Ev
  virtual void  v3(); // _ZN8S19710C12v3Ev
  S19710C1(); // tgen
};
//SIG(1 S19710C1) C1{ VBC2{ m Fi[2]} vd v1 v2 v3}


 S19710C1 ::~S19710C1(){ note_dtor("S19710C1", this);}
void  S19710C1 ::v1(){vfunc_called(this, "_ZN8S19710C12v1Ev");}
void  S19710C1 ::v2(){vfunc_called(this, "_ZN8S19710C12v2Ev");}
void  S19710C1 ::v3(){vfunc_called(this, "_ZN8S19710C12v3Ev");}
S19710C1 ::S19710C1(){ note_ctor("S19710C1", this);} // tgen

static void Test_S19710C1()
{
  extern Class_Descriptor cd_S19710C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19710C1, buf);
    S19710C1 *dp, &lv = *(dp=new (buf) S19710C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19710C1)");
    check_base_class_offset(lv, (S3222C4_nt*), ABISELECT(8,4), "S19710C1");
    test_class_info(&lv, &cd_S19710C1);
    dp->~S19710C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19710C1(Test_S19710C1, "S19710C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19710C1C1Ev();
extern void _ZN8S19710C1D2Ev();
Name_Map name_map_S19710C1[] = {
  NSPAIR(_ZN8S19710C1C1Ev),
  NSPAIR(_ZN8S19710C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3222C4_nt;
extern VTBL_ENTRY _ZTI10S3222C4_nt[];
static Base_Class bases_S19710C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3222C4_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, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19710C1[];
extern void _ZN8S19710C1D1Ev();
extern void _ZN8S19710C1D0Ev();
extern void _ZN8S19710C12v1Ev();
extern void _ZN8S19710C12v2Ev();
extern void _ZN8S19710C12v3Ev();
static  VTBL_ENTRY vtc_S19710C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19710C1[0]),
  (VTBL_ENTRY)&_ZN8S19710C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19710C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19710C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19710C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19710C12v3Ev,
};
extern VTBL_ENTRY _ZTV8S19710C1[];
static  VTT_ENTRY vtt_S19710C1[] = {
  {&(_ZTV8S19710C1[3]),  3,8},
};
extern VTBL_ENTRY _ZTI8S19710C1[];
extern  VTBL_ENTRY _ZTV8S19710C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19710C1[];
Class_Descriptor cd_S19710C1 = {  "S19710C1", // class name
  bases_S19710C1, 1,
  &(vtc_S19710C1[0]), // expected_vtbl_contents
  &(vtt_S19710C1[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19710C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19710C1),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19710C1),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  S6776C2  {
  virtual  ~S6776C2(); // _ZN7S6776C2D1Ev
  virtual void  v3(); // _ZN7S6776C22v3Ev
  virtual void  v4(); // _ZN7S6776C22v4Ev
  S6776C2(); // tgen
};
//SIG(-1 S6776C2) C1{ vd v1 v2}


 S6776C2 ::~S6776C2(){ note_dtor("S6776C2", this);}
void  S6776C2 ::v3(){vfunc_called(this, "_ZN7S6776C22v3Ev");}
void  S6776C2 ::v4(){vfunc_called(this, "_ZN7S6776C22v4Ev");}
S6776C2 ::S6776C2(){ note_ctor("S6776C2", this);} // tgen

static void Test_S6776C2()
{
  extern Class_Descriptor cd_S6776C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6776C2, buf);
    S6776C2 *dp, &lv = *(dp=new (buf) S6776C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6776C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6776C2)");
    test_class_info(&lv, &cd_S6776C2);
    dp->~S6776C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6776C2(Test_S6776C2, "S6776C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6776C2C1Ev();
extern void _ZN7S6776C2D1Ev();
Name_Map name_map_S6776C2[] = {
  NSPAIR(_ZN7S6776C2C1Ev),
  NSPAIR(_ZN7S6776C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6776C2[];
extern void _ZN7S6776C2D1Ev();
extern void _ZN7S6776C2D0Ev();
extern void _ZN7S6776C22v3Ev();
extern void _ZN7S6776C22v4Ev();
static  VTBL_ENTRY vtc_S6776C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6776C2[0]),
  (VTBL_ENTRY)&_ZN7S6776C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6776C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6776C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6776C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6776C2[];
extern  VTBL_ENTRY _ZTV7S6776C2[];
Class_Descriptor cd_S6776C2 = {  "S6776C2", // class name
  0,0,//no base classes
  &(vtc_S6776C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6776C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6776C2),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  S6776C1  : S6776C2 {
  void *s6776c1f0;
  virtual  ~S6776C1(); // _ZN7S6776C1D1Ev
  virtual void  v1(); // _ZN7S6776C12v1Ev
  virtual void  v2(); // _ZN7S6776C12v2Ev
  S6776C1(); // tgen
};
//SIG(1 S6776C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fp}


 S6776C1 ::~S6776C1(){ note_dtor("S6776C1", this);}
void  S6776C1 ::v1(){vfunc_called(this, "_ZN7S6776C12v1Ev");}
void  S6776C1 ::v2(){vfunc_called(this, "_ZN7S6776C12v2Ev");}
S6776C1 ::S6776C1(){ note_ctor("S6776C1", this);} // tgen

static void Test_S6776C1()
{
  extern Class_Descriptor cd_S6776C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6776C1, buf);
    S6776C1 *dp, &lv = *(dp=new (buf) S6776C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6776C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6776C1)");
    check_base_class_offset(lv, (S6776C2*), 0, "S6776C1");
    check_field_offset(lv, s6776c1f0, ABISELECT(8,4), "S6776C1.s6776c1f0");
    test_class_info(&lv, &cd_S6776C1);
    dp->~S6776C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6776C1(Test_S6776C1, "S6776C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6776C1C1Ev();
extern void _ZN7S6776C1D1Ev();
Name_Map name_map_S6776C1[] = {
  NSPAIR(_ZN7S6776C1C1Ev),
  NSPAIR(_ZN7S6776C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6776C2;
extern VTBL_ENTRY _ZTI7S6776C2[];
extern  VTBL_ENTRY _ZTV7S6776C2[];
static Base_Class bases_S6776C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6776C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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 _ZTI7S6776C1[];
extern void _ZN7S6776C1D1Ev();
extern void _ZN7S6776C1D0Ev();
extern void _ZN7S6776C22v3Ev();
extern void _ZN7S6776C22v4Ev();
extern void _ZN7S6776C12v1Ev();
extern void _ZN7S6776C12v2Ev();
static  VTBL_ENTRY vtc_S6776C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6776C1[0]),
  (VTBL_ENTRY)&_ZN7S6776C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6776C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6776C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6776C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6776C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6776C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6776C1[];
extern  VTBL_ENTRY _ZTV7S6776C1[];
Class_Descriptor cd_S6776C1 = {  "S6776C1", // class name
  bases_S6776C1, 1,
  &(vtc_S6776C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6776C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6776C1),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  S18790C1  {
  short s18790c1f0;
  int s18790c1f1;
  virtual void  v1(); // _ZN8S18790C12v1Ev
  virtual void  v2(); // _ZN8S18790C12v2Ev
  virtual void  v3(); // _ZN8S18790C12v3Ev
  virtual void  v4(); // _ZN8S18790C12v4Ev
  virtual void  v5(); // _ZN8S18790C12v5Ev
  virtual void  v6(); // _ZN8S18790C12v6Ev
  ~S18790C1(); // tgen
  S18790C1(); // tgen
};
//SIG(1 S18790C1) C1{ v1 v2 v3 v4 v5 v6 Fs Fi}


void  S18790C1 ::v1(){vfunc_called(this, "_ZN8S18790C12v1Ev");}
void  S18790C1 ::v2(){vfunc_called(this, "_ZN8S18790C12v2Ev");}
void  S18790C1 ::v3(){vfunc_called(this, "_ZN8S18790C12v3Ev");}
void  S18790C1 ::v4(){vfunc_called(this, "_ZN8S18790C12v4Ev");}
void  S18790C1 ::v5(){vfunc_called(this, "_ZN8S18790C12v5Ev");}
void  S18790C1 ::v6(){vfunc_called(this, "_ZN8S18790C12v6Ev");}
S18790C1 ::~S18790C1(){ note_dtor("S18790C1", this);} // tgen
S18790C1 ::S18790C1(){ note_ctor("S18790C1", this);} // tgen

static void Test_S18790C1()
{
  extern Class_Descriptor cd_S18790C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18790C1, buf);
    S18790C1 *dp, &lv = *(dp=new (buf) S18790C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18790C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18790C1)");
    check_field_offset(lv, s18790c1f0, ABISELECT(8,4), "S18790C1.s18790c1f0");
    check_field_offset(lv, s18790c1f1, ABISELECT(12,8), "S18790C1.s18790c1f1");
    test_class_info(&lv, &cd_S18790C1);
    dp->~S18790C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18790C1(Test_S18790C1, "S18790C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18790C1C1Ev();
extern void _ZN8S18790C1D1Ev();
Name_Map name_map_S18790C1[] = {
  NSPAIR(_ZN8S18790C1C1Ev),
  NSPAIR(_ZN8S18790C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18790C1[];
extern void _ZN8S18790C12v1Ev();
extern void _ZN8S18790C12v2Ev();
extern void _ZN8S18790C12v3Ev();
extern void _ZN8S18790C12v4Ev();
extern void _ZN8S18790C12v5Ev();
extern void _ZN8S18790C12v6Ev();
static  VTBL_ENTRY vtc_S18790C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18790C1[0]),
  (VTBL_ENTRY)&_ZN8S18790C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18790C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18790C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18790C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18790C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18790C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18790C1[];
extern  VTBL_ENTRY _ZTV8S18790C1[];
Class_Descriptor cd_S18790C1 = {  "S18790C1", // class name
  0,0,//no base classes
  &(vtc_S18790C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18790C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18790C1),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  S14288C1  {
  void *s14288c1f0;
  int s14288c1f1[2];
  __tsi64 s14288c1f2[3];
  int s14288c1f3[2];
  char s14288c1f4;
};
//SIG(1 S14288C1) C1{ Fp Fi[2] FL[3] Fi[2] Fc}



static void Test_S14288C1()
{
  {
    init_simple_test("S14288C1");
    S14288C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S14288C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14288C1)");
    check_field_offset(lv, s14288c1f0, 0, "S14288C1.s14288c1f0");
    check_field_offset(lv, s14288c1f1, ABISELECT(8,4), "S14288C1.s14288c1f1");
    check_field_offset(lv, s14288c1f2, ABISELECT(16,12), "S14288C1.s14288c1f2");
    check_field_offset(lv, s14288c1f3, ABISELECT(40,36), "S14288C1.s14288c1f3");
    check_field_offset(lv, s14288c1f4, ABISELECT(48,44), "S14288C1.s14288c1f4");
  }
}
static Arrange_To_Call_Me vS14288C1(Test_S14288C1, "S14288C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13866C1  {
  long s13866c1f0;
  short s13866c1f1;
  char s13866c1f2[6];
  int s13866c1f3[2];
  void *s13866c1f4;
  int s13866c1f5;
};
//SIG(1 S13866C1) C1{ Fl Fs Fc[6] Fi[2] Fp Fi}



static void Test_S13866C1()
{
  {
    init_simple_test("S13866C1");
    S13866C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S13866C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13866C1)");
    check_field_offset(lv, s13866c1f0, 0, "S13866C1.s13866c1f0");
    check_field_offset(lv, s13866c1f1, ABISELECT(8,4), "S13866C1.s13866c1f1");
    check_field_offset(lv, s13866c1f2, ABISELECT(10,6), "S13866C1.s13866c1f2");
    check_field_offset(lv, s13866c1f3, ABISELECT(16,12), "S13866C1.s13866c1f3");
    check_field_offset(lv, s13866c1f4, ABISELECT(24,20), "S13866C1.s13866c1f4");
    check_field_offset(lv, s13866c1f5, ABISELECT(32,24), "S13866C1.s13866c1f5");
  }
}
static Arrange_To_Call_Me vS13866C1(Test_S13866C1, "S13866C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18744C1  {
  unsigned short s18744c1f0:1;
  __tsi64 s18744c1f1;
  virtual void  v1(); // _ZN8S18744C12v1Ev
  virtual void  v2(); // _ZN8S18744C12v2Ev
  virtual void  v3(); // _ZN8S18744C12v3Ev
  virtual void  v4(); // _ZN8S18744C12v4Ev
  virtual void  v5(); // _ZN8S18744C12v5Ev
  ~S18744C1(); // tgen
  S18744C1(); // tgen
};
//SIG(1 S18744C1) C1{ v1 v2 v3 v4 v5 Fs:1 FL}


void  S18744C1 ::v1(){vfunc_called(this, "_ZN8S18744C12v1Ev");}
void  S18744C1 ::v2(){vfunc_called(this, "_ZN8S18744C12v2Ev");}
void  S18744C1 ::v3(){vfunc_called(this, "_ZN8S18744C12v3Ev");}
void  S18744C1 ::v4(){vfunc_called(this, "_ZN8S18744C12v4Ev");}
void  S18744C1 ::v5(){vfunc_called(this, "_ZN8S18744C12v5Ev");}
S18744C1 ::~S18744C1(){ note_dtor("S18744C1", this);} // tgen
S18744C1 ::S18744C1(){ note_ctor("S18744C1", this);} // tgen

static void Test_S18744C1()
{
  extern Class_Descriptor cd_S18744C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18744C1, buf);
    S18744C1 *dp, &lv = *(dp=new (buf) S18744C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18744C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18744C1)");
    set_bf_and_test(lv, s18744c1f0, ABISELECT(8,4), 0, 1, 1, "S18744C1");
    check_field_offset(lv, s18744c1f1, ABISELECT(16,8), "S18744C1.s18744c1f1");
    test_class_info(&lv, &cd_S18744C1);
    dp->~S18744C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18744C1(Test_S18744C1, "S18744C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18744C1C1Ev();
extern void _ZN8S18744C1D1Ev();
Name_Map name_map_S18744C1[] = {
  NSPAIR(_ZN8S18744C1C1Ev),
  NSPAIR(_ZN8S18744C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18744C1[];
extern void _ZN8S18744C12v1Ev();
extern void _ZN8S18744C12v2Ev();
extern void _ZN8S18744C12v3Ev();
extern void _ZN8S18744C12v4Ev();
extern void _ZN8S18744C12v5Ev();
static  VTBL_ENTRY vtc_S18744C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18744C1[0]),
  (VTBL_ENTRY)&_ZN8S18744C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18744C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18744C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18744C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18744C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18744C1[];
extern  VTBL_ENTRY _ZTV8S18744C1[];
Class_Descriptor cd_S18744C1 = {  "S18744C1", // class name
  0,0,//no base classes
  &(vtc_S18744C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18744C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18744C1),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  S12045C1  {
  ::S3222C4_nt s12045c1f0;
  ::S3222C4_nt s12045c1f1;
  void *s12045c1f2[2];
};
//SIG(1 S12045C1) C1{ FC2{ m Fi[2]} FC2 Fp[2]}



static void Test_S12045C1()
{
  {
    init_simple_test("S12045C1");
    S12045C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S12045C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12045C1)");
    check_field_offset(lv, s12045c1f0, 0, "S12045C1.s12045c1f0");
    check_field_offset(lv, s12045c1f1, 8, "S12045C1.s12045c1f1");
    check_field_offset(lv, s12045c1f2, 16, "S12045C1.s12045c1f2");
  }
}
static Arrange_To_Call_Me vS12045C1(Test_S12045C1, "S12045C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5862C1  : S6118C14_nt {
  ::S3639C14_nt s5862c1f0;
};
//SIG(1 S5862C1) C1{ BC2{ m Fi} FC3{ m Fp[2]}}



static void Test_S5862C1()
{
  extern Class_Descriptor cd_S5862C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S5862C1, buf);
    S5862C1 &lv = *(new (buf) S5862C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S5862C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5862C1)");
    check_base_class_offset(lv, (S6118C14_nt*), 0, "S5862C1");
    check_field_offset(lv, s5862c1f0, ABISELECT(8,4), "S5862C1.s5862c1f0");
    test_class_info(&lv, &cd_S5862C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5862C1(Test_S5862C1, "S5862C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S6118C14_nt;
extern VTBL_ENTRY _ZTI11S6118C14_nt[];
static Base_Class bases_S5862C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6118C14_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_S5862C1 = {  "S5862C1", // class name
  bases_S5862C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,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  S15265C1  {
  char s15265c1f0[64];
  int s15265c1f1;
  __tsi64 s15265c1f2;
  int s15265c1f3[5];
  void  mf15265c1(); // _ZN8S15265C19mf15265c1Ev
};
//SIG(1 S15265C1) C1{ m Fc[64] Fi FL Fi[5]}


void  S15265C1 ::mf15265c1(){}

static void Test_S15265C1()
{
  {
    init_simple_test("S15265C1");
    S15265C1 lv;
    check2(sizeof(lv), ABISELECT(104,96), "sizeof(S15265C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15265C1)");
    check_field_offset(lv, s15265c1f0, 0, "S15265C1.s15265c1f0");
    check_field_offset(lv, s15265c1f1, 64, "S15265C1.s15265c1f1");
    check_field_offset(lv, s15265c1f2, ABISELECT(72,68), "S15265C1.s15265c1f2");
    check_field_offset(lv, s15265c1f3, ABISELECT(80,76), "S15265C1.s15265c1f3");
  }
}
static Arrange_To_Call_Me vS15265C1(Test_S15265C1, "S15265C1", ABISELECT(104,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13766C1  {
  __tsi64 s13766c1f0;
  int s13766c1f1;
  short s13766c1f2[6];
  char s13766c1f3[1024];
};
//SIG(1 S13766C1) C1{ FL Fi Fs[6] Fc[1024]}



static void Test_S13766C1()
{
  {
    init_simple_test("S13766C1");
    S13766C1 lv;
    check2(sizeof(lv), 1048, "sizeof(S13766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13766C1)");
    check_field_offset(lv, s13766c1f0, 0, "S13766C1.s13766c1f0");
    check_field_offset(lv, s13766c1f1, 8, "S13766C1.s13766c1f1");
    check_field_offset(lv, s13766c1f2, 12, "S13766C1.s13766c1f2");
    check_field_offset(lv, s13766c1f3, 24, "S13766C1.s13766c1f3");
  }
}
static Arrange_To_Call_Me vS13766C1(Test_S13766C1, "S13766C1", 1048);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11736C2_nt  {
  long s11736c2f0[2];
};
//SIG(-1 S11736C2_nt) C1{ Fl[2]}



//skip512 S11736C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11736C1  {
  ::S11736C2_nt s11736c1f0;
  ::S13506C2_nt s11736c1f1;
};
//SIG(1 S11736C1) C1{ FC2{ Fl[2]} FC3{ Fl[4]}}



static void Test_S11736C1()
{
  {
    init_simple_test("S11736C1");
    S11736C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S11736C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11736C1)");
    check_field_offset(lv, s11736c1f0, 0, "S11736C1.s11736c1f0");
    check_field_offset(lv, s11736c1f1, ABISELECT(16,8), "S11736C1.s11736c1f1");
  }
}
static Arrange_To_Call_Me vS11736C1(Test_S11736C1, "S11736C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13979C1  {
  __tsi64 s13979c1f0[3];
  int s13979c1f1[4];
  char s13979c1f2[376];
};
//SIG(1 S13979C1) C1{ FL[3] Fi[4] Fc[376]}



static void Test_S13979C1()
{
  {
    init_simple_test("S13979C1");
    S13979C1 lv;
    check2(sizeof(lv), 416, "sizeof(S13979C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13979C1)");
    check_field_offset(lv, s13979c1f0, 0, "S13979C1.s13979c1f0");
    check_field_offset(lv, s13979c1f1, 24, "S13979C1.s13979c1f1");
    check_field_offset(lv, s13979c1f2, 40, "S13979C1.s13979c1f2");
  }
}
static Arrange_To_Call_Me vS13979C1(Test_S13979C1, "S13979C1", 416);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16945C1  {
  int s16945c1f0;
  void *s16945c1f1;
  int s16945c1f2[9];
  void *s16945c1f3[4];
  void  mf16945c1(); // _ZN8S16945C19mf16945c1Ev
};
//SIG(1 S16945C1) C1{ m Fi Fp Fi[9] Fp[4]}


void  S16945C1 ::mf16945c1(){}

static void Test_S16945C1()
{
  {
    init_simple_test("S16945C1");
    S16945C1 lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S16945C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16945C1)");
    check_field_offset(lv, s16945c1f0, 0, "S16945C1.s16945c1f0");
    check_field_offset(lv, s16945c1f1, ABISELECT(8,4), "S16945C1.s16945c1f1");
    check_field_offset(lv, s16945c1f2, ABISELECT(16,8), "S16945C1.s16945c1f2");
    check_field_offset(lv, s16945c1f3, ABISELECT(56,44), "S16945C1.s16945c1f3");
  }
}
static Arrange_To_Call_Me vS16945C1(Test_S16945C1, "S16945C1", ABISELECT(88,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13934C1  {
  __tsi64 s13934c1f0[2];
  int s13934c1f1[3];
  char s13934c1f2[12];
};
//SIG(1 S13934C1) C1{ FL[2] Fi[3] Fc[12]}



static void Test_S13934C1()
{
  {
    init_simple_test("S13934C1");
    S13934C1 lv;
    check2(sizeof(lv), 40, "sizeof(S13934C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13934C1)");
    check_field_offset(lv, s13934c1f0, 0, "S13934C1.s13934c1f0");
    check_field_offset(lv, s13934c1f1, 16, "S13934C1.s13934c1f1");
    check_field_offset(lv, s13934c1f2, 28, "S13934C1.s13934c1f2");
  }
}
static Arrange_To_Call_Me vS13934C1(Test_S13934C1, "S13934C1", 40);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14488C1  {
  void *s14488c1f0[2];
  ::S3222C4_nt s14488c1f1;
};
//SIG(1 S14488C1) C1{ Fp[2] FC2{ m Fi[2]}}



static void Test_S14488C1()
{
  {
    init_simple_test("S14488C1");
    S14488C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S14488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14488C1)");
    check_field_offset(lv, s14488c1f0, 0, "S14488C1.s14488c1f0");
    check_field_offset(lv, s14488c1f1, ABISELECT(16,8), "S14488C1.s14488c1f1");
  }
}
static Arrange_To_Call_Me vS14488C1(Test_S14488C1, "S14488C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13372C1  {
  int s13372c1f0[3];
  void *s13372c1f1;
  int s13372c1f2;
  void *s13372c1f3[3];
};
//SIG(1 S13372C1) C1{ Fi[3] Fp Fi Fp[3]}



static void Test_S13372C1()
{
  {
    init_simple_test("S13372C1");
    S13372C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S13372C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13372C1)");
    check_field_offset(lv, s13372c1f0, 0, "S13372C1.s13372c1f0");
    check_field_offset(lv, s13372c1f1, ABISELECT(16,12), "S13372C1.s13372c1f1");
    check_field_offset(lv, s13372c1f2, ABISELECT(24,16), "S13372C1.s13372c1f2");
    check_field_offset(lv, s13372c1f3, ABISELECT(32,20), "S13372C1.s13372c1f3");
  }
}
static Arrange_To_Call_Me vS13372C1(Test_S13372C1, "S13372C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18388C1  {
  void *s18388c1f0[7];
  char s18388c1f1[11];
  void *s18388c1f2;
  void  mf18388c1(); // _ZN8S18388C19mf18388c1Ev
};
//SIG(1 S18388C1) C1{ m Fp[7] Fc[11] Fp}


void  S18388C1 ::mf18388c1(){}

static void Test_S18388C1()
{
  {
    init_simple_test("S18388C1");
    S18388C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18388C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18388C1)");
    check_field_offset(lv, s18388c1f0, 0, "S18388C1.s18388c1f0");
    check_field_offset(lv, s18388c1f1, ABISELECT(56,28), "S18388C1.s18388c1f1");
    check_field_offset(lv, s18388c1f2, ABISELECT(72,40), "S18388C1.s18388c1f2");
  }
}
static Arrange_To_Call_Me vS18388C1(Test_S18388C1, "S18388C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13482C1  {
  int s13482c1f0[4];
  long s13482c1f1[4];
  int s13482c1f2[3];
};
//SIG(1 S13482C1) C1{ Fi[4] Fl[4] Fi[3]}



static void Test_S13482C1()
{
  {
    init_simple_test("S13482C1");
    S13482C1 lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S13482C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13482C1)");
    check_field_offset(lv, s13482c1f0, 0, "S13482C1.s13482c1f0");
    check_field_offset(lv, s13482c1f1, 16, "S13482C1.s13482c1f1");
    check_field_offset(lv, s13482c1f2, ABISELECT(48,32), "S13482C1.s13482c1f2");
  }
}
static Arrange_To_Call_Me vS13482C1(Test_S13482C1, "S13482C1", ABISELECT(64,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18315C1  {
  void *s18315c1f0[3];
  int s18315c1f1;
  void *s18315c1f2;
  int s18315c1f3;
  void  mf18315c1(); // _ZN8S18315C19mf18315c1Ev
};
//SIG(1 S18315C1) C1{ m Fp[3] Fi Fp Fi}


void  S18315C1 ::mf18315c1(){}

static void Test_S18315C1()
{
  {
    init_simple_test("S18315C1");
    S18315C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S18315C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18315C1)");
    check_field_offset(lv, s18315c1f0, 0, "S18315C1.s18315c1f0");
    check_field_offset(lv, s18315c1f1, ABISELECT(24,12), "S18315C1.s18315c1f1");
    check_field_offset(lv, s18315c1f2, ABISELECT(32,16), "S18315C1.s18315c1f2");
    check_field_offset(lv, s18315c1f3, ABISELECT(40,20), "S18315C1.s18315c1f3");
  }
}
static Arrange_To_Call_Me vS18315C1(Test_S18315C1, "S18315C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18355C1  {
  void *s18355c1f0[4];
  int s18355c1f1;
  void *s18355c1f2[6];
  void  mf18355c1(); // _ZN8S18355C19mf18355c1Ev
};
//SIG(1 S18355C1) C1{ m Fp[4] Fi Fp[6]}


void  S18355C1 ::mf18355c1(){}

static void Test_S18355C1()
{
  {
    init_simple_test("S18355C1");
    S18355C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S18355C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18355C1)");
    check_field_offset(lv, s18355c1f0, 0, "S18355C1.s18355c1f0");
    check_field_offset(lv, s18355c1f1, ABISELECT(32,16), "S18355C1.s18355c1f1");
    check_field_offset(lv, s18355c1f2, ABISELECT(40,20), "S18355C1.s18355c1f2");
  }
}
static Arrange_To_Call_Me vS18355C1(Test_S18355C1, "S18355C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18607C1  {
  char s18607c1f0:8;
  long double s18607c1f1;
  virtual void  v1(); // _ZN8S18607C12v1Ev
  virtual void  v2(); // _ZN8S18607C12v2Ev
  virtual void  v3(); // _ZN8S18607C12v3Ev
  ~S18607C1(); // tgen
  S18607C1(); // tgen
};
//SIG(1 S18607C1) C1{ v1 v2 v3 Fc:8 FD}


void  S18607C1 ::v1(){vfunc_called(this, "_ZN8S18607C12v1Ev");}
void  S18607C1 ::v2(){vfunc_called(this, "_ZN8S18607C12v2Ev");}
void  S18607C1 ::v3(){vfunc_called(this, "_ZN8S18607C12v3Ev");}
S18607C1 ::~S18607C1(){ note_dtor("S18607C1", this);} // tgen
S18607C1 ::S18607C1(){ note_ctor("S18607C1", this);} // tgen

static void Test_S18607C1()
{
  extern Class_Descriptor cd_S18607C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,6)];
    init_test(&cd_S18607C1, buf);
    S18607C1 *dp, &lv = *(dp=new (buf) S18607C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18607C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18607C1)");
    set_bf_and_test(lv, s18607c1f0, ABISELECT(8,4), 0, 8, 1, "S18607C1");
    set_bf_and_test(lv, s18607c1f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S18607C1");
    check_field_offset(lv, s18607c1f1, ABISELECT(16,8), "S18607C1.s18607c1f1");
    test_class_info(&lv, &cd_S18607C1);
    dp->~S18607C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18607C1(Test_S18607C1, "S18607C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S18607C1C1Ev();
extern void _ZN8S18607C1D1Ev();
Name_Map name_map_S18607C1[] = {
  NSPAIR(_ZN8S18607C1C1Ev),
  NSPAIR(_ZN8S18607C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18607C1[];
extern void _ZN8S18607C12v1Ev();
extern void _ZN8S18607C12v2Ev();
extern void _ZN8S18607C12v3Ev();
static  VTBL_ENTRY vtc_S18607C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18607C1[0]),
  (VTBL_ENTRY)&_ZN8S18607C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18607C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18607C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18607C1[];
extern  VTBL_ENTRY _ZTV8S18607C1[];
Class_Descriptor cd_S18607C1 = {  "S18607C1", // class name
  0,0,//no base classes
  &(vtc_S18607C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S18607C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18607C1),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  S2768C2  : S2014C41_nt {
  char s2768c2f0;
};
//SIG(-1 S2768C2) C1{ BC2{ m FL} Fc}



static void Test_S2768C2()
{
  extern Class_Descriptor cd_S2768C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2768C2, buf);
    S2768C2 &lv = *(new (buf) S2768C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2768C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2768C2)");
    check_base_class_offset(lv, (S2014C41_nt*), 0, "S2768C2");
    check_field_offset(lv, s2768c2f0, 8, "S2768C2.s2768c2f0");
    test_class_info(&lv, &cd_S2768C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2768C2(Test_S2768C2, "S2768C2", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
static Base_Class bases_S2768C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S2768C2 = {  "S2768C2", // class name
  bases_S2768C2, 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  S2768C1  : S2768C2 {
};
//SIG(1 S2768C1) C1{ BC2{ BC3{ m FL} Fc}}



static void Test_S2768C1()
{
  extern Class_Descriptor cd_S2768C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2768C1, buf);
    S2768C1 &lv = *(new (buf) S2768C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2768C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2768C1)");
    check_base_class_offset(lv, (S2014C41_nt*)(S2768C2*), 0, "S2768C1");
    check_base_class_offset(lv, (S2768C2*), 0, "S2768C1");
    test_class_info(&lv, &cd_S2768C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2768C1(Test_S2768C1, "S2768C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2014C41_nt;
extern Class_Descriptor cd_S2768C2;
static Base_Class bases_S2768C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2014C41_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_S2768C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2768C1 = {  "S2768C1", // class name
  bases_S2768C1, 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  S14646C1  {
  void *s14646c1f0[3];
  long s14646c1f1[2];
  int s14646c1f2;
};
//SIG(1 S14646C1) C1{ Fp[3] Fl[2] Fi}



static void Test_S14646C1()
{
  {
    init_simple_test("S14646C1");
    S14646C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S14646C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14646C1)");
    check_field_offset(lv, s14646c1f0, 0, "S14646C1.s14646c1f0");
    check_field_offset(lv, s14646c1f1, ABISELECT(24,12), "S14646C1.s14646c1f1");
    check_field_offset(lv, s14646c1f2, ABISELECT(40,20), "S14646C1.s14646c1f2");
  }
}
static Arrange_To_Call_Me vS14646C1(Test_S14646C1, "S14646C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12651C1  {
  int s12651c1f0;
  void *s12651c1f1;
  char s12651c1f2;
  void *s12651c1f3;
  char s12651c1f4;
};
//SIG(1 S12651C1) C1{ Fi Fp Fc Fp Fc}



static void Test_S12651C1()
{
  {
    init_simple_test("S12651C1");
    S12651C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S12651C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12651C1)");
    check_field_offset(lv, s12651c1f0, 0, "S12651C1.s12651c1f0");
    check_field_offset(lv, s12651c1f1, ABISELECT(8,4), "S12651C1.s12651c1f1");
    check_field_offset(lv, s12651c1f2, ABISELECT(16,8), "S12651C1.s12651c1f2");
    check_field_offset(lv, s12651c1f3, ABISELECT(24,12), "S12651C1.s12651c1f3");
    check_field_offset(lv, s12651c1f4, ABISELECT(32,16), "S12651C1.s12651c1f4");
  }
}
static Arrange_To_Call_Me vS12651C1(Test_S12651C1, "S12651C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13375C1  {
  int s13375c1f0[3];
  void *s13375c1f1;
  int s13375c1f2[2];
};
//SIG(1 S13375C1) C1{ Fi[3] Fp Fi[2]}



static void Test_S13375C1()
{
  {
    init_simple_test("S13375C1");
    S13375C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13375C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13375C1)");
    check_field_offset(lv, s13375c1f0, 0, "S13375C1.s13375c1f0");
    check_field_offset(lv, s13375c1f1, ABISELECT(16,12), "S13375C1.s13375c1f1");
    check_field_offset(lv, s13375c1f2, ABISELECT(24,16), "S13375C1.s13375c1f2");
  }
}
static Arrange_To_Call_Me vS13375C1(Test_S13375C1, "S13375C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15159C1  {
  char s15159c1f0[1024];
  int s15159c1f1;
  void  mf15159c1(); // _ZN8S15159C19mf15159c1Ev
};
//SIG(1 S15159C1) C1{ m Fc[1024] Fi}


void  S15159C1 ::mf15159c1(){}

static void Test_S15159C1()
{
  {
    init_simple_test("S15159C1");
    S15159C1 lv;
    check2(sizeof(lv), 1028, "sizeof(S15159C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15159C1)");
    check_field_offset(lv, s15159c1f0, 0, "S15159C1.s15159c1f0");
    check_field_offset(lv, s15159c1f1, 1024, "S15159C1.s15159c1f1");
  }
}
static Arrange_To_Call_Me vS15159C1(Test_S15159C1, "S15159C1", 1028);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18564C1  {
  ::S19762C18_nt s18564c1f0;
  char s18564c1f1;
  virtual void  v1(); // _ZN8S18564C12v1Ev
  virtual void  v2(); // _ZN8S18564C12v2Ev
  ~S18564C1(); // tgen
  S18564C1(); // tgen
};
//SIG(1 S18564C1) C1{ v1 v2 FC2{} Fc}


void  S18564C1 ::v1(){vfunc_called(this, "_ZN8S18564C12v1Ev");}
void  S18564C1 ::v2(){vfunc_called(this, "_ZN8S18564C12v2Ev");}
S18564C1 ::~S18564C1(){ note_dtor("S18564C1", this);} // tgen
S18564C1 ::S18564C1(){ note_ctor("S18564C1", this);} // tgen

static void Test_S18564C1()
{
  extern Class_Descriptor cd_S18564C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S18564C1, buf);
    S18564C1 *dp, &lv = *(dp=new (buf) S18564C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18564C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18564C1)");
    check_field_offset(lv, s18564c1f0, ABISELECT(8,4), "S18564C1.s18564c1f0");
    check_field_offset(lv, s18564c1f1, ABISELECT(9,5), "S18564C1.s18564c1f1");
    test_class_info(&lv, &cd_S18564C1);
    dp->~S18564C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18564C1(Test_S18564C1, "S18564C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S18564C1C1Ev();
extern void _ZN8S18564C1D1Ev();
Name_Map name_map_S18564C1[] = {
  NSPAIR(_ZN8S18564C1C1Ev),
  NSPAIR(_ZN8S18564C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18564C1[];
extern void _ZN8S18564C12v1Ev();
extern void _ZN8S18564C12v2Ev();
static  VTBL_ENTRY vtc_S18564C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18564C1[0]),
  (VTBL_ENTRY)&_ZN8S18564C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18564C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18564C1[];
extern  VTBL_ENTRY _ZTV8S18564C1[];
Class_Descriptor cd_S18564C1 = {  "S18564C1", // class name
  0,0,//no base classes
  &(vtc_S18564C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S18564C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18564C1),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  S10783C1  {
  char s10783c1f0[256];
  int s10783c1f1[2];
};
//SIG(1 S10783C1) C1{ Fc[256] Fi[2]}



static void Test_S10783C1()
{
  {
    init_simple_test("S10783C1");
    S10783C1 lv;
    check2(sizeof(lv), 264, "sizeof(S10783C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10783C1)");
    check_field_offset(lv, s10783c1f0, 0, "S10783C1.s10783c1f0");
    check_field_offset(lv, s10783c1f1, 256, "S10783C1.s10783c1f1");
  }
}
static Arrange_To_Call_Me vS10783C1(Test_S10783C1, "S10783C1", 264);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10713C1  {
  char s10713c1f0[20];
  int s10713c1f1[2];
};
//SIG(1 S10713C1) C1{ Fc[20] Fi[2]}



static void Test_S10713C1()
{
  {
    init_simple_test("S10713C1");
    S10713C1 lv;
    check2(sizeof(lv), 28, "sizeof(S10713C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10713C1)");
    check_field_offset(lv, s10713c1f0, 0, "S10713C1.s10713c1f0");
    check_field_offset(lv, s10713c1f1, 20, "S10713C1.s10713c1f1");
  }
}
static Arrange_To_Call_Me vS10713C1(Test_S10713C1, "S10713C1", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13815C1  {
  long s13815c1f0;
  __tsi64 s13815c1f1;
  long s13815c1f2[2];
};
//SIG(1 S13815C1) C1{ Fl FL Fl[2]}



static void Test_S13815C1()
{
  {
    init_simple_test("S13815C1");
    S13815C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S13815C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13815C1)");
    check_field_offset(lv, s13815c1f0, 0, "S13815C1.s13815c1f0");
    check_field_offset(lv, s13815c1f1, ABISELECT(8,4), "S13815C1.s13815c1f1");
    check_field_offset(lv, s13815c1f2, ABISELECT(16,12), "S13815C1.s13815c1f2");
  }
}
static Arrange_To_Call_Me vS13815C1(Test_S13815C1, "S13815C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12715C1  {
  int s12715c1f0;
  void *s12715c1f1;
  int s12715c1f2[3];
};
//SIG(1 S12715C1) C1{ Fi Fp Fi[3]}



static void Test_S12715C1()
{
  {
    init_simple_test("S12715C1");
    S12715C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S12715C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12715C1)");
    check_field_offset(lv, s12715c1f0, 0, "S12715C1.s12715c1f0");
    check_field_offset(lv, s12715c1f1, ABISELECT(8,4), "S12715C1.s12715c1f1");
    check_field_offset(lv, s12715c1f2, ABISELECT(16,8), "S12715C1.s12715c1f2");
  }
}
static Arrange_To_Call_Me vS12715C1(Test_S12715C1, "S12715C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14920C1  {
  short s14920c1f0[3];
  char s14920c1f1[2];
};
//SIG(1 S14920C1) C1{ Fs[3] Fc[2]}



static void Test_S14920C1()
{
  {
    init_simple_test("S14920C1");
    S14920C1 lv;
    check2(sizeof(lv), 8, "sizeof(S14920C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14920C1)");
    check_field_offset(lv, s14920c1f0, 0, "S14920C1.s14920c1f0");
    check_field_offset(lv, s14920c1f1, 6, "S14920C1.s14920c1f1");
  }
}
static Arrange_To_Call_Me vS14920C1(Test_S14920C1, "S14920C1", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17158C1  {
  int s17158c1f0[2];
  short s17158c1f1;
  void  mf17158c1(); // _ZN8S17158C19mf17158c1Ev
};
//SIG(1 S17158C1) C1{ m Fi[2] Fs}


void  S17158C1 ::mf17158c1(){}

static void Test_S17158C1()
{
  {
    init_simple_test("S17158C1");
    S17158C1 lv;
    check2(sizeof(lv), 12, "sizeof(S17158C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17158C1)");
    check_field_offset(lv, s17158c1f0, 0, "S17158C1.s17158c1f0");
    check_field_offset(lv, s17158c1f1, 8, "S17158C1.s17158c1f1");
  }
}
static Arrange_To_Call_Me vS17158C1(Test_S17158C1, "S17158C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11027C1  {
  char s11027c1f0[85];
  int s11027c1f1;
};
//SIG(1 S11027C1) C1{ Fc[85] Fi}



static void Test_S11027C1()
{
  {
    init_simple_test("S11027C1");
    S11027C1 lv;
    check2(sizeof(lv), 92, "sizeof(S11027C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11027C1)");
    check_field_offset(lv, s11027c1f0, 0, "S11027C1.s11027c1f0");
    check_field_offset(lv, s11027c1f1, 88, "S11027C1.s11027c1f1");
  }
}
static Arrange_To_Call_Me vS11027C1(Test_S11027C1, "S11027C1", 92);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14816C1  {
  short s14816c1f0;
  int s14816c1f1;
  void *s14816c1f2;
};
//SIG(1 S14816C1) C1{ Fs Fi Fp}



static void Test_S14816C1()
{
  {
    init_simple_test("S14816C1");
    S14816C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S14816C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14816C1)");
    check_field_offset(lv, s14816c1f0, 0, "S14816C1.s14816c1f0");
    check_field_offset(lv, s14816c1f1, 4, "S14816C1.s14816c1f1");
    check_field_offset(lv, s14816c1f2, 8, "S14816C1.s14816c1f2");
  }
}
static Arrange_To_Call_Me vS14816C1(Test_S14816C1, "S14816C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14391C1  {
  void *s14391c1f0;
  __tsi64 s14391c1f1;
  void *s14391c1f2;
};
//SIG(1 S14391C1) C1{ Fp FL Fp}



static void Test_S14391C1()
{
  {
    init_simple_test("S14391C1");
    S14391C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S14391C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14391C1)");
    check_field_offset(lv, s14391c1f0, 0, "S14391C1.s14391c1f0");
    check_field_offset(lv, s14391c1f1, ABISELECT(8,4), "S14391C1.s14391c1f1");
    check_field_offset(lv, s14391c1f2, ABISELECT(16,12), "S14391C1.s14391c1f2");
  }
}
static Arrange_To_Call_Me vS14391C1(Test_S14391C1, "S14391C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10715C1  {
  char s10715c1f0[200];
};
//SIG(1 S10715C1) C1{ Fc[200]}



static void Test_S10715C1()
{
  {
    init_simple_test("S10715C1");
    S10715C1 lv;
    check2(sizeof(lv), 200, "sizeof(S10715C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10715C1)");
    check_field_offset(lv, s10715c1f0, 0, "S10715C1.s10715c1f0");
  }
}
static Arrange_To_Call_Me vS10715C1(Test_S10715C1, "S10715C1", 200);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12943C1  {
  int s12943c1f0;
};
//SIG(1 S12943C1) C1{ Fi}



static void Test_S12943C1()
{
  {
    init_simple_test("S12943C1");
    S12943C1 lv;
    check2(sizeof(lv), 4, "sizeof(S12943C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12943C1)");
    check_field_offset(lv, s12943c1f0, 0, "S12943C1.s12943c1f0");
  }
}
static Arrange_To_Call_Me vS12943C1(Test_S12943C1, "S12943C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

